022167f13b 
								
							 
						 
						
							
							
								
								Implement sub.ll:test14  
							
							... 
							
							
							
							llvm-svn: 12355 
							
						 
						
							2004-03-13 00:11:49 +00:00  
				
					
						
							
							
								 
						
							
								92295c5031 
								
							 
						 
						
							
							
								
								Implement InstCombine/sub.ll:test12 & test13  
							
							... 
							
							
							
							llvm-svn: 12353 
							
						 
						
							2004-03-12 23:53:13 +00:00  
				
					
						
							
							
								 
						
							
								b909e8b0d4 
								
							 
						 
						
							
							
								
								Add trivial optimizations for select instructions  
							
							... 
							
							
							
							llvm-svn: 12317 
							
						 
						
							2004-03-12 05:52:32 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								f3a366062c 
								
							 
						 
						
							
							
								
								Turn 'free null' into nothing  
							
							... 
							
							
							
							llvm-svn: 11940 
							
						 
						
							2004-02-28 04:57:37 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								8ee0593f0d 
								
							 
						 
						
							
							
								
								Fix a faulty optimization on FP values  
							
							... 
							
							
							
							llvm-svn: 11801 
							
						 
						
							2004-02-24 18:10:14 +00:00  
				
					
						
							
							
								 
						
							
								ae739aefd7 
								
							 
						 
						
							
							
								
								Generate much more efficient code in programs like pifft  
							
							... 
							
							
							
							llvm-svn: 11775 
							
						 
						
							2004-02-23 21:46:58 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								2b55ea38bc 
								
							 
						 
						
							
							
								
								Implement cast.ll::test14/15  
							
							... 
							
							
							
							llvm-svn: 11742 
							
						 
						
							2004-02-23 07:16:20 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								c8a10c4b6a 
								
							 
						 
						
							
							
								
								Implement mul.ll:test11  
							
							... 
							
							
							
							llvm-svn: 11737 
							
						 
						
							2004-02-23 06:00:11 +00:00  
				
					
						
							
							
								 
						
							
								59611149ee 
								
							 
						 
						
							
							
								
								Implement "strength reduction" of   X <= C and X >= C  
							
							... 
							
							
							
							llvm-svn: 11735 
							
						 
						
							2004-02-23 05:47:48 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								c207635fd5 
								
							 
						 
						
							
							
								
								Implement Transforms/InstCombine/xor.ll:test19  
							
							... 
							
							
							
							llvm-svn: 11490 
							
						 
						
							2004-02-16 01:20:27 +00:00  
				
					
						
							
							
								 
						
							
								76b2ff4ded 
								
							 
						 
						
							
							
								
								Adjustments to support the new ConstantAggregateZero class  
							
							... 
							
							
							
							llvm-svn: 11474 
							
						 
						
							2004-02-15 05:55:15 +00:00  
				
					
						
							
							
								 
						
							
								fae8ab3088 
								
							 
						 
						
							
							
								
								rename the "exceptional" destination of an invoke instruction to the 'unwind' dest  
							
							... 
							
							
							
							llvm-svn: 11202 
							
						 
						
							2004-02-08 21:44:31 +00:00  
				
					
						
							
							
								 
						
							
								c2f0aa58df 
								
							 
						 
						
							
							
								
								Disable (x - (y - z)) => (x + (z - y)) optimization for floating point.  
							
							... 
							
							
							
							llvm-svn: 11083 
							
						 
						
							2004-02-02 20:09:56 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								fcf21a75b0 
								
							 
						 
						
							
							
								
								Fix bug in previous checkin  
							
							... 
							
							
							
							llvm-svn: 10798 
							
						 
						
							2004-01-12 19:47:05 +00:00  
				
					
						
							
							
								 
						
							
								c1e7cc0fbe 
								
							 
						 
						
							
							
								
								Eliminate use of ConstantHandling and ConstantExpr::getShift interfaces  
							
							... 
							
							
							
							llvm-svn: 10796 
							
						 
						
							2004-01-12 19:35:11 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								91daeb5431 
								
							 
						 
						
							
							
								
								Factor code out into the Utils library  
							
							... 
							
							
							
							llvm-svn: 10530 
							
						 
						
							2003-12-19 05:58:40 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								d76fe4ea7d 
								
							 
						 
						
							
							
								
								Implement feature: InstCombine/2003-11-13-ConstExprCastCall.ll  
							
							... 
							
							
							
							llvm-svn: 9981 
							
						 
						
							2003-11-13 19:17:02 +00:00  
				
					
						
							
							
								 
						
							
								960707c335 
								
							 
						 
						
							
							
								
								Put all LLVM code into the llvm namespace, as per bug 109.  
							
							... 
							
							
							
							llvm-svn: 9903 
							
						 
						
							2003-11-11 22:41:34 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								e580666532 
								
							 
						 
						
							
							
								
								Minor cleanup, plus implement InstCombine/xor.ll:test17  
							
							... 
							
							
							
							llvm-svn: 9711 
							
						 
						
							2003-11-04 23:50:51 +00:00  
				
					
						
							
							
								 
						
							
								0f68fa6569 
								
							 
						 
						
							
							
								
								Implement InstCombine/xor.ll:test(15|16)  
							
							... 
							
							
							
							llvm-svn: 9708 
							
						 
						
							2003-11-04 23:37:10 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								1693079e92 
								
							 
						 
						
							
							
								
								Implement InstCombine/cast-set.ll: test1, test2, test7  
							
							... 
							
							
							
							llvm-svn: 9670 
							
						 
						
							2003-11-03 04:25:02 +00:00  
				
					
						
							
							
								 
						
							
								af7893203b 
								
							 
						 
						
							
							
								
								Fix bug with zero sized casts  
							
							... 
							
							
							
							llvm-svn: 9667 
							
						 
						
							2003-11-03 01:29:41 +00:00  
				
					
						
							
							
								 
						
							
								d4d987dd4a 
								
							 
						 
						
							
							
								
								Fix bug in previous checkin  
							
							... 
							
							
							
							llvm-svn: 9656 
							
						 
						
							2003-11-02 06:54:48 +00:00  
				
					
						
							
							
								 
						
							
								f4ad165e8b 
								
							 
						 
						
							
							
								
								Implement transmogriphication of allocation instructions  
							
							... 
							
							
							
							llvm-svn: 9654 
							
						 
						
							2003-11-02 05:57:39 +00:00  
				
					
						
							
							
								 
						
							
								686767f3f6 
								
							 
						 
						
							
							
								
								Fix bug: 2003-10-29-CallSiteResolve.ll & PR70  
							
							... 
							
							
							
							llvm-svn: 9600 
							
						 
						
							2003-10-30 00:46:41 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								f95d9b99b3 
								
							 
						 
						
							
							
								
								Decrease usage of use_size()  
							
							... 
							
							
							
							llvm-svn: 9135 
							
						 
						
							2003-10-15 16:48:29 +00:00  
				
					
						
							
							
								 
						
							
								950fc785ae 
								
							 
						 
						
							
							
								
								whoops, don't accidentally lose variable names  
							
							... 
							
							
							
							llvm-svn: 8955 
							
						 
						
							2003-10-07 22:58:41 +00:00  
				
					
						
							
							
								 
						
							
								75b4d1deec 
								
							 
						 
						
							
							
								
								Fix bug: InstCombine/cast.ll:test11 / PR#7  
							
							... 
							
							
							
							llvm-svn: 8954 
							
						 
						
							2003-10-07 22:54:13 +00:00  
				
					
						
							
							
								 
						
							
								aec3d948cf 
								
							 
						 
						
							
							
								
								Refactor code a bit  
							
							... 
							
							
							
							llvm-svn: 8952 
							
						 
						
							2003-10-07 22:32:43 +00:00  
				
					
						
							
							
								 
						
							
								800aaaf207 
								
							 
						 
						
							
							
								
								Fix bug in previous checkin  
							
							... 
							
							
							
							llvm-svn: 8922 
							
						 
						
							2003-10-07 15:17:02 +00:00  
				
					
						
							
							
								 
						
							
								e8ed4ef039 
								
							 
						 
						
							
							
								
								Minor speedups for the instcombine pass  
							
							... 
							
							
							
							llvm-svn: 8894 
							
						 
						
							2003-10-06 17:11:01 +00:00  
				
					
						
							
							
								 
						
							
								b9cde76e60 
								
							 
						 
						
							
							
								
								Implement InstCombine/add.ll:test17 & 18  
							
							... 
							
							
							
							llvm-svn: 8817 
							
						 
						
							2003-10-02 15:11:26 +00:00  
				
					
						
							
							
								 
						
							
								2caaaba3e9 
								
							 
						 
						
							
							
								
								Squelch warning  
							
							... 
							
							
							
							llvm-svn: 8659 
							
						 
						
							2003-09-22 20:33:34 +00:00  
				
					
						
							
							
								 
						
							
								2da29177ba 
								
							 
						 
						
							
							
								
								Implement InstCombine/and.ll:test(15|16)  
							
							... 
							
							
							
							llvm-svn: 8607 
							
						 
						
							2003-09-19 19:05:02 +00:00  
				
					
						
							
							
								 
						
							
								ba1cb38c06 
								
							 
						 
						
							
							
								
								pull a large nested conditional out into its own function  
							
							... 
							
							
							
							llvm-svn: 8605 
							
						 
						
							2003-09-19 17:17:26 +00:00  
				
					
						
							
							
								 
						
							
								dbba189f15 
								
							 
						 
						
							
							
								
								Implement InstCombine/add.ll:test(15|16)  
							
							... 
							
							
							
							llvm-svn: 8604 
							
						 
						
							2003-09-19 15:35:42 +00:00  
				
					
						
							
							
								 
						
							
								cce81be1e1 
								
							 
						 
						
							
							
								
								Simplify code  
							
							... 
							
							
							
							Implement InstCombine/mul.ll:test9
