Chris Lattner 
							
						 
					 
					
						
						
							
						
						79b967bd9f 
					 
					
						
						
							
							duncan's spider sense was right, I completely reversed the condition  
						
						 
						
						... 
						
						
						
						on this instcombine xform.  This fixes a miscompilation of 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119988  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-11-23 02:42:04 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						75d8f599e7 
					 
					
						
						
							
							optimize:  
						
						 
						
						... 
						
						
						
						void a(int x) { if (((1<<x)&8)==0) b(); }
into "x != 3", which occurs over 100 times in 403.gcc but in no
other program in llvm-test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119922  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-11-21 06:44:42 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						0dd3549edc 
					 
					
						
						
							
							Constant fold x == undef to undef.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107074  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-06-28 21:30:07 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c8e14b3d37 
					 
					
						
						
							
							fix incorrect folding of icmp with undef, PR6481.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97659  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-03 19:46:03 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6304b0dd63 
					 
					
						
						
							
							fix PR6195, a bug constant folding scalar -> vector compares.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94997  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-01 20:04:40 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3bf6815556 
					 
					
						
						
							
							enhance x-(-A) -> x+A to preserve NUW/NSW.  
						
						 
						
						... 
						
						
						
						Use the presence of NSW/NUW to fold "icmp (x+cst), x" to a constant in
cases where it would otherwise be undefined behavior.
Surprisingly (to me at least), this triggers hundreds of the times in
a few benchmarks: lencode, ldecode, and 466.h264ref seem to *really*
like this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91812  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-21 04:04:05 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2799bafb98 
					 
					
						
						
							
							Optimize all cases of "icmp (X+Cst), X" to something simpler.  This triggers  
						
						 
						
						... 
						
						
						
						a bunch in lencode, ldecod, spass, 176.gcc, 252.eon, among others.  It is 
also the first part of PR5822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91811  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-21 03:19:28 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6b57a797ab 
					 
					
						
						
							
							convert to filecheck  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91810  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-21 03:11:05 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0036e3a469 
					 
					
						
						
							
							simplify a transformation by making it more general.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83792  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-10-11 21:22:21 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						3e054fe9ef 
					 
					
						
						
							
							Use opt -S instead of piping bitcode output through llvm-dis.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81257  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-09-08 22:34:10 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						b1e1e82c54 
					 
					
						
						
							
							Change these tests to feed the assembly files to opt directly, instead  
						
						 
						
						... 
						
						
						
						of using llvm-as, now that opt supports this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81226  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-09-08 16:50:01 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9e17b632ec 
					 
					
						
						
							
							fix PR4837, some bugs folding vector compares.  These  
						
						 
						
						... 
						
						
						
						return a vector of i1, not i1 itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80761  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-09-02 05:12:37 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a80d668215 
					 
					
						
						
							
							Implement rdar://6480391, extending of equality icmp's to avoid a truncation.  
						
						 
						
						... 
						
						
						
						I noticed this in the code compiled for a routine using std::map, which produced
this code:
	%25 = tail call i32 @memcmp(i8* %24, i8* %23, i32 6) nounwind readonly
	%.lobit.i = lshr i32 %25, 31		; <i32> [#uses=1]
	%tmp.i = trunc i32 %.lobit.i to i8		; <i8> [#uses=1]
	%toBool = icmp eq i8 %tmp.i, 0		; <i1> [#uses=1]
	br i1 %toBool, label %bb3, label %bb4
which compiled to:
	call	L_memcmp$stub
	shrl	$31, %eax
	testb	%al, %al
	jne	LBB1_11	## 
with this change, we compile it to:
	call	L_memcmp$stub
	testl	%eax, %eax
	js	LBB1_11
This triggers all the time in common code, with patters like this:
	%169 = and i32 %ply, 1		; <i32> [#uses=1]
	%170 = trunc i32 %169 to i8		; <i8> [#uses=1]
	%toBool = icmp ne i8 %170, 0		; <i1> [#uses=1]
 	%7 = lshr i32 %6, 24		; <i32> [#uses=1]
	%9 = trunc i32 %7 to i8		; <i8> [#uses=1]
	%10 = icmp ne i8 %9, 0		; <i1> [#uses=1]
etc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61985  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-01-09 07:47:06 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						2b544beda3 
					 
					
						
						
							
							For PR1319:  
						
						 
						
						... 
						
						
						
						Upgrade tests to work with new llvm.exp version of llvm_runtest.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36013  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-14 20:13:02 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						12f591342f 
					 
					
						
						
							
							sext of compares.  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35892  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 06:57:54 +00:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f6e166b386 
					 
					
						
						
							
							new testcase  
						
						 
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35889  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-04-11 06:52:24 +00:00