Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								652064e3b8 
								
							 
						 
						
							
							
								
								Fix a major pessimization in the instcombiner.  If an allocation instruction  
							
							 
							
							... 
							
							
							
							is only used by a cast, and the casted type is the same size as the original
allocation, it would eliminate the cast by folding it into the allocation.
Unfortunately, it was placing the new allocation instruction right before
the cast, which could pull (for example) alloca instructions into the body
of a function.  This turns statically allocatable allocas into expensive
dynamically allocated allocas, which is bad bad bad.
This fixes the problem by placing the new allocation instruction at the same
place the old one was, duh. :)
llvm-svn: 13289 
							
						 
						
							2004-04-30 04:37:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2d3a7a6ff0 
								
							 
						 
						
							
							
								
								Changes to fix up the inst_iterator to pass to boost iterator checks.  This  
							
							 
							
							... 
							
							
							
							patch was graciously contributed by Vladimir Prus.
llvm-svn: 13185 
							
						 
						
							2004-04-27 15:13:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e20c334e65 
								
							 
						 
						
							
							
								
								Instcombine X/-1 --> 0-X  
							
							 
							
							... 
							
							
							
							llvm-svn: 13172 
							
						 
						
							2004-04-26 14:01:59 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1e9ac1a45e 
								
							 
						 
						
							
							
								
								Fix a HUGE pessimization on X86.  The indvars pass was taking this  
							
							 
							
							... 
							
							
							
							(familiar) function:
