Chris Lattner 
							
						 
					 
					
						
						
							
						
						6fb5a4a5f8 
					 
					
						
						
							
							Add two optimizations.  The first folds (X+Y)-X -> Y  
						
						... 
						
						
						
						The second folds operations into selects, e.g. (select C, (X+Y), (Y+Z))
-> (Y+(select C, X, Z)
This occurs a few times across spec, e.g.
         select    add/sub
mesa:    83        0
povray:  5         2
gcc      4         2
parser   0         22
perlbmk  13        30
twolf    0         3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19706  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-19 21:50:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a3fd1c569c 
					 
					
						
						
							
							Delete PHI nodes that are not dead but are locked in a cycle of single  
						
						... 
						
						
						
						useness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19629  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-17 05:10:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b352fa5853 
					 
					
						
						
							
							Move code out of indentation one level to make it easier to read.  
						
						... 
						
						
						
						Disable the xform for < > cases.  It turns out that the following is being
miscompiled:
bool %test(sbyte %S) {
        %T = cast sbyte %S to uint
        %V = setgt uint %T, 255
        ret bool %V
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19628  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-17 03:20:02 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						906ab50acf 
					 
					
						
						
							
							Fix some bugs in an xform added yesterday.  This fixes Prolangs-C/allroots.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19553  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-14 17:35:12 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6f7f02fdec 
					 
					
						
						
							
							Fix a compile crash on spiff  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19552  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-14 17:17:59 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4401c9cabe 
					 
					
						
						
							
							if two gep comparisons only differ by one index, compare that index directly.  
						
						... 
						
						
						
						This allows us to better optimize begin() -> end() comparisons in common cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19542  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-14 00:20:05 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0b84c80c08 
					 
					
						
						
							
							Do not overrun iterators.  This fixes a 176.gcc crash  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19541  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 23:26:48 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						87875dac89 
					 
					
						
						
							
							Turn select C, (X+Y), (X-Y) --> (X+(select C, Y, (-Y))).  This occurs in  
						
						... 
						
						
						
						the 'sim' program and probably elsewhere.  In sim, it comes up for cases
like this:
#define round(x) ((x)>0.0 ? (x)+0.5 : (x)-0.5)
double G;
void T(double X) { G = round(X); }
(it uses the round macro a lot).  This changes the LLVM code from:
        %tmp.1 = setgt double %X, 0.000000e+00          ; <bool> [#uses=1]
        %tmp.4 = add double %X, 5.000000e-01            ; <double> [#uses=1]
        %tmp.6 = sub double %X, 5.000000e-01            ; <double> [#uses=1]
        %mem_tmp.0 = select bool %tmp.1, double %tmp.4, double %tmp.6
        store double %mem_tmp.0, double* %G
to:
        %tmp.1 = setgt double %X, 0.000000e+00          ; <bool> [#uses=1]
        %mem_tmp.0.p = select bool %tmp.1, double 5.000000e-01, double -5.000000e-01
        %mem_tmp.0 = add double %mem_tmp.0.p, %X
        store double %mem_tmp.0, double* %G
        ret void
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19537  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 22:52:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e9d782b7be 
					 
					
						
						
							
							Implement an optimization for == and != comparisons like this:  
						
						... 
						
						
						
						_Bool test2(int X, int Y) {
  return &arr[X][Y] == arr;
}
instead of generating this:
bool %test2(int %X, int %Y) {
        %tmp.3.idx = mul int %X, 160            ; <int> [#uses=1]
        %tmp.3.idx1 = shl int %Y, ubyte 2               ; <int> [#uses=1]
        %tmp.3.offs2 = sub int 0, %tmp.3.idx            ; <int> [#uses=1]
        %tmp.7 = seteq int %tmp.3.idx1, %tmp.3.offs2            ; <bool> [#uses=1]
        ret bool %tmp.7
}
generate this:
bool %test2(int %X, int %Y) {
        seteq int %X, 0         ; <bool>:0 [#uses=1]
        seteq int %Y, 0         ; <bool>:1 [#uses=1]
        %tmp.7 = and bool %0, %1                ; <bool> [#uses=1]
        ret bool %tmp.7
}
This idiom occurs in C++ programs when iterating from begin() to end(),
in a vector or array.  For example, we now compile this:
void test(int X, int Y) {
  for (int *i = arr; i != arr+100; ++i)
    foo(*i);
}
to this:
no_exit:                ; preds = %entry, %no_exit
	...
        %exitcond = seteq uint %indvar.next, 100                ; <bool> [#uses=1]
        br bool %exitcond, label %return, label %no_exit
instead of this:
no_exit:                ; preds = %entry, %no_exit
	...
        %inc5 = getelementptr [100 x [40 x int]]* %arr, int 0, int 0, int %inc.rec              ; <int*> [#uses=1]
        %tmp.8 = seteq int* %inc5, getelementptr ([100 x [40 x int]]* %arr, int 0, int 100, int 0)              ; <bool> [#uses=1]
        %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
        br bool %tmp.8, label %return, label %no_exit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19536  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 22:25:21 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5bdf04cc8e 
					 
					
						
						
							
							Fix some bugs in code I didn't mean to check in.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19534  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 20:40:58 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						574da9ba0b 
					 
					
						
						
							
							Fix a crash compiling 129.compress  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19533  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 20:14:25 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						652f3cf76f 
					 
					
						
						
							
							Fix uint64_t -> unsigned VS warnings.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19381  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-08 19:42:22 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6e7ba45460 
					 
					
						
						
							
							This is a bulk commit that implements the following primary improvements:  
						
						... 
						
						
						
						* We can now fold cast instructions into select instructions that
    have at least one constant operand.
  * We now optimize expressions more aggressively based on bits that are
    known to be zero.  These optimizations occur a lot in code that uses
    bitfields even in simple ways.
  * We now turn more cast-cast sequences into AND instructions.  Before we
    would only do this if it if all types were unsigned.  Now only the
    middle type needs to be unsigned (guaranteeing a zero extend).
  * We transform sign extensions into zero extensions in several cases.
This corresponds to these test/Regression/Transforms/InstCombine testcases:
  2004-11-22-Missed-and-fold.ll
  and.ll: test28-29
  cast.ll: test21-24
  and-or-and.ll
  cast-cast-to-and.ll
  zeroext-and-reduce.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19220  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-01 16:22:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0ce8580fcd 
					 
					
						
						
							
							Constant exprs are not efficiently negatable in practice.  This disables  
						
						... 
						
						
						
						turning X - (constantexpr) into X + (-constantexpr) among other things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18935  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-14 20:08:06 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						857e8cdd65 
					 
					
						
						
							
							Optimize div/rem + select combinations more.  
						
						... 
						
						
						
						In particular, implement div.ll:test10 and rem.ll:test4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18838  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-12 21:48:58 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						13eaf4f14d 
					 
					
						
						
							
							note to self: Do not check in debugging code!  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18693  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-09 07:15:52 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						96a52a6f6c 
					 
					
						
						
							
							Implement trivial sinking for load instructions.  This causes us to sink 567 loads in spec  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18692  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-09 07:14:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ea1c45405d 
					 
					
						
						
							
							Do extremely simple sinking of instructions when they are only used in a  
						
						... 
						
						
						
						successor block.  This turns cases like this:
x = a op b
if (c) {
  use x
}
into:
if (c) {
  x = a op b
  use x
}
This triggers 3965 times in spec, and is tested by
Regression/Transforms/InstCombine/sink_instruction.ll
This appears to expose a bug in the X86 backend for 177.mesa, which I'm
looking in to.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18677  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-08 23:43:58 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						54a96a2ad6 
					 
					
						
						
							
							Fix this regression and remove the XFAIL from this test.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18674  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-08 23:10:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2a0cd9c9b5 
					 
					
						
						
							
							Fix Transforms/InstCombine/2004-12-08-RemInfiniteLoop.ll  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18670  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-12-08 22:20:34 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						6731d5c494 
					 
					
						
						
							
							Fix for PR454:  
						
						... 
						
						
						
						* Make sure we handle signed to unsigned conversion correctly
* Move this visitSetCondInst case to its own method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18312  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-28 21:31:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						646641e02c 
					 
					
						
						
							
							Implement Regression/Transforms/InstCombine/getelementptr_cast.ll, which  
						
						... 
						
						
						
						occurs many times in crafty
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18273  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-27 17:55:46 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						954f66a8cd 
					 
					
						
						
							
							Delete stoppoints that occur for the same source line.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17970  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-18 21:41:39 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						50e60c7026 
					 
					
						
						
							
							Quiet warnings on the persephone tester  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17821  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-15 05:54:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b58934484b 
					 
					
						
						
							
							This optimization makes MANY phi nodes that all have the same incoming value.  
						
						... 
						
						
						
						If this happens, detect it early instead of relying on instcombine to notice
it later.  This can be a big speedup, because PHI nodes can have many
incoming values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17741  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-14 19:29:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						bac32866a7 
					 
					
						
						
							
							Implement instcombine/phi.ll:test6 - pulling operations through PHI nodes.  
						
						... 
						
						
						
						This exposes subsequent optimization possiblities and reduces code size.
This triggers 1423 times in spec.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17740  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-14 19:13:23 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						711b3402aa 
					 
					
						
						
							
							Transform this:  
						
						... 
						
						
						
						%X = alloca ...
  %Y = alloca ...
    X == Y
into false.  This allows us to simplify some stuff in eon (and probably
many other C++ programs) where operator= was checking for self assignment.
Folding this allows us to SROA several additional structs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17735  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-14 07:33:16 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						50af16a97b 
					 
					
						
						
							
							Simplify handling of shifts to be the same as we do for adds.  Add support  
						
						... 
						
						
						
						for (X * C1) + (X * C2) (where * can be mul or shl), allowing us to fold:
   Y+Y+Y+Y+Y+Y+Y+Y
into
         %tmp.8 = shl long %Y, ubyte 3           ; <long> [#uses=1]
instead of
        %tmp.4 = shl long %Y, ubyte 2           ; <long> [#uses=1]
        %tmp.12 = shl long %Y, ubyte 2          ; <long> [#uses=1]
        %tmp.8 = add long %tmp.4, %tmp.12               ; <long> [#uses=1]
This implements add.ll:test25
Also add support for (X*C1)-(X*C2) -> X*(C1-C2), implementing sub.ll:test18
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17704  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-13 19:50:12 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						65aedc1a4e 
					 
					
						
						
							
							Fold:  
						
						... 
						
						
						
						(X + (X << C2)) --> X * ((1 << C2) + 1)
   ((X << C2) + X) --> X * ((1 << C2) + 1)
This means that we now canonicalize "Y+Y+Y" into:
        %tmp.2 = mul long %Y, 3         ; <long> [#uses=1]
instead of:
        %tmp.10 = shl long %Y, ubyte 1          ; <long> [#uses=1]
        %tmp.6 = add long %Y, %tmp.10               ; <long> [#uses=1]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17701  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-13 19:31:40 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f158092801 
					 
					
						
						
							
							Fix some warnings on VC++  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17481  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-05 04:45:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d308f8a87f 
					 
					
						
						
							
							* Rearrange code slightly  
						
						... 
						
						
						
						* Disable broken transforms for simplifying (setcc (cast X to larger), CI)
  where CC is not != or ==
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17422  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-02 03:50:32 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dc78122242 
					 
					
						
						
							
							Hrm, this code was severely botched.  As it turns out, this patch:  
						
						... 
						
						
						
						http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20041018/019708.html 
exposed ANOTHER latent bug in this xform, which caused Prolangs-C/bison to fill
the zion nightly tester disk up and make the tester barf.
This is obviously not a good thing, so lets fix this bug shall we? :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17276  91177308-0d34-0410-b5e6-96231b3b80d8 
					
						2004-10-27 05:57:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9b9918246c 
					 
					
						
						
							
							Fix a bug Nate noticed, where we miscompiled a simple testcase  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17157  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-22 04:53:16 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						17be63552a 
					 
					
						
						
							
							Turn things with obviously undefined semantics into 'store -> null'  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17110  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-18 02:59:09 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						77bcee74da 
					 
					
						
						
							
							My friend the invoke instruction does not dominate all basic blocks if it  
						
						... 
						
						
						
						occurs in the entry node of a function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17109  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-18 01:48:31 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ca45930548 
					 
					
						
						
							
							Remove printout, realize that instructions in the entry block dominate all  
						
						... 
						
						
						
						other blocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17099  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-17 21:31:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c30bda7540 
					 
					
						
						
							
							hasConstantValue will soon return instructions that don't dominate the PHI node,  
						
						... 
						
						
						
						so prepare for this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17095  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-17 21:22:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						79a564caa7 
					 
					
						
						
							
							Fix a type violation  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17069  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-16 23:28:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6e758aee74 
					 
					
						
						
							
							Kill the bogon that slipped into my buffer before I committed.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17067  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-16 19:46:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						061718cba8 
					 
					
						
						
							
							Implement InstCombine/getelementptr.ll:test9, which is the source of many  
						
						... 
						
						
						
						ugly and giant constnat exprs in some programs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17066  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-16 19:44:59 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e87597fb75 
					 
					
						
						
							
							Optimize instructions involving undef values.  For example X+undef == undef.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17047  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-16 18:11:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						35b9e48cfd 
					 
					
						
						
							
							Transform memmove -> memcpy when the source is obviously constant memory.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16932  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-12 04:52:52 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6a9fdfaec8 
					 
					
						
						
							
							Reenable the transform, turning X/-10 < 1 into X > -10  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16918  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-11 19:40:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a052f8297a 
					 
					
						
						
							
							Implement sub.ll:test17, -X/C -> X/-C  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16863  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-09 02:50:40 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						340a05fb3a 
					 
					
						
						
							
							Temporarily disable a buggy transformation until it can be fixed.  This fixes  
						
						... 
						
						
						
						254.gap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16853  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-08 19:15:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b99d6b1cac 
					 
					
						
						
							
							Instcombine (X & FF00) + xx00  -> (X+xx00) & FF00, implementing and.ll:test27  
						
						... 
						
						
						
						This comes up when doing adds to bitfield elements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16836  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-08 05:07:56 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1f7e160f77 
					 
					
						
						
							
							Little patch to turn (shl (add X, 123), 4) -> (add (shl X, 4), 123 << 4)  
						
						... 
						
						
						
						This triggers in cases of bitfield additions, opening opportunities for
future improvements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16834  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-08 03:46:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						91ccc15b45 
					 
					
						
						
							
							Instcombine: -(X sdiv C)  -> (X sdiv -C), tested by sub.ll:test16  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16769  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-06 15:08:25 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a71989f11b 
					 
					
						
						
							
							Hrm, debugging printouts do not need to be in here  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16598  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-09-29 21:21:14 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a96879a26d 
					 
					
						
						
							
							* Pull range optimization code out into new InsertRangeTest function.  
						
						... 
						
						
						
						* SubOne/AddOne functions always return ConstantInt, declare them as such
* Pull code for handling setcc X, cst, where cst is at the end of the range,
  or cc is LE or GE up earlier in visitSetCondInst.  This reduces #iterations
  in some cases.
* Fold: (div X, C1) op C2 -> range check, implementing div.ll:test6 - test9.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16588  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-09-29 17:40:11 +00:00