llvm-svn: 8488 
							
						 
						
							2003-09-11 22:24:54 +00:00  
				
					
						
							
							
								 
						
							
								216c7b8aed 
								
							 
						 
						
							
							
								
								Fix spell-o's  
							
							... 
							
							
							
							llvm-svn: 8431 
							
						 
						
							2003-09-10 05:29:43 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								d07283a2ad 
								
							 
						 
						
							
							
								
								Implement InstCombine/2003-08-12-AllocaNonNull.ll  
							
							... 
							
							
							
							llvm-svn: 7807 
							
						 
						
							2003-08-13 05:38:46 +00:00  
				
					
						
							
							
								 
						
							
								c992add9fe 
								
							 
						 
						
							
							
								
								Do not cannonicalize (X != 0) into (cast X to bool)  
							
							... 
							
							
							
							llvm-svn: 7806 
							
						 
						
							2003-08-13 05:33:12 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								deaa0dd71a 
								
							 
						 
						
							
							
								
								Allow pulling logical operations through shifts.  
							
							... 
							
							
							
							This implements InstCombine/shift.ll:test14*
llvm-svn: 7793 
							
						 
						
							2003-08-12 21:53:41 +00:00  
				
					
						
							
							
								 
						
							
								01d5639515 
								
							 
						 
						
							
							
								
								Simplify code  
							
							... 
							
							
							
							llvm-svn: 7783 
							
						 
						
							2003-08-12 19:17:27 +00:00  
				
					
						
							
							
								 
						
							
								812aab7727 
								
							 
						 
						
							
							
								
								Implement testcases InstCombine/or.ll:test16/test17  
							
							... 
							
							
							
							llvm-svn: 7782 
							
						 
						
							2003-08-12 19:11:07 +00:00  
				
					
						
							
							
								 
						
							
								ab780dfab5 
								
							 
						 
						
							
							
								
								Instcombine: (A >> c1) << c2 for signed integers  
							
							... 
							
							
							
							llvm-svn: 7295 
							
						 
						
							2003-07-24 18:38:56 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								bfb1d03159 
								
							 
						 
						
							
							
								
								Add comments  
							
							... 
							
							
							
							llvm-svn: 7283 
							
						 
						
							2003-07-23 21:41:57 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								33217db4d9 
								
							 
						 
						
							
							
								
								InstCombine: (X ^ C1) & C2 --> (X & C2) iff (C1&C2) == 0  
							
							... 
							
							
							
							llvm-svn: 7272 
							
						 
						
							2003-07-23 19:36:21 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								49b47ae565 
								
							 
						 
						
							
							
								
								IC: (X ^ C1) & C2 --> (X & C2) ^ (C1&C2)  
							
							... 
							
							
							
							Minor code cleanup