int _strlen(const char *str) {
    int len = 0;
    while (*str++) len++;
    return len;
}
And transforming it to use a ulong induction variable, because the type of
the pointer index was left as a constant long.  This is obviously very bad.
The fix is to shrink long constants in getelementptr instructions to intptr_t,
making the indvars pass insert a uint induction variable, which is much more
efficient.
Here's the before code for this function:
int %_strlen(sbyte* %str) {
entry:
        %tmp.13 = load sbyte* %str              ; <sbyte> [#uses=1]
        %tmp.24 = seteq sbyte %tmp.13, 0                ; <bool> [#uses=1]
        br bool %tmp.24, label %loopexit, label %no_exit
no_exit:                ; preds = %entry, %no_exit
***     %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ]            ; <uint> [#uses=2]
***     %indvar = phi ulong [ %indvar.next, %no_exit ], [ 0, %entry ]           ; <ulong> [#uses=2]
        %indvar1 = cast ulong %indvar to uint           ; <uint> [#uses=1]
        %inc.02.sum = add uint %indvar1, 1              ; <uint> [#uses=1]
        %inc.0.0 = getelementptr sbyte* %str, uint %inc.02.sum          ; <sbyte*> [#uses=1]
        %tmp.1 = load sbyte* %inc.0.0           ; <sbyte> [#uses=1]
        %tmp.2 = seteq sbyte %tmp.1, 0          ; <bool> [#uses=1]
        %indvar.next = add ulong %indvar, 1             ; <ulong> [#uses=1]
        %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
        br bool %tmp.2, label %loopexit.loopexit, label %no_exit
loopexit.loopexit:              ; preds = %no_exit
        %indvar = cast uint %indvar to int              ; <int> [#uses=1]
        %inc.1 = add int %indvar, 1             ; <int> [#uses=1]
        ret int %inc.1
loopexit:               ; preds = %entry
        ret int 0
}
Here's the after code:
int %_strlen(sbyte* %str) {
entry:
        %inc.02 = getelementptr sbyte* %str, uint 1             ; <sbyte*> [#uses=1]
        %tmp.13 = load sbyte* %str              ; <sbyte> [#uses=1]
        %tmp.24 = seteq sbyte %tmp.13, 0                ; <bool> [#uses=1]
        br bool %tmp.24, label %loopexit, label %no_exit
no_exit:                ; preds = %entry, %no_exit
***     %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ]            ; <uint> [#uses=3]
        %indvar = cast uint %indvar to int              ; <int> [#uses=1]
        %inc.0.0 = getelementptr sbyte* %inc.02, uint %indvar           ; <sbyte*> [#uses=1]
        %inc.1 = add int %indvar, 1             ; <int> [#uses=1]
        %tmp.1 = load sbyte* %inc.0.0           ; <sbyte> [#uses=1]
        %tmp.2 = seteq sbyte %tmp.1, 0          ; <bool> [#uses=1]
        %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
        br bool %tmp.2, label %loopexit, label %no_exit
loopexit:               ; preds = %entry, %no_exit
        %len.0.1 = phi int [ 0, %entry ], [ %inc.1, %no_exit ]          ; <int> [#uses=1]
        ret int %len.0.1
}
llvm-svn: 13016 
							
						 
						
							2004-04-17 18:16:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								284d3b0311 
								
							 
						 
						
							
							
								
								Fix some really nasty dominance bugs that were exposed by my patch to  
							
							 
							
							... 
							
							
							
							make the verifier more strict.  This fixes building zlib
llvm-svn: 13002 
							
						 
						
							2004-04-16 18:08:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6679e46b59 
								
							 
						 
						
							
							
								
								ADd a trivial instcombine: load null -> null  
							
							 
							
							... 
							
							
							
							llvm-svn: 12940 
							
						 
						
							2004-04-14 03:28:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								24cf0200c7 
								
							 
						 
						
							
							
								
								Fix a bug in my select transformation  
							
							 
							
							... 
							
							
							
							llvm-svn: 12826 
							
						 
						
							2004-04-11 01:39:19 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								623fba1107 
								
							 
						 
						
							
							
								
								Implement InstCombine/select.ll:test13*  
							
							 
							
							... 
							
							
							
							llvm-svn: 12821 
							
						 
						
							2004-04-10 22:21:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cf4a996cba 
								
							 
						 
						
							
							
								
								Implement InstCombine/add.ll:test20  
							
							 
							
							... 
							
							
							
							Canonicalize add of sign bit constant into a xor
llvm-svn: 12819 
							
						 
						
							2004-04-10 22:01:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f9d9665138 
								
							 
						 
						
							
							
								
								Fix spurious warning in release mode  
							
							 
							
							... 
							
							
							
							llvm-svn: 12816 
							
						 
						
							2004-04-10 19:15:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								56e4d3d8ad 
								
							 
						 
						
							
							
								
								Implement select.ll:test12*  
							
							 
							
							... 
							
							
							
							This transforms code like this:
   %C = or %A, %B
   %D = select %cond, %C, %A
into:
   %C = select %cond, %B, 0
   %D = or %A, %C
Since B is often a constant, the select can often be eliminated.  In any case,
this reduces the usage count of A, allowing subsequent optimizations to happen.
This xform applies when the operator is any of:
  add, sub, mul, or, xor, and, shl, shr
llvm-svn: 12800 
							
						 
						
							2004-04-09 23:46:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								183b336a54 
								
							 
						 
						
							
							
								
								Fold binary operators with a constant operand into select instructions  
							
							 
							
							... 
							
							
							
							that have a constant operand.  This implements
add.ll:test19, shift.ll:test15*, and others that are not tested
llvm-svn: 12794 
							
						 
						
							2004-04-09 19:05:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cf7baf3519 
								
							 
						 
						
							
							
								
								Implement select.ll:test11  
							
							 
							
							... 
							
							
							
							llvm-svn: 12793 
							
						 
						
							2004-04-09 18:19:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e228ee5870 
								
							 
						 
						
							
							
								
								Implement InstCombine/cast-propagate.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 12784 
							
						 
						
							2004-04-08 20:39:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1c631e813d 
								
							 
						 
						
							
							
								
								Implement InstCombine/select.ll:test[7-10]  
							
							 
							
							... 
							
							
							
							llvm-svn: 12769 
							
						 
						
							2004-04-08 04:43:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2b2412d0c8 
								
							 
						 
						
							
							
								
								Implement test/Regression/Transforms/InstCombine/getelementptr_index.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 12762 
							
						 
						
							2004-04-07 18:38:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4d1fcf1dcd 
								
							 
						 
						
							
							
								
								Fix a bug in yesterdays checkins which broke siod.  siod is a great testcase!  :)  
							
							 
							
							... 
							
							
							
							llvm-svn: 12659 
							
						 
						
							2004-04-05 16:02:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8953b90aaa 
								
							 
						 
						
							
							
								
								Fix InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 12658 
							
						 
						
							2004-04-05 02:10:19 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								69193f93b6 
								
							 
						 
						
							
							
								
								Support getelementptr instructions which use uint's to index into structure  
							
							 
							
							... 
							
							
							
							types and can have arbitrary 32- and 64-bit integer types indexing into
sequential types.
llvm-svn: 12653 
							
						 
						
							2004-04-05 01:30:19 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								533bc49775 
								
							 
						 
						
							
							
								
								Implement select.ll:test[3-6]  
							
							 
							
							... 
							
							
							
							llvm-svn: 12544 
							
						 
						
							2004-03-30 19:37:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								56b5051428 
								
							 
						 
						
							
							
								
								X % -1 == X % 1 == 0  
							
							 
							
							... 
							
							
							
							llvm-svn: 12520 
							
						 
						
							2004-03-26 16:11:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								57c67b06e9 
								
							 
						 
						
							
							
								
								Two changes:  
							
							 
							
							... 
							
							
							
							#1  is to unconditionally strip constantpointerrefs out of
instruction operands where they are absolutely pointless and inhibit
optimization.  GRRR!
#2  is to implement InstCombine/getelementptr_const.ll
llvm-svn: 12519 
							
						 
						
							2004-03-25 22:59:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								abb77c9959 
								
							 
						 
						
							
							
								
								Teach the optimizer to delete zero sized alloca's (but not mallocs!)  
							
							 
							
							... 
							
							
							
							llvm-svn: 12507 
							
						 
						
							2004-03-19 06:08:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7d2a539735 
								
							 
						 
						
							
							
								
								Add some debugging output  
							
							 
							
							... 
							
							
							
							Fix InstCombine/2004-03-13-InstCombineInfLoop.ll which caused an infinite
loop compiling (I think) povray.
llvm-svn: 12365 
							
						 
						
							2004-03-13 23:54:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								022167f13b 
								
							 
						 
						
							
							
								
								Implement sub.ll:test14  
							
							 
							
							... 
							
							
							
							llvm-svn: 12355 
							
						 
						
							2004-03-13 00:11:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								92295c5031 
								
							 
						 
						
							
							
								
								Implement InstCombine/sub.ll:test12 & test13  
							
							 
							
							... 
							
							
							
							llvm-svn: 12353 
							
						 
						
							2004-03-12 23:53:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b909e8b0d4 
								
							 
						 
						
							
							
								
								Add trivial optimizations for select instructions  
							
							 
							
							... 
							
							
							
							llvm-svn: 12317 
							
						 
						
							2004-03-12 05:52:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								51ea127bf3 
								
							 
						 
						
							
							
								
								Rename AddUsesToWorkList -> AddUsersToWorkList, as that is what it does.  
							
							 
							
							... 
							
							
							
							Create a new AddUsesToWorkList method
optimize memmove/set/cpy of zero bytes to a noop.
llvm-svn: 11941 
							
						 
						
							2004-02-28 05:22:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f3a366062c 
								
							 
						 
						
							
							
								
								Turn 'free null' into nothing  
							
							 
							
							... 
							
							
							
							llvm-svn: 11940 
							
						 
						
							2004-02-28 04:57:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4f7accab96 
								
							 
						 
						
							
							
								
								Implement test/Regression/Transforms/InstCombine/canonicalize_branch.ll  
							
							 
							
							... 
							
							
							
							This is a really minor thing, but might help out the 'switch statement induction'
code in simplifycfg.
llvm-svn: 11900 
							
						 
						
							2004-02-27 06:27:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8ee0593f0d 
								
							 
						 
						
							
							
								
								Fix a faulty optimization on FP values  
							
							 
							
							... 
							
							
							
							llvm-svn: 11801 
							
						 
						
							2004-02-24 18:10:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ae739aefd7 
								
							 
						 
						
							
							
								
								Generate much more efficient code in programs like pifft  
							
							 
							
							... 
							
							
							
							llvm-svn: 11775 
							
						 
						
							2004-02-23 21:46:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c40b9d7d51 
								
							 
						 
						
							
							
								
								Fix a small typeo in my checkin last night that broke vortex and other programs :(  
							
							 
							
							... 
							
							
							
							llvm-svn: 11774 
							
						 
						
							2004-02-23 21:46:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f5ce254692 
								
							 
						 
						
							
							
								
								Fix InstCombine/2004-02-23-ShiftShiftOverflow.ll  
							
							 
							
							... 
							
							
							
							Also, turn 'shr int %X, 1234' into 'shr int %X, 31'
llvm-svn: 11768 
							
						 
						
							2004-02-23 20:30:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2b55ea38bc 
								
							 
						 
						
							
							
								
								Implement cast.ll::test14/15  
							
							 
							
							... 
							
							
							
							llvm-svn: 11742 
							
						 
						
							2004-02-23 07:16:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e79e854c5c 
								
							 
						 
						
							
							
								
								Refactor some code.  In the mul - setcc folding case, we really care about  
							
							 
							
							... 
							
							
							
							whether this is the sign bit or not, so check unsigned comparisons as well.
llvm-svn: 11740 
							
						 
						
							2004-02-23 06:38:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c8a10c4b6a 
								
							 
						 
						
							
							
								
								Implement mul.ll:test11  
							
							 
							
							... 
							
							
							
							llvm-svn: 11737 
							
						 
						
							2004-02-23 06:00:11 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								59611149ee 
								
							 
						 
						
							
							
								
								Implement "strength reduction" of   X <= C and X >= C  
							
							 
							
							... 
							
							
							
							llvm-svn: 11735 
							
						 
						
							2004-02-23 05:47:48 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2635b52d4e 
								
							 
						 
						
							
							
								
								Implement InstCombine/mul.ll:test10, which is a case that occurs when dealing  
							
							 
							
							... 
							
							
							
							with "predication"
llvm-svn: 11734 
							
						 
						
							2004-02-23 05:39:21 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8d0bacbb9e 
								
							 
						 
						
							
							
								
								Implement Transforms/InstCombine/cast.ll:test13, a case which occurs in a  
							
							 
							
							... 
							
							
							
							hot 164.gzip loop.
llvm-svn: 11702 
							
						 
						
							2004-02-22 05:25:17 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4db2d22bea 
								
							 
						 
						
							
							
								
								Fold PHI nodes of constants which are only used by a single cast.  This implements  
							
							 
							
							... 
							
							
							
							phi.ll:test4
llvm-svn: 11494 
							
						 
						
							2004-02-16 05:07:08 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b36d908f7b 
								
							 
						 
						
							
							
								
								Teach LLVM to unravel the "swap idiom".  This implements:  
							
							 
							
							... 
							
							
							
							Regression/Transforms/InstCombine/xor.ll:test20
llvm-svn: 11492 
							
						 
						
							2004-02-16 03:54:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c207635fd5 
								
							 
						 
						
							
							
								
								Implement Transforms/InstCombine/xor.ll:test19  
							
							 
							
							... 
							
							
							
							llvm-svn: 11490 
							
						 
						
							2004-02-16 01:20:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								76b2ff4ded 
								
							 
						 
						
							
							
								
								Adjustments to support the new ConstantAggregateZero class  
							
							 
							
							... 
							
							
							
							llvm-svn: 11474 
							
						 
						
							2004-02-15 05:55:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fae8ab3088 
								
							 
						 
						
							
							
								
								rename the "exceptional" destination of an invoke instruction to the 'unwind' dest  
							
							 
							
							... 
							
							
							
							llvm-svn: 11202 
							
						 
						
							2004-02-08 21:44:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c2f0aa58df 
								
							 
						 
						
							
							
								
								Disable (x - (y - z)) => (x + (z - y)) optimization for floating point.  
							
							 
							
							... 
							
							
							
							llvm-svn: 11083 
							
						 
						
							2004-02-02 20:09:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1f7942fe7d 
								
							 
						 
						
							
							
								
								Fix InstCombine/2004-01-13-InstCombineInvokePHI.ll, which also fixes lots  
							
							 
							
							... 
							
							
							
							of C++ programs in Shootout-C++, including lists1 and moments, etc
llvm-svn: 10845 
							
						 
						
							2004-01-14 06:06:08 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fcf21a75b0 
								
							 
						 
						
							
							
								
								Fix bug in previous checkin  
							
							 
							
							... 
							
							
							
							llvm-svn: 10798 
							
						 
						
							2004-01-12 19:47:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c1e7cc0fbe 
								
							 
						 
						
							
							
								
								Eliminate use of ConstantHandling and ConstantExpr::getShift interfaces  
							
							 
							
							... 
							
							
							
							llvm-svn: 10796 
							
						 
						
							2004-01-12 19:35:11 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7e8af38637 
								
							 
						 
						
							
							
								
								Do not hack on volatile loads.  I'm not sure what the point of a volatile load  
							
							 
							
							... 
							
							
							
							from constant memory is, but lets not take chances.
llvm-svn: 10765 
							
						 
						
							2004-01-12 04:13:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								91daeb5431 
								
							 
						 
						
							
							
								
								Factor code out into the Utils library  
							
							 
							
							... 
							
							
							
							llvm-svn: 10530 
							
						 
						
							2003-12-19 05:58:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8427bffb9a 
								
							 
						 
						
							
							
								
								* Finegrainify namespacification  
							
							 
							
							... 
							
							
							
							* Transform: free <ty>* (cast <ty2>* X to <ty>*) into free <ty2>* X
llvm-svn: 10303 
							
						 
						
							2003-12-07 01:24:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d76fe4ea7d 
								
							 
						 
						
							
							
								
								Implement feature: InstCombine/2003-11-13-ConstExprCastCall.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 9981 
							
						 
						
							2003-11-13 19:17:02 +00:00  
						
					 
				
					
						
							
							
								 
								Brian Gaeke
							
						 
						
							 
							
							
							
							
								
							
							
								960707c335 
								
							 
						 
						
							
							
								
								Put all LLVM code into the llvm namespace, as per bug 109.  
							
							 
							
							... 
							
							
							
							llvm-svn: 9903 
							
						 
						
							2003-11-11 22:41:34 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7c94d1171a 
								
							 
						 
						
							
							
								
								Fix flawed logic that was breaking several SPEC benchmarks, including gzip and crafty.  
							
							 
							
							... 
							
							
							
							llvm-svn: 9731 
							
						 
						
							2003-11-05 17:31:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8f2f598024 
								
							 
						 
						
							
							
								
								Fix bug with previous implementation:  
							
							 
							
							... 
							
							
							
							-      // ~(c-X) == X-(c-1) == X+(-c+1)
+      // ~(c-X) == X-c-1 == X+(-c-1)
Implement: C - ~X == X + (1+C)
llvm-svn: 9715 
							
						 
						
							2003-11-05 01:06:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e580666532 
								
							 
						 
						
							
							
								
								Minor cleanup, plus implement InstCombine/xor.ll:test17  
							
							 
							
							... 
							
							
							
							llvm-svn: 9711 
							
						 
						
							2003-11-04 23:50:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0f68fa6569 
								
							 
						 
						
							
							
								
								Implement InstCombine/xor.ll:test(15|16)  
							
							 
							
							... 
							
							
							
							llvm-svn: 9708 
							
						 
						
							2003-11-04 23:37:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6444c37488 
								
							 
						 
						
							
							
								
								Implement InstCombine/cast-set.ll:test6[a].  This improves code generated for  
							
							 
							
							... 
							
							
							
							a hot function in em3d
llvm-svn: 9673 
							
						 
						
							2003-11-03 05:17:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1693079e92 
								
							 
						 
						
							
							
								
								Implement InstCombine/cast-set.ll: test1, test2, test7  
							
							 
							
							... 
							
							
							
							llvm-svn: 9670 
							
						 
						
							2003-11-03 04:25:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								af7893203b 
								
							 
						 
						
							
							
								
								Fix bug with zero sized casts  
							
							 
							
							... 
							
							
							
							llvm-svn: 9667 
							
						 
						
							2003-11-03 01:29:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d4d987dd4a 
								
							 
						 
						
							
							
								
								Fix bug in previous checkin  
							
							 
							
							... 
							
							
							
							llvm-svn: 9656 
							
						 
						
							2003-11-02 06:54:48 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f4ad165e8b 
								
							 
						 
						
							
							
								
								Implement transmogriphication of allocation instructions  
							
							 
							
							... 
							
							
							
							llvm-svn: 9654 
							
						 
						
							2003-11-02 05:57:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								686767f3f6 
								
							 
						 
						
							
							
								
								Fix bug: 2003-10-29-CallSiteResolve.ll & PR70  
							
							 
							
							... 
							
							
							
							llvm-svn: 9600 
							
						 
						
							2003-10-30 00:46:41 +00:00  
						
					 
				
					
						
							
							
								 
								John Criswell
							
						 
						
							 
							
							
							
							
								
							
							
								482202a601 
								
							 
						 
						
							
							
								
								Added LLVM project notice to the top of every C++ source file.  
							
							 
							
							... 
							
							
							
							Header files will be on the way.
llvm-svn: 9298 
							
						 
						
							2003-10-20 19:43:21 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f95d9b99b3 
								
							 
						 
						
							
							
								
								Decrease usage of use_size()  
							
							 
							
							... 
							
							
							
							llvm-svn: 9135 
							
						 
						
							2003-10-15 16:48:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								950fc785ae 
								
							 
						 
						
							
							
								
								whoops, don't accidentally lose variable names  
							
							 
							
							... 
							
							
							
							llvm-svn: 8955 
							
						 
						
							2003-10-07 22:58:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								75b4d1deec 
								
							 
						 
						
							
							
								
								Fix bug: InstCombine/cast.ll:test11 / PR#7  
							
							 
							
							... 
							
							
							
							llvm-svn: 8954 
							
						 
						
							2003-10-07 22:54:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								aec3d948cf 
								
							 
						 
						
							
							
								
								Refactor code a bit  
							
							 
							
							... 
							
							
							
							llvm-svn: 8952 
							
						 
						
							2003-10-07 22:32:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								800aaaf207 
								
							 
						 
						
							
							
								
								Fix bug in previous checkin  
							
							 
							
							... 
							
							
							
							llvm-svn: 8922 
							
						 
						
							2003-10-07 15:17:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e8ed4ef039 
								
							 
						 
						
							
							
								
								Minor speedups for the instcombine pass  
							
							 
							
							... 
							
							
							
							llvm-svn: 8894 
							
						 
						
							2003-10-06 17:11:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b9cde76e60 
								
							 
						 
						
							
							
								
								Implement InstCombine/add.ll:test17 & 18  
							
							 
							
							... 
							
							
							
							llvm-svn: 8817 
							
						 
						
							2003-10-02 15:11:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2caaaba3e9 
								
							 
						 
						
							
							
								
								Squelch warning  
							
							 
							
							... 
							
							
							
							llvm-svn: 8659 
							
						 
						
							2003-09-22 20:33:34 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2da29177ba 
								
							 
						 
						
							
							
								
								Implement InstCombine/and.ll:test(15|16)  
							
							 
							
							... 
							
							
							
							llvm-svn: 8607 
							
						 
						
							2003-09-19 19:05:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ba1cb38c06 
								
							 
						 
						
							
							
								
								pull a large nested conditional out into its own function  
							
							 
							
							... 
							
							
							
							llvm-svn: 8605 
							
						 
						
							2003-09-19 17:17:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								dbba189f15 
								
							 
						 
						
							
							
								
								Implement InstCombine/add.ll:test(15|16)  
							
							 
							
							... 
							
							
							
							llvm-svn: 8604 
							
						 
						
							2003-09-19 15:35:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cce81be1e1 
								
							 
						 
						
							
							
								
								Simplify code  
							
							 
							
							... 
							
							
							
							Implement InstCombine/mul.ll:test9
llvm-svn: 8488 
							
						 
						
							2003-09-11 22:24:54 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								216c7b8aed 
								
							 
						 
						
							
							
								
								Fix spell-o's  
							
							 
							
							... 
							
							
							
							llvm-svn: 8431 
							
						 
						
							2003-09-10 05:29:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3ac7c26a1c 
								
							 
						 
						
							
							
								
								Implement instcombine optimizations:  
							
							 
							
							... 
							
							
							
							(A <setcc1> B) logicalop (A <setcc2> B)  -> (A <setcc3> B) or true or false
Where setcc[123] is one of the 6 setcc instructions, and logicalop is one of: And, Or, Xor
llvm-svn: 7828 
							
						 
						
							2003-08-13 20:16:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b8b97505ba 
								
							 
						 
						
							
							
								
								Generalize some of the add tests to allow for reassociation to take place  
							
							 
							
							... 
							
							
							
							llvm-svn: 7825 
							
						 
						
							2003-08-13 19:01:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d07283a2ad 
								
							 
						 
						
							
							
								
								Implement InstCombine/2003-08-12-AllocaNonNull.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 7807 
							
						 
						
							2003-08-13 05:38:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c992add9fe 
								
							 
						 
						
							
							
								
								Do not cannonicalize (X != 0) into (cast X to bool)  
							
							 
							
							... 
							
							
							
							llvm-svn: 7806 
							
						 
						
							2003-08-13 05:33:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ede3fe05c5 
								
							 
						 
						
							
							
								
								Change cannonicalization rules: add X,X is represented as multiplies, multiplies  
							
							 
							
							... 
							
							
							
							of a power of two are represented as a shift.
llvm-svn: 7803 
							
						 
						
							2003-08-13 04:18:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								deaa0dd71a 
								
							 
						 
						
							
							
								
								Allow pulling logical operations through shifts.  
							
							 
							
							... 
							
							
							
							This implements InstCombine/shift.ll:test14*
llvm-svn: 7793 
							
						 
						
							2003-08-12 21:53:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								01d5639515 
								
							 
						 
						
							
							
								
								Simplify code  
							
							 
							
							... 
							
							
							
							llvm-svn: 7783 
							
						 
						
							2003-08-12 19:17:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								812aab7727 
								
							 
						 
						
							
							
								
								Implement testcases InstCombine/or.ll:test16/test17  
							
							 
							
							... 
							
							
							
							llvm-svn: 7782 
							
						 
						
							2003-08-12 19:11:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ab780dfab5 
								
							 
						 
						
							
							
								
								Instcombine: (A >> c1) << c2 for signed integers  
							
							 
							
							... 
							
							
							
							llvm-svn: 7295 
							
						 
						
							2003-07-24 18:38:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3204d4ed4e 
								
							 
						 
						
							
							
								
								Reorganization of code, no functional changes.  
							
							 
							
							... 
							
							
							
							Now it shoudl be a bit more efficient
llvm-svn: 7292 
							
						 
						
							2003-07-24 17:52:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								dfae8be3c9 
								
							 
						 
						
							
							
								
								Allow folding several instructions into casts, which can simplify a lot  
							
							 
							
							... 
							
							
							
							of codes.  For example,
short kernel (short t1) {
  t1 >>= 8; t1 <<= 8;
  return t1;
}
became:
short %kernel(short %t1.1) {
        %tmp.3 = shr short %t1.1, ubyte 8               ; <short> [#uses=1]
        %tmp.5 = cast short %tmp.3 to int               ; <int> [#uses=1]
        %tmp.7 = shl int %tmp.5, ubyte 8                ; <int> [#uses=1]
        %tmp.8 = cast int %tmp.7 to short               ; <short> [#uses=1]
        ret short %tmp.8
}
before, now it becomes:
short %kernel(short %t1.1) {
        %tmp.3 = shr short %t1.1, ubyte 8               ; <short> [#uses=1]
        %tmp.8 = shl short %tmp.3, ubyte 8              ; <short> [#uses=1]
        ret short %tmp.8
}
which will become:
short %kernel(short %t1.1) {
        %tmp.3 = and short %t1.1, 0xFF00
        ret short %tmp.3
}
This implements cast-set.ll:test4 and test5
llvm-svn: 7290 
							
						 
						
							2003-07-24 17:35:25 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bfb1d03159 
								
							 
						 
						
							
							
								
								Add comments  
							
							 
							
							... 
							
							
							
							llvm-svn: 7283 
							
						 
						
							2003-07-23 21:41:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9763859e8d 
								
							 
						 
						
							
							
								
								Remove explicit check for: not (not X) = X, it is already handled because xor is commutative  
							
							 
							
							... 
							
							
							
							- InstCombine: (X & C1) ^ C2 --> (X & C1) | C2 iff (C1&C2) == 0
  - InstCombine: (X | C1) ^ C2 --> (X | C1) & ~C2 iff (C1&C2) == C2
llvm-svn: 7282 
							
						 
						
							2003-07-23 21:37:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								33217db4d9 
								
							 
						 
						
							
							
								
								InstCombine: (X ^ C1) & C2 --> (X & C2) iff (C1&C2) == 0  
							
							 
							
							... 
							
							
							
							llvm-svn: 7272 
							
						 
						
							2003-07-23 19:36:21 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								16464b36ff 
								
							 
						 
						
							
							
								
								- InstCombine: (X | C1) & C2 --> X & C2 iff C1 & C1 == 0  
							
							 
							
							... 
							
							
							
							- InstCombine: (X | C) & C --> C
  - InstCombine: (X | C1) & C2 --> (X | (C1&C2)) & C2
llvm-svn: 7269 
							
						 
						
							2003-07-23 19:25:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8f0d15601a 
								
							 
						 
						
							
							
								
								IC: (X & C1) | C2 --> (X | C2) & (C1|C2)  
							
							 
							
							... 
							
							
							
							IC: (X ^ C1) | C2 --> (X | C2) ^ (C1&~C2)
We are now guaranteed that all 'or's will be inside of 'and's, and all 'and's
will be inside of 'xor's, if the second operands are constants.
llvm-svn: 7264 
							
						 
						
							2003-07-23 18:29:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								49b47ae565 
								
							 
						 
						
							
							
								
								IC: (X ^ C1) & C2 --> (X & C2) ^ (C1&C2)  
							
							 
							
							... 
							
							
							
							Minor code cleanup
llvm-svn: 7262 
							
						 
						
							2003-07-23 17:57:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cfbce7c880 
								
							 
						 
						
							
							
								
								InstCombine: (X ^ 4) == 8  --> X == 12  
							
							 
							
							... 
							
							
							
							llvm-svn: 7260 
							
						 
						
							2003-07-23 17:26:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d492a0b7b4 
								
							 
						 
						
							
							
								
								IC: (X & 5) == 13 --> false  
							
							 
							
							... 
							
							
							
							IC: (X | 8) == 4  --> false
llvm-svn: 7257 
							
						 
						
							2003-07-23 17:02:11 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6077c3195f 
								
							 
						 
						
							
							
								
								Simplify code by using ConstantInt::getRawValue instead of checking to see  
							
							 
							
							... 
							
							
							
							whether the constant is signed or unsigned, then casting
llvm-svn: 7252 
							
						 
						
							2003-07-23 15:22:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bdb0ce0605 
								
							 
						 
						
							
							
								
								- InstCombine (cast (xor A, B) to bool) ==> (setne A, B)  
							
							 
							
							... 
							
							
							
							- InstCombine (cast (and X, (1 << size(X)-1)) to bool) ==> x < 0
llvm-svn: 7241 
							
						 
						
							2003-07-22 21:46:59 +00:00  
						
					 
				
					
						
							
							
								 
								John Criswell
							
						 
						
							 
							
							
							
							
								
							
							
								d6dcbc6ce8 
								
							 
						 
						
							
							
								
								Added code that checks to see if a global variable is external before replacing  
							
							 
							
							... 
							
							
							
							a load of the global variable with the variable's constant value.
llvm-svn: 7216 
							
						 
						
							2003-07-21 19:42:57 +00:00  
						
					 
				
					
						
							
							
								 
								John Criswell
							
						 
						
							 
							
							
							
							
								
							
							
								0643ceafcf 
								
							 
						 
						
							
							
								
								Dinakar and I fixed a bug where we were trying to get the initializer of  
							
							 
							
							... 
							
							
							
							an external constant.  Since external constants don't have initializers, we
were failing on an assert() call in llvm/GlobalVariable.h.
llvm-svn: 7193 
							
						 
						
							2003-07-17 19:06:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0f1d8a3947 
								
							 
						 
						
							
							
								
								Add support for elimination of load instruction from global constants  
							
							 
							
							... 
							
							
							
							llvm-svn: 6912 
							
						 
						
							2003-06-26 05:06:25 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								35236d8477 
								
							 
						 
						
							
							
								
								Instcombine:  X * -1 -> -X  
							
							 
							
							... 
							
							
							
							llvm-svn: 6904 
							
						 
						
							2003-06-25 17:09:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								55d4bda861 
								
							 
						 
						
							
							
								
								Implement new transforms:  
							
							 
							
							... 
							
							
							
							Replace (cast (sub A, B) to bool) -> (setne A, B)
  Replace (cast (add A, B) to bool) -> (setne A, -B)
llvm-svn: 6873 
							
						 
						
							2003-06-23 21:59:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d0d51605b2 
								
							 
						 
						
							
							
								
								Instcombine cast (getelementptr Ptr, 0, 0, 0) to ... into: cast Ptr to ...  
							
							 
							
							... 
							
							
							
							This fixes type safety problems in a variety of benchmarks that were confusing
DSA.
llvm-svn: 6837 
							
						 
						
							2003-06-21 23:12:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								970c33abb1 
								
							 
						 
						
							
							
								
								Implement the functionality of InstCombine/call.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 6783 
							
						 
						
							2003-06-19 17:00:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								45789aca97 
								
							 
						 
						
							
							
								
								Fix bug: InstCombine/2003-06-05-BranchInvertInfLoop.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 6630 
							
						 
						
							2003-06-05 20:12:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e967b348bf 
								
							 
						 
						
							
							
								
								Clean up previous code.  
							
							 
							
							... 
							
							
							
							Add new combination to turn seteq X, 0 -> not(cast X to bool)
llvm-svn: 6604 
							
						 
						
							2003-06-04 05:10:11 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9eef8a78b4 
								
							 
						 
						
							
							
								
								Implement combination of boolean not with branch  
							
							 
							
							... 
							
							
							
							llvm-svn: 6599 
							
						 
						
							2003-06-04 04:46:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								791ac1a4c8 
								
							 
						 
						
							
							
								
								Implement xform: (X != 0) -> (bool)X  
							
							 
							
							... 
							
							
							
							llvm-svn: 6506 
							
						 
						
							2003-06-01 03:35:25 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3442844742 
								
							 
						 
						
							
							
								
								Fix bug: Instcombine/2003-05-27-ConstExprCrash.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 6352 
							
						 
						
							2003-05-27 16:40:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								196897c424 
								
							 
						 
						
							
							
								
								Fix bug: InstCombine/2003-05-26-CastMiscompile.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 6338 
							
						 
						
							2003-05-26 23:41:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								471bd76281 
								
							 
						 
						
							
							
								
								Minor cleanups.  
							
							 
							
							... 
							
							
							
							This hunk:
-    } else if (Src->getNumOperands() == 2 && Src->use_size() == 1) {
+    } else if (Src->getNumOperands() == 2) {
Allows GEP folding to be more aggressive, which reduces the number of instructions
and can dramatically speed up BasicAA in some cases.
llvm-svn: 6286 
							
						 
						
							2003-05-22 19:07:21 +00:00  
						
					 
				
					
						
							
							
								 
								Misha Brukman
							
						 
						
							 
							
							
							
							
								
							
							
								e5838c4d72 
								
							 
						 
						
							
							
								
								s/convertable/convertible/g  
							
							 
							
							... 
							
							
							
							llvm-svn: 6248 
							
						 
						
							2003-05-20 18:45:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								dd65d863a9 
								
							 
						 
						
							
							
								
								Fix another case where constexprs could cause a crash  
							
							 
							
							... 
							
							
							
							llvm-svn: 5972 
							
						 
						
							2003-04-30 22:34:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9244df60d3 
								
							 
						 
						
							
							
								
								Fix constant folding of constexprs  
							
							 
							
							... 
							
							
							
							llvm-svn: 5971 
							
						 
						
							2003-04-30 22:19:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								46b3d30bf6 
								
							 
						 
						
							
							
								
								Change the interface to constant expressions to allow automatic folding  
							
							 
							
							... 
							
							
							
							llvm-svn: 5793 
							
						 
						
							2003-04-16 22:40:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7fb29e19f0 
								
							 
						 
						
							
							
								
								Add the following instcombine xforms:  
							
							 
							
							... 
							
							
							
							- Implement simple reassociation: (A|c1)|(B|c2) == (A|B)|(c1|c2)
  - (A & C1)+(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0
  - (A & C1)^(B & C2) -> (A & C1)|(B & C2) iff C1&C2 == 0
llvm-svn: 5743 
							
						 
						
							2003-03-11 00:12:48 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								934a64cfa4 
								
							 
						 
						
							
							
								
								Implement: -A*-B == A*B  
							
							 
							
							... 
							
							
							
							llvm-svn: 5740 
							
						 
						
							2003-03-10 23:23:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3e327a4334 
								
							 
						 
						
							
							
								
								Add new transformation: // (~A | ~B) == (~(A & B))  
							
							 
							
							... 
							
							
							
							llvm-svn: 5738 
							
						 
						
							2003-03-10 23:13:59 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bb74e2284a 
								
							 
						 
						
							
							
								
								Generalize not and neg comparison testers to allow constant to be considered not'able and neg'able.  This  
							
							 
							
							... 
							
							
							
							allows optimization of this:
int %test4(int %A, int %B) {
        %a = xor int %A, -1
        %c = and int %a, 5    ; 5 = ~c2
        %d = xor int %c, -1
        ret int %d
}
into this:
int %test4(int %A, int %B) {            ; No predecessors!
        %c.demorgan = or int %A, -6             ; <int> [#uses=1]
        ret int %c.demorgan
}
llvm-svn: 5736 
							
						 
						
							2003-03-10 23:06:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								dcf240a649 
								
							 
						 
						
							
							
								
								Generalize (A+c1)+c2 optimization to work with all associative operators  
							
							 
							
							... 
							
							
							
							llvm-svn: 5733 
							
						 
						
							2003-03-10 21:43:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3695257724 
								
							 
						 
						
							
							
								
								Minor change, no functionality diff  
							
							 
							
							... 
							
							
							
							llvm-svn: 5731 
							
						 
						
							2003-03-10 19:20:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e8d6c604bb 
								
							 
						 
						
							
							
								
								Fix bug: (x << 100) wasn't folded to 0, but (x >> 100) was (when x is unsigned)  
							
							 
							
							... 
							
							
							
							Implement new shift optimizations for shifting the result of a shift.
llvm-svn: 5729 
							
						 
						
							2003-03-10 19:16:08 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1bbb7b6f19 
								
							 
						 
						
							
							
								
								Implement:  (A|B)^B == A & (~B)  
							
							 
							
							... 
							
							
							
							llvm-svn: 5728 
							
						 
						
							2003-03-10 18:24:17 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								235af5673b 
								
							 
						 
						
							
							
								
								Implement %test7 in InstCombine/getelementptr.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 5704 
							
						 
						
							2003-03-05 22:33:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								57c8d99bbd 
								
							 
						 
						
							
							
								
								4 new transformations:  
							
							 
							
							... 
							
							
							
							* X*C + X --> X * (C+1)
  * X + X*C --> X * (C+1)
  * X - X*C --> X * (1-C)
  * X*C - X --> X * (C-1)
llvm-svn: 5592 
							
						 
						
							2003-02-18 19:57:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3082c5a070 
								
							 
						 
						
							
							
								
								Add a variety of new transformations:  
							
							 
							
							... 
							
							
							
							* A & ~A == 0
  * A / (2^c) == A >> c  if unsigned
  * 0 / A == 0
  * 1.0 * A == A
  * A * (2^c) == A << c
  * A ^ ~A == -1
  * A | ~A == -1
  * 0 % X = 0
  * A % (2^c) == A & (c-1) if unsigned
  * A - (A & B) == A & ~B
  * -1 - A == ~A
llvm-svn: 5587 
							
						 
						
							2003-02-18 19:28:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c6509f487b 
								
							 
						 
						
							
							
								
								Fix bug: 2002-12-05-MissedConstProp.ll pointed out by Casey Carter  
							
							 
							
							... 
							
							
							
							llvm-svn: 4935 
							
						 
						
							2002-12-05 22:41:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a2620ac156 
								
							 
						 
						
							
							
								
								Fix warning  
							
							 
							
							... 
							
							
							
							llvm-svn: 4649 
							
						 
						
							2002-11-09 00:49:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5d606a09ff 
								
							 
						 
						
							
							
								
								Instcombine this away:  
							
							 
							
							... 
							
							
							
							%A = getelementptr [4 x int]* %M, long 0, long 0
        %B = getelementptr int* %A, long 2
llvm-svn: 4536 
							
						 
						
							2002-11-04 16:43:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1085bdf49f 
								
							 
						 
						
							
							
								
								Add a transformation to turn:  
							
							 
							
							... 
							
							
							
							malloc Ty, C
int
  malloc [C x Ty], 1
llvm-svn: 4534 
							
						 
						
							2002-11-04 16:18:53 +00:00  
						
					 
				
					
						
							
							
								 
								Misha Brukman
							
						 
						
							 
							
							
							
							
								
							
							
								632df28deb 
								
							 
						 
						
							
							
								
								Fix spelling of `propagate'.  
							
							 
							
							... 
							
							
							
							llvm-svn: 4423 
							
						 
						
							2002-10-29 23:06:16 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								820d971233 
								
							 
						 
						
							
							
								
								- Rename AnalysisUsage::preservesAll to getPreservesAll & preservesCFG to  
							
							 
							
							... 
							
							
							
							setPreservesCFG to be less confusing.
llvm-svn: 4255 
							
						 
						
							2002-10-21 20:00:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								394617f38b 
								
							 
						 
						
							
							
								
								It is illegal for PHI nodes to have zero values, delete the code to handle them  
							
							 
							
							... 
							
							
							
							llvm-svn: 4071 
							
						 
						
							2002-10-08 17:07:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2e0fb39d87 
								
							 
						 
						
							
							
								
								Fold ashr -1, X into -1  
							
							 
							
							... 
							
							
							
							llvm-svn: 4070 
							
						 
						
							2002-10-08 16:16:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bf3a099a62 
								
							 
						 
						
							
							
								
								Updates to work with recent Statistic's changes:  
							
							 
							
							... 
							
							
							
							* Renamed StatisticReporter.h/cpp to Statistic.h/cpp
    * Broke constructor to take two const char * arguments instead of one, so
      that indendation can be taken care of automatically.
    * Sort the list by pass name when printing
    * Make sure to print all statistics as a group, instead of randomly when
      the statistics dtors are called.
    * Updated ProgrammersManual with new semantics.
llvm-svn: 4002 
							
						 
						
							2002-10-01 22:38:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								555518c70f 
								
							 
						 
						
							
							
								
								Optimize away cases like:  
							
							 
							
							... 
							
							
							
							%cast109 = cast uint %cast212 to short          ; <short> [#uses=1]
        %cast214 = cast short %cast109 to uint          ; <uint> [#uses=1]
        %cast215 = cast uint %cast214 to short          ; <short> [#uses=1]
llvm-svn: 3897 
							
						 
						
							2002-09-23 23:39:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a8339e3613 
								
							 
						 
						
							
							
								
								Fix bug: test/Regression/Transforms/InstCombine/2002-09-17-GetElementPtrCrash.ll  
							
							 
							
							... 
							
							
							
							Thanks to Casey for finding it!
llvm-svn: 3783 
							
						 
						
							2002-09-17 21:05:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								136dab7d86 
								
							 
						 
						
							
							
								
								- Change getelementptr instruction to use long indexes instead of uint  
							
							 
							
							... 
							
							
							
							indexes for sequential types.
llvm-svn: 3682 
							
						 
						
							2002-09-11 01:21:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								55f3d94b40 
								
							 
						 
						
							
							
								
								Add cannonicalization of shl X, 1 -> add X, X  
							
							 
							
							... 
							
							
							
							llvm-svn: 3671 
							
						 
						
							2002-09-10 23:04:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e103d178c5 
								
							 
						 
						
							
							
								
								Hack unneccesary now that shifts of pointers are no longer legal!  
							
							 
							
							... 
							
							
							
							llvm-svn: 3640 
							
						 
						
							2002-09-10 03:50:54 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b8bba6f765 
								
							 
						 
						
							
							
								
								Fix Bug: test/Regression/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 3626 
							
						 
						
							2002-09-08 21:39:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b0b412e66e 
								
							 
						 
						
							
							
								
								- Renamed Type::isIntegral() to Type::isInteger()  
							
							 
							
							... 
							
							
							
							- Added new method Type::isIntegral() that is the same as isInteger, but
    also accepts bool.
llvm-svn: 3574 
							
						 
						
							2002-09-03 01:08:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								99f48c614d 
								
							 
						 
						
							
							
								
								Add constant prop & DIE to InstCombine, so it cleans up after itself  
							
							 
							
							... 
							
							
							
							llvm-svn: 3568 
							
						 
						
							2002-09-02 04:59:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								65217ff294 
								
							 
						 
						
							
							
								
								- instcombine demorgan's law: and (not A), (not B) == not (or A, B)  
							
							 
							
							... 
							
							
							
							llvm-svn: 3495 
							
						 
						
							2002-08-23 18:32:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f6c0efa754 
								
							 
						 
						
							
							
								
								Instcombine PHI's of the form  %PN = phi PN, X into X  and  
							
							 
							
							... 
							
							
							
							%PN = phi PN, PN, PN into 0 (because the phi must not be reachable)
llvm-svn: 3470 
							
						 
						
							2002-08-22 20:22:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b8d6e40ed7 
								
							 
						 
						
							
							
								
								- instcombine (~(a < b)) into (a >= b)  
							
							 
							
							... 
							
							
							
							llvm-svn: 3406 
							
						 
						
							2002-08-20 18:24:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9cd1e66155 
								
							 
						 
						
							
							
								
								- implemented instcombine of phi (X, X, X) -> X  
							
							 
							
							... 
							
							
							
							llvm-svn: 3397 
							
						 
						
							2002-08-20 15:35:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c59af1d257 
								
							 
						 
						
							
							
								
								Promote getelementptr instructions to constexprs if we can.  
							
							 
							
							... 
							
							
							
							llvm-svn: 3368 
							
						 
						
							2002-08-17 22:21:59 +00:00