Jin-Gu Kang 
							
						 
					 
					
						
						
							
						
						198e97c423 
					 
					
						
						
							
							Add comment as following:  
						
						... 
						
						
						
						load and store reference same memory location, the memory location
is represented by getelementptr with two uses (load and store) and
the getelementptr's base is alloca with single use. At this point,
instructions from alloca to store can be removed.
(this pattern is generated when bitfield is accessed.)
For example,
%u = alloca %struct.test, align 4               ; [#uses=1]
%0 = getelementptr inbounds %struct.test* %u, i32 0, i32 0;[#uses=2]
%1 = load i8* %0, align 4                       ; [#uses=1]
%2 = and i8 %1, -16                             ; [#uses=1]
%3 = or i8 %2, 5                                ; [#uses=1]
store i8 %3, i8* %0, align 4
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127565  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-13 14:05:51 +00:00 
						 
				 
			
				
					
						
							
							
								Jin-Gu Kang 
							
						 
					 
					
						
						
							
						
						c5c03f9024 
					 
					
						
						
							
							This patch removes some of useless instructions generated by bitfield access.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127539  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-12 12:18:44 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						5aa3fa6d82 
					 
					
						
						
							
							llvm.dbg.declare intrinsic does not use any llvm::Values. It's magic!  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127282  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-08 22:12:11 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						ab4c366274 
					 
					
						
						
							
							Spelling fix: consequtive -> consecutive.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125563  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-15 09:23:02 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						687140c818 
					 
					
						
						
							
							Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122554  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-25 20:37:57 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						17a0bf996f 
					 
					
						
						
							
							Fix a case where instcombine was stripping metadata (and alignment)  
						
						... 
						
						
						
						from stores when folding in bitcasts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117265  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-10-25 16:16:27 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						c97fb52799 
					 
					
						
						
							
							Remove r111665, which implemented store-narrowing in InstCombine.  Chris discovered a miscompilation in it, and it's not easily  
						
						... 
						
						
						
						fixable at the optimizer level. I'll investigate reimplementing it in DAGCombine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112575  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-31 04:41:06 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						a4cba04a03 
					 
					
						
						
							
							Re-apply r111568 with a fix for the clang self-host.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111665  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-20 18:24:43 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						45c3b65eb7 
					 
					
						
						
							
							Revert r111568 to unbreak clang self-host.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111571  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-19 23:25:16 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9419cab4c3 
					 
					
						
						
							
							When a set of bitmask operations, typically from a bitfield initialization, only modifies the low bytes of a value,  
						
						... 
						
						
						
						we can narrow the store to only over-write the affected bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111568  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-19 22:15:40 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						0fd353376b 
					 
					
						
						
							
							Make instcombine set explicit alignments on load or store  
						
						... 
						
						
						
						instructions with alignment 0, so that subsequent passes don't
need to bother checking the TargetData ABI size manually.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110128  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-03 18:20:32 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						96f1d8ebdd 
					 
					
						
						
							
							mass elimination of reliance on automatic iterator dereferencing  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109103  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-22 13:36:47 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						a9b8338bfa 
					 
					
						
						
							
							cache result of operator*  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108150  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-12 15:48:26 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						b654435712 
					 
					
						
						
							
							do not repeatedly dereference use_iterator  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107962  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-09 12:23:50 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						dd9344f3fa 
					 
					
						
						
							
							Move FindAvailableLoadedValue isSafeToLoadUnconditionally out of  
						
						... 
						
						
						
						lib/Transforms/Utils and into lib/Analysis so that Analysis passes
can use them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104949  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-05-28 16:19:17 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						05d6253727 
					 
					
						
						
							
							Teach instcombine to promote alloca array sizes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104945  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-05-28 15:09:00 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						1df9859c40 
					 
					
						
						
							
							There are two ways of checking for a given type, for example isa<PointerType>(T)  
						
						... 
						
						
						
						and T->isPointerTy().  Convert most instances of the first form to the second form.
Requested by Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-16 11:11:14 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						b0bc6c361d 
					 
					
						
						
							
							Uniformize the names of type predicates: rather than having isFloatTy and  
						
						... 
						
						
						
						isInteger, we now have isFloatTy and isIntegerTy.  Requested by Chris!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-15 16:12:20 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						49db68fba0 
					 
					
						
						
							
							Check alignment of loads when deciding whether it is safe to execute them  
						
						... 
						
						
						
						unconditionally.  Besides checking the offset, also check that the underlying
object is aligned as much as the load itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94875  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-30 04:42:39 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						6ecfccfd55 
					 
					
						
						
							
							Use more specific types to avoid casts.  No functionality change.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94863  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-30 00:41:10 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						fb2ea6130d 
					 
					
						
						
							
							Preserve load alignment in instcombine transformations.  I've been unable to  
						
						... 
						
						
						
						create a testcase where this matters.  The select+load transformation only
occurs when isSafeToLoadUnconditionally is true, and in those situations,
instcombine also changes the underlying objects to be aligned.  This seems
like a good idea regardless, and I've verified that it doesn't pessimize
the subsequent realignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94850  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-29 22:39:21 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						3eb4f7e2dd 
					 
					
						
						
							
							Improve isSafeToLoadUnconditionally to recognize that GEPs with constant  
						
						... 
						
						
						
						indices are safe if the result is known to be within the bounds of the
underlying object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94829  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-29 19:19:08 +00:00 
						 
				 
			
				
					
						
							
							
								Victor Hernandez 
							
						 
					 
					
						
						
							
						
						29fa5e9886 
					 
					
						
						
							
							Keep ignoring pointer-to-pointer bitcasts  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94194  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-22 19:05:05 +00:00 
						 
				 
			
				
					
						
							
							
								Victor Hernandez 
							
						 
					 
					
						
						
							
						
						a4c77622f7 
					 
					
						
						
							
							No need to look through bitcasts for DbgInfoIntrinsic  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94112  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-21 23:07:15 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						d3dc3cc98f 
					 
					
						
						
							
							Fix comment.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93831  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-19 01:20:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8d9b8d717e 
					 
					
						
						
							
							split out load/store/alloca.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92685  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 05:57:49 +00:00