llvm-svn: 7262 
							
						 
						
							2003-07-23 17:57:01 +00:00  
				
					
						
							
							
								 
						
							
								cfbce7c880 
								
							 
						 
						
							
							
								
								InstCombine: (X ^ 4) == 8  --> X == 12  
							
							... 
							
							
							
							llvm-svn: 7260 
							
						 
						
							2003-07-23 17:26:36 +00:00  
				
					
						
							
							
								 
						
							
								d492a0b7b4 
								
							 
						 
						
							
							
								
								IC: (X & 5) == 13 --> false  
							
							... 
							
							
							
							IC: (X | 8) == 4  --> false
llvm-svn: 7257 
							
						 
						
							2003-07-23 17:02:11 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								0f1d8a3947 
								
							 
						 
						
							
							
								
								Add support for elimination of load instruction from global constants  
							
							... 
							
							
							
							llvm-svn: 6912 
							
						 
						
							2003-06-26 05:06:25 +00:00  
				
					
						
							
							
								 
						
							
								35236d8477 
								
							 
						 
						
							
							
								
								Instcombine:  X * -1 -> -X  
							
							... 
							
							
							
							llvm-svn: 6904 
							
						 
						
							2003-06-25 17:09:20 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								970c33abb1 
								
							 
						 
						
							
							
								
								Implement the functionality of InstCombine/call.ll  
							
							... 
							
							
							
							llvm-svn: 6783 
							
						 
						
							2003-06-19 17:00:31 +00:00  
				
					
						
							
							
								 
						
							
								45789aca97 
								
							 
						 
						
							
							
								
								Fix bug: InstCombine/2003-06-05-BranchInvertInfLoop.ll  
							
							... 
							
							
							
							llvm-svn: 6630 
							
						 
						
							2003-06-05 20:12:51 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								9eef8a78b4 
								
							 
						 
						
							
							
								
								Implement combination of boolean not with branch  
							
							... 
							
							
							
							llvm-svn: 6599 
							
						 
						
							2003-06-04 04:46:00 +00:00  
				
					
						
							
							
								 
						
							
								791ac1a4c8 
								
							 
						 
						
							
							
								
								Implement xform: (X != 0) -> (bool)X  
							
							... 
							
							
							
							llvm-svn: 6506 
							
						 
						
							2003-06-01 03:35:25 +00:00  
				
					
						
							
							
								 
						
							
								3442844742 
								
							 
						 
						
							
							
								
								Fix bug: Instcombine/2003-05-27-ConstExprCrash.ll  
							
							... 
							
							
							
							llvm-svn: 6352 
							
						 
						
							2003-05-27 16:40:51 +00:00  
				
					
						
							
							
								 
						
							
								196897c424 
								
							 
						 
						
							
							
								
								Fix bug: InstCombine/2003-05-26-CastMiscompile.ll  
							
							... 
							
							
							
							llvm-svn: 6338 
							
						 
						
							2003-05-26 23:41:32 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								e5838c4d72 
								
							 
						 
						
							
							
								
								s/convertable/convertible/g  
							
							... 
							
							
							
							llvm-svn: 6248 
							
						 
						
							2003-05-20 18:45:36 +00:00  
				
					
						
							
							
								 
						
							
								dd65d863a9 
								
							 
						 
						
							
							
								
								Fix another case where constexprs could cause a crash  
							
							... 
							
							
							
							llvm-svn: 5972 
							
						 
						
							2003-04-30 22:34:06 +00:00  
				
					
						
							
							
								 
						
							
								9244df60d3 
								
							 
						 
						
							
							
								
								Fix constant folding of constexprs  
							
							... 
							
							
							
							llvm-svn: 5971 
							
						 
						
							2003-04-30 22:19:10 +00:00  
				
					
						
							
							
								 
						
							
								46b3d30bf6 
								
							 
						 
						
							
							
								
								Change the interface to constant expressions to allow automatic folding  
							
							... 
							
							
							
							llvm-svn: 5793 
							
						 
						
							2003-04-16 22:40:51 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								934a64cfa4 
								
							 
						 
						
							
							
								
								Implement: -A*-B == A*B  
							
							... 
							
							
							
							llvm-svn: 5740 
							
						 
						
							2003-03-10 23:23:04 +00:00  
				
					
						
							
							
								 
						
							
								3e327a4334 
								
							 
						 
						
							
							
								
								Add new transformation: // (~A | ~B) == (~(A & B))  
							
							... 
							
							
							
							llvm-svn: 5738 
							
						 
						
							2003-03-10 23:13:59 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								dcf240a649 
								
							 
						 
						
							
							
								
								Generalize (A+c1)+c2 optimization to work with all associative operators  
							
							... 
							
							
							
							llvm-svn: 5733 
							
						 
						
							2003-03-10 21:43:22 +00:00  
				
					
						
							
							
								 
						
							
								3695257724 
								
							 
						 
						
							
							
								
								Minor change, no functionality diff  
							
							... 
							
							
							
							llvm-svn: 5731 
							
						 
						
							2003-03-10 19:20:30 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								1bbb7b6f19 
								
							 
						 
						
							
							
								
								Implement:  (A|B)^B == A & (~B)  
							
							... 
							
							
							
							llvm-svn: 5728 
							
						 
						
							2003-03-10 18:24:17 +00:00  
				
					
						
							
							
								 
						
							
								235af5673b 
								
							 
						 
						
							
							
								
								Implement %test7 in InstCombine/getelementptr.ll  
							
							... 
							
							
							
							llvm-svn: 5704 
							
						 
						
							2003-03-05 22:33:14 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								c6509f487b 
								
							 
						 
						
							
							
								
								Fix bug: 2002-12-05-MissedConstProp.ll pointed out by Casey Carter  
							
							... 
							
							
							
							llvm-svn: 4935 
							
						 
						
							2002-12-05 22:41:53 +00:00  
				
					
						
							
							
								 
						
							
								a2620ac156 
								
							 
						 
						
							
							
								
								Fix warning  
							
							... 
							
							
							
							llvm-svn: 4649 
							
						 
						
							2002-11-09 00:49:43 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								632df28deb 
								
							 
						 
						
							
							
								
								Fix spelling of `propagate'.  
							
							... 
							
							
							
							llvm-svn: 4423 
							
						 
						
							2002-10-29 23:06:16 +00:00  
				
					
						
							
							
								 
						
							
								820d971233 
								
							 
						 
						
							
							
								
								- Rename AnalysisUsage::preservesAll to getPreservesAll & preservesCFG to  
							
							... 
							
							
							
							setPreservesCFG to be less confusing.
llvm-svn: 4255 
							
						 
						
							2002-10-21 20:00:28 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								2e0fb39d87 
								
							 
						 
						
							
							
								
								Fold ashr -1, X into -1  
							
							... 
							
							
							
							llvm-svn: 4070 
							
						 
						
							2002-10-08 16:16:40 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								55f3d94b40 
								
							 
						 
						
							
							
								
								Add cannonicalization of shl X, 1 -> add X, X  
							
							... 
							
							
							
							llvm-svn: 3671 
							
						 
						
							2002-09-10 23:04:09 +00:00  
				
					
						
							
							
								 
						
							
								e103d178c5 
								
							 
						 
						
							
							
								
								Hack unneccesary now that shifts of pointers are no longer legal!  
							
							... 
							
							
							
							llvm-svn: 3640 
							
						 
						
							2002-09-10 03:50:54 +00:00  
				
					
						
							
							
								 
						
							
								b8bba6f765 
								
							 
						 
						
							
							
								
								Fix Bug: test/Regression/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll  
							
							... 
							
							
							
							llvm-svn: 3626 
							
						 
						
							2002-09-08 21:39:07 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								99f48c614d 
								
							 
						 
						
							
							
								
								Add constant prop & DIE to InstCombine, so it cleans up after itself  
							
							... 
							
							
							
							llvm-svn: 3568 
							
						 
						
							2002-09-02 04:59:56 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								b8d6e40ed7 
								
							 
						 
						
							
							
								
								- instcombine (~(a < b)) into (a >= b)  
							
							... 
							
							
							
							llvm-svn: 3406 
							
						 
						
							2002-08-20 18:24:26 +00:00  
				
					
						
							
							
								 
						
							
								9cd1e66155 
								
							 
						 
						
							
							
								
								- implemented instcombine of phi (X, X, X) -> X  
							
							... 
							
							
							
							llvm-svn: 3397 
							
						 
						
							2002-08-20 15:35:35 +00:00  
				
					
						
							
							
								 
						
							
								c59af1d257 
								
							 
						 
						
							
							
								
								Promote getelementptr instructions to constexprs if we can.  
							
							... 
							
							
							
							llvm-svn: 3368 
							
						 
						
							2002-08-17 22:21:59 +00:00  
				
					
						
							
							
								 
						
							
								3732acab85 
								
							 
						 
						
							
							
								
								Handle more cases of cast-of-cast in more general forms.  
							
							... 
							
							
							
							llvm-svn: 3347 
							
						 
						
							2002-08-15 16:15:25 +00:00  
				
					
						
							
							
								 
						
							
								0bb75910e2 
								
							 
						 
						
							
							
								
								Implement capability to fold this:  
							
							... 
							
							
							
							uint %test4(int %A, int %B) {
        %COND = setlt int %A, %B                ; <bool> [#uses=1]
        %result = cast bool %COND to uint               ; <uint> [#uses=1]
        ret uint %result
}
into a single cast instruction.
llvm-svn: 3339 
							
						 
						
							2002-08-14 23:21:10 +00:00  
				
					
						
							
							
								 
						
							
								31ae863284 
								
							 
						 
						
							
							
								
								- Fix InstCombine pass to not generate or process NOT instructions  
							
							... 
							
							
							
							- Fixed testcases to not use them either.
llvm-svn: 3315 
							
						 
						
							2002-08-14 17:51:49 +00:00  
				
					
						
							
							
								 
						
							
								8328263606 
								
							 
						 
						
							
							
								
								- Rename ConstantGenericIntegral -> ConstantIntegral  
							
							... 
							
							
							
							llvm-svn: 3300 
							
						 
						
							2002-08-13 17:50:24 +00:00  
				
					
						
							
							
								 
						
							
								e6794490ec 
								
							 
						 
						
							
							
								
								* Factor a bunch of code by using ReplaceInstUsesWith  
							
							... 
							
							
							
							* Move isMaxValue, isMinValue, isAllOnesValue to Constants.h
llvm-svn: 3290 
							
						 
						
							2002-08-12 21:17:25 +00:00  
				
					
						
							
							
								 
						
							
								6d14f2a7ae 
								
							 
						 
						
							
							
								
								New functionality for instcombine:  
							
							... 
							
							
							
							* New ReplaceInstUsesWith function to factor out tons of common code
     This needs to be used more in the future still, but it's a good start
   * New InsertNewInstBefore to allow multi-instruction replacements
   * Change getMaxValue functions to isAllOnesValue function, which doesn't
     have to CREATE/lookup a new constant.  Also the name is accurate
   * Add new isMaxValue, isMinValue, isMaxValueMinusOne, isMinValuePlusOne
     functions:  This should be moved to Constant* classes eventually
   * Implement xor X, ALLONES -> not X
   * Fold ALL setcc's of booleans away
   * Handle various SetCC's for integers against values at the end of their
     ranges, possibly off by one.  This implements the setcc-strength-reduce.ll
     testcase.
llvm-svn: 3286 
							
						 
						
							2002-08-09 23:47:40 +00:00  
				
					
						
							
							
								 
						
							
								650b6da0f9 
								
							 
						 
						
							
							
								
								Fix bug: test/Regression/Transforms/InstCombine/2002-08-02-CastTest.ll  
							
							... 
							
							
							
							Implement feature: Cast's can now be converted to bitwise AND expressions.
llvm-svn: 3225 
							
						 
						
							2002-08-02 20:00:25 +00:00  
				
					
						
							
							
								 
						
							
								ae7a0d39fd 
								
							 
						 
						
							
							
								
								* Cleanups of instcombine  
							
							... 
							
							
							
							- Reenable gep (gep x) -> x
   - Make instcombine do dead instruction elimination where it's really
     easy.  Now visitors don't have to ensure they aren't not processing
     dead instructions.
llvm-svn: 3222 
							
						 
						
							2002-08-02 19:29:35 +00:00  
				
					
						
							
							
								 
						
							
								c8b7092e54 
								
							 
						 
						
							
							
								
								* Add support for different "PassType's"  
							
							... 
							
							
							
							* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses
llvm-svn: 3113 
							
						 
						
							2002-07-26 21:12:46 +00:00  
				
					
						
							
							
								 
						
							
								b28b680155 
								
							 
						 
						
							
							
								
								*** empty log message ***  
							
							... 
							
							
							
							llvm-svn: 3016 
							
						 
						
							2002-07-23 18:06:35 +00:00  
				
					
						
							
							
								 
						
							
								b2c5cb2525 
								
							 
						 
						
							
							
								
								Disable folding g-e-p instructions into loads and stores.  
							
							... 
							
							
							
							llvm-svn: 2870 
							
						 
						
							2002-07-10 22:37:17 +00:00  
				
					
						
							
							
								 
						
							
								113f4f4609 
								
							 
						 
						
							
							
								
								MEGAPATCH checkin.  
							
							... 
							
							
							
							For details, See: docs/2002-06-25-MegaPatchInfo.txt
llvm-svn: 2779 
							
						 
						
							2002-06-25 16:13:24 +00:00  
				
					
						
							
							
								 
						
							
								9c2765d4aa 
								
							 
						 
						
							
							
								
								Fold add X, 0 for floating point types as well  
							
							... 
							
							
							
							llvm-svn: 2734 
							
						 
						
							2002-05-23 17:11:38 +00:00  
				
					
						
							
							
								 
						
							
								170ed7b6a3 
								
							 
						 
						
							
							
								
								Fix bug: test/Regression/Transforms/InstCombine/2002-05-14-SubFailure.ll  
							
							... 
							
							
							
							llvm-svn: 2627 
							
						 
						
							2002-05-14 16:44:07 +00:00  
				
					
						
							
							
								 
						
							
								053c0939e3 
								
							 
						 
						
							
							
								
								Fix bug: test/Regression/Transforms/InstCombine/2002-05-14-TouchDeletedInst.ll  
							
							... 
							
							
							
							"This testcase caused instcombine to fail because it got the same instruction on
it's worklist more than once (which is ok), but then deleted the instruction.
Since the inst stayed on the worklist, as soon as it came back up to be
processed, bad things happened, and opt asserted."
llvm-svn: 2623 
							
						 
						
							2002-05-14 15:24:07 +00:00  
				
					
						
							
							
								 
						
							
								0b18c1d64e 
								
							 
						 
						
							
							
								
								Add support for printing out statistics information when -stats is added to  
							
							... 
							
							
							
							the command line
llvm-svn: 2601 
							
						 
						
							2002-05-10 15:38:35 +00:00  
				
					
						
							
							
								 
						
							
								1fc23f382e 
								
							 
						 
						
							
							
								
								Handle setcc <global*>, 0 instructions, Global pointers are never null!  
							
							... 
							
							
							
							llvm-svn: 2582 
							
						 
						
							2002-05-09 20:11:54 +00:00  
				
					
						
							
							
								 
						
							
								ad3c495225 
								
							 
						 
						
							
							
								
								Add ability to transform (x - (y - z)) into (x + (z - y))  
							
							... 
							
							
							
							llvm-svn: 2566 
							
						 
						
							2002-05-09 01:29:19 +00:00  
				
					
						
							
							
								 
						
							
								147e975c43 
								
							 
						 
						
							
							
								
								* Combine: A-(-B) -> A + B  
							
							... 
							
							
							
							* Bugfix:  A + -B and -A + B
llvm-svn: 2561 
							
						 
						
							2002-05-08 22:46:53 +00:00  
				
					
						
							
							
								 
						
							
								b4cfa7ff97 
								
							 
						 
						
							
							
								
								Merge all individual .h files into a single Scalar.h file  
							
							... 
							
							
							
							llvm-svn: 2537 
							
						 
						
							2002-05-07 20:03:00 +00:00  
				
					
						
							
							
								 
						
							
								9b55e5a2f4 
								
							 
						 
						
							
							
								
								Reduce dependance on TransformInternals.h, instead using the TransformUtils library  
							
							... 
							
							
							
							llvm-svn: 2518 
							
						 
						
							2002-05-07 18:12:18 +00:00  
				
					
						
							
							
								 
						
							
								a6e047a5d9 
								
							 
						 
						
							
							
								
								Only do masking for unsigned values!  
							
							... 
							
							
							
							llvm-svn: 2504 
							
						 
						
							2002-05-06 18:54:59 +00:00  
				
					
						
							
							
								 
						
							
								bbbdd852b8 
								
							 
						 
						
							
							
								
								Handle X = phi Y  --> X = Y  
							
							... 
							
							
							
							llvm-svn: 2501 
							
						 
						
							2002-05-06 18:06:38 +00:00  
				
					
						
							
							
								 
						
							
								5d6bec5e26 
								
							 
						 
						
							
							
								
								Combine not (not X) -> X  
							
							... 
							
							
							
							llvm-svn: 2493 
							
						 
						
							2002-05-06 17:03:21 +00:00  
				
					
						
							
							
								 
						
							
								9fa53de7e9 
								
							 
						 
						
							
							
								
								Support more cases...  
							
							... 
							
							
							
							llvm-svn: 2490 
							
						 
						
							2002-05-06 16:49:18 +00:00  
				
					
						
							
							
								 
						
							
								f4cdbf34e5 
								
							 
						 
						
							
							
								
								Add many more instruction combination simplifications  
							
							... 
							
							
							
							llvm-svn: 2484 
							
						 
						
							2002-05-06 16:14:14 +00:00  
				
					
						
							
							
								 
						
							
								48a44f7e23 
								
							 
						 
						
							
							
								
								* Add ability to eliminate a bunch of different cascading cast variations  
							
							... 
							
							
							
							* Allow elimination of getelementptr X, uint 0 (which is a noop)
llvm-svn: 2428 
							
						 
						
							2002-05-02 17:06:02 +00:00  
				
					
						
							
							
								 
						
							
								31ba129cbe 
								
							 
						 
						
							
							
								
								Add folding rules for mul X, 0 and mul X, 2  
							
							... 
							
							
							
							llvm-svn: 2417 
							
						 
						
							2002-04-29 22:24:47 +00:00  
				
					
						
							
							
								 
						
							
								d5a847057b 
								
							 
						 
						
							
							
								
								Eliminate duplicate or unneccesary #include's  
							
							... 
							
							
							
							llvm-svn: 2397 
							
						 
						
							2002-04-29 17:42:12 +00:00  
				
					
						
							
							
								 
						
							
								37104aace8 
								
							 
						 
						
							
							
								
								Add new optional getPassName() virtual function that a Pass can override  
							
							... 
							
							
							
							to make debugging output a lot nicer.
llvm-svn: 2395 
							
						 
						
							2002-04-29 14:57:45 +00:00  
				
					
						
							
							
								 
						
							
								f12cc842b3 
								
							 
						 
						
							
							
								
								Tighten up the AnalysisUsage of lots of passes, primarily to correctly indicate whether or not they invalidate the CFGA  
							
							... 
							
							
							
							llvm-svn: 2386 
							
						 
						
							2002-04-28 21:27:06 +00:00  
				
					
						
							
							
								 
						
							
								c8e665431b 
								
							 
						 
						
							
							
								
								* Rename MethodPass class to FunctionPass  
							
							... 
							
							
							
							- Rename runOnMethod to runOnFunction
* Transform getAnalysisUsageInfo into getAnalysisUsage
  - Method is now const
  - It now takes one AnalysisUsage object to fill in instead of 3 vectors
    to fill in
  - Pass's now specify which other passes they _preserve_ not which ones
    they modify (be conservative!)
  - A pass can specify that it preserves all analyses (because it never
    modifies the underlying program)
* s/Method/Function/g in other random places as well
llvm-svn: 2333 
							
						 
						
							2002-04-27 06:56:12 +00:00  
				
					
						
							
							
								 
						
							
								2716b5e524 
								
							 
						 
						
							
							
								
								Change Constant::getNullConstant to Constant::getNullValue  
							
							... 
							
							
							
							llvm-svn: 2323 
							
						 
						
							2002-04-27 02:25:14 +00:00  
				
					
						
							
							
								 
						
							
								260ab20422 
								
							 
						 
						
							
							
								
								Significantly rework InstructionCombining to work better and to be cleaner.  
							
							... 
							
							
							
							We now use an InstVisitor to delegate to different cases that we are
interested in handling.  We also fix the FIXME's by adding users to the
worklist when appropriate.
llvm-svn: 2292 
							
						 
						
							2002-04-18 17:39:14 +00:00  
				
					
						
							
							
								 
						
							
								f40379e403 
								
							 
						 
						
							
							
								
								Store instructions always return void, so they never get a name  
							
							... 
							
							
							
							llvm-svn: 2283 
							
						 
						
							2002-04-18 14:43:54 +00:00  
				
					
						
							
							
								 
						
							
								3a60d04722 
								
							 
						 
						
							
							
								
								Eliminate cast of same type instructions.  
							
							... 
							
							
							
							llvm-svn: 2251 
							
						 
						
							2002-04-15 19:45:29 +00:00  
				
					
						
							
							
								 
						
							
								65b529fe6d 
								
							 
						 
						
							
							
								
								ConstantHandling moved into VMCore library  
							
							... 
							
							
							
							llvm-svn: 2165 
							
						 
						
							2002-04-08 20:18:09 +00:00  
				
					
						
							
							
								 
						
							
								62b7fd136e 
								
							 
						 
						
							
							
								
								Change references to the Method class to be references to the Function  
							
							... 
							
							
							
							class.  The Method class is obsolete (renamed) and all references to it
are being converted over to Function.
llvm-svn: 2144 
							
						 
						
							2002-04-07 20:49:59 +00:00  
				
					
						
							
							
								 
						
							
								bee86626e1 
								
							 
						 
						
							
							
								
								Fix bug: test/Regression/Other/2002-03-11-InstCombineHang.ll  
							
							... 
							
							
							
							llvm-svn: 1864 
							
						 
						
							2002-03-11 23:28:45 +00:00  
				
					
						
							
							
								 
						
							
								04805fa29c 
								
							 
						 
						
							
							
								
								Change over to use new style pass mechanism, now passes only expose small  
							
							... 
							
							
							
							creation functions in their public header file, unless they can help it.
llvm-svn: 1816 
							
						 
						
							2002-02-26 21:46:54 +00:00  
				
					
						
							
							
								 
						
							
								83d485b310 
								
							 
						 
						
							
							
								
								* Pull BasicBlock::pred_* and BasicBlock::succ_* out of BasicBlock.h and into  
							
							... 
							
							
							
							llvm/Support/CFG.h
* Make pred & succ iterators for intervals global functions
* Add #includes that are now neccesary because BasicBlock.h doesn't include
  InstrTypes.h anymore
llvm-svn: 1750 
							
						 
						
							2002-02-12 22:39:50 +00:00  
				
					
						
							
							
								 
						
							
								60a6591d83 
								
							 
						 
						
							
							
								
								Method.h no longer includes BasicBlock.h  
							
							... 
							
							
							
							Method::inst_* is now in llvm/Support/InstIterator.h
GraphTraits specializations for BasicBlock and Methods are now in llvm/Support/CFG.h
llvm-svn: 1746 
							
						 
						
							2002-02-12 21:07:25 +00:00  
				
					
						
							
							
								 
						
							
								ee965abc36 
								
							 
						 
						
							
							
								
								Move stuff out of the Optimizations directories into the appropriate Transforms  
							
							... 
							
							
							
							directories.  Eliminate the opt namespace.
llvm-svn: 1520 
							
						 
						
							2002-01-21 23:17:48 +00:00  
				
					
						
							
							
								 
						
							
								7f74a56e24 
								
							 
						 
						
							
							
								
								Changes to build successfully with GCC 3.02  
							
							... 
							
							
							
							llvm-svn: 1503 
							
						 
						
							2002-01-20 22:54:45 +00:00  
				
					
						
							
							
								 
						
							
								ca081257e5 
								
							 
						 
						
							
							
								
								initial checkin  
							
							... 
							
							
							
							llvm-svn: 1480 
							
						 
						
							2001-12-14 16:52:21 +00:00