55b6b2b6a9 
								
							 
						 
						
							
							
								
								Revert r152907.  
							
							... 
							
							
							
							llvm-svn: 152935 
							
						 
						
							2012-03-16 18:20:54 +00:00  
				
					
						
							
							
								 
						
							
								a2a26b546c 
								
							 
						 
						
							
							
								
								The alignment of the pointer part of the store instruction may have an  
							
							... 
							
							
							
							alignment. If that's the case, then we want to make sure that we don't increase
the alignment of the store instruction. Because if we increase it to be "more
aligned" than the pointer, code-gen may use instructions which require a greater
alignment than the pointer guarantees.
<rdar://problem/11043589>
llvm-svn: 152907 
							
						 
						
							2012-03-16 07:40:08 +00:00  
				
					
						
							
							
								 
						
							
								8ddfc09e7a 
								
							 
						 
						
							
							
								
								Use the getFirstInsertionPt() method instead of getFirstNonPHI + an 'isa<>'  
							
							... 
							
							
							
							check for a LandingPadInst.
llvm-svn: 137745 
							
						 
						
							2011-08-16 20:45:24 +00:00  
				
					
						
							
							
								 
						
							
								be33e8d58d 
								
							 
						 
						
							
							
								
								A few places where we want to skip the landingpad instruction for insertion.  
							
							... 
							
							
							
							llvm-svn: 137712 
							
						 
						
							2011-08-16 04:52:55 +00:00  
				
					
						
							
							
								 
						
							
								8bc586e770 
								
							 
						 
						
							
							
								
								Update instcombine for atomic load/store.  
							
							... 
							
							
							
							llvm-svn: 137664 
							
						 
						
							2011-08-15 22:09:40 +00:00  
				
					
						
							
							
								 
						
							
								d1b7849d49 
								
							 
						 
						
							
							
								
								Convert GetElementPtrInst to use ArrayRef.  
							
							... 
							
							
							
							llvm-svn: 135904 
							
						 
						
							2011-07-25 09:48:08 +00:00  
				
					
						
							
							
								 
						
							
								040dd82f44 
								
							 
						 
						
							
							
								
								Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use  
							
							... 
							
							
							
							ArrayRef.
llvm-svn: 135761 
							
						 
						
							2011-07-22 08:16:57 +00:00  
				
					
						
							
							
								 
						
							
								71f19ac6af 
								
							 
						 
						
							
							
								
								Fix an MSVC warning, caused by a case I missed when converting  
							
							... 
							
							
							
							ConstantExpr::getGetElementPtr to use ArrayRef.
llvm-svn: 135758 
							
						 
						
							2011-07-22 07:54:01 +00:00  
				
					
						
							
							
								 
						
							
								229907cd11 
								
							 
						 
						
							
							
								
								land David Blaikie's patch to de-constify Type, with a few tweaks.  
							
							... 
							
							
							
							llvm-svn: 135375 
							
						 
						
							2011-07-18 04:54:35 +00:00  
				
					
						
							
							
								 
						
							
								35211c6091 
								
							 
						 
						
							
							
								
								Final step of instcombine debuginfo; switch a couple more places over to InsertNewInstWith, and use setDebugLoc for the cases which can't be easily handled by the automated mechanisms.  
							
							... 
							
							
							
							llvm-svn: 132167 
							
						 
						
							2011-05-27 00:19:40 +00:00  
				
					
						
							
							
								 
						
							
								41e509a33d 
								
							 
						 
						
							
							
								
								More instcombine cleanup, towards improving debug line info.  
							
							... 
							
							
							
							llvm-svn: 131604 
							
						 
						
							2011-05-18 23:58:37 +00:00  
				
					
						
							
							
								 
						
							
								52131344a2 
								
							 
						 
						
							
							
								
								Remove PHINode::reserveOperandSpace(). Instead, add a parameter to  
							
							... 
							
							
							
							PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128537 
							
						 
						
							2011-03-30 11:28:46 +00:00  
				
					
						
							
							
								 
						
							
								b452db02f0 
								
							 
						 
						
							
							
								
								This case is solved by Scalar Replacement of Aggregates (DT) and  
							
							... 
							
							
							
							Early CSE pass so this patch reverts it to original source code.
llvm-svn: 127574 
							
						 
						
							2011-03-14 01:21:00 +00:00  
				
					
						
							
							
								 
						
							
								b7538c71e1 
								
							 
						 
						
							
							
								
								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
llvm-svn: 127565 
							
						 
						
							2011-03-13 14:05:51 +00:00  
				
					
						
							
							
								 
						
							
								2e939f7c3c 
								
							 
						 
						
							
							
								
								This patch removes some of useless instructions generated by bitfield access.  
							
							... 
							
							
							
							llvm-svn: 127539 
							
						 
						
							2011-03-12 12:18:44 +00:00  
				
					
						
							
							
								 
						
							
								fbb482b314 
								
							 
						 
						
							
							
								
								llvm.dbg.declare intrinsic does not use any llvm::Values. It's magic!  
							
							... 
							
							
							
							llvm-svn: 127282 
							
						 
						
							2011-03-08 22:12:11 +00:00  
				
					
						
							
							
								 
						
							
								75b5d27b84 
								
							 
						 
						
							
							
								
								Spelling fix: consequtive -> consecutive.  
							
							... 
							
							
							
							llvm-svn: 125563 
							
						 
						
							2011-02-15 09:23:02 +00:00  
				
					
						
							
							
								 
						
							
								6fcd32e7d7 
								
							 
						 
						
							
							
								
								Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils.  
							
							... 
							
							
							
							llvm-svn: 122554 
							
						 
						
							2010-12-25 20:37:57 +00:00  
				
					
						
							
							
								 
						
							
								2e20dfb0f2 
								
							 
						 
						
							
							
								
								Fix a case where instcombine was stripping metadata (and alignment)  
							
							... 
							
							
							
							from stores when folding in bitcasts.
llvm-svn: 117265 
							
						 
						
							2010-10-25 16:16:27 +00:00  
				
					
						
							
							
								 
						
							
								376597c13e 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 112575 
							
						 
						
							2010-08-31 04:41:06 +00:00  
				
					
						
							
							
								 
						
							
								84c29a096b 
								
							 
						 
						
							
							
								
								Re-apply r111568 with a fix for the clang self-host.  
							
							... 
							
							
							
							llvm-svn: 111665 
							
						 
						
							2010-08-20 18:24:43 +00:00  
				
					
						
							
							
								 
						
							
								43057cd56a 
								
							 
						 
						
							
							
								
								Revert r111568 to unbreak clang self-host.  
							
							... 
							
							
							
							llvm-svn: 111571 
							
						 
						
							2010-08-19 23:25:16 +00:00  
				
					
						
							
							
								 
						
							
								bb723b228a 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 111568 
							
						 
						
							2010-08-19 22:15:40 +00:00  
				
					
						
							
							
								 
						
							
								3619660529 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 110128 
							
						 
						
							2010-08-03 18:20:32 +00:00  
				
					
						
							
							
								 
						
							
								dde79d8f1a 
								
							 
						 
						
							
							
								
								mass elimination of reliance on automatic iterator dereferencing  
							
							... 
							
							
							
							llvm-svn: 109103 
							
						 
						
							2010-07-22 13:36:47 +00:00  
				
					
						
							
							
								 
						
							
								1b787df129 
								
							 
						 
						
							
							
								
								cache result of operator*  
							
							... 
							
							
							
							llvm-svn: 108150 
							
						 
						
							2010-07-12 15:48:26 +00:00  
				
					
						
							
							
								 
						
							
								60a346d0f1 
								
							 
						 
						
							
							
								
								do not repeatedly dereference use_iterator  
							
							... 
							
							
							
							llvm-svn: 107962 
							
						 
						
							2010-07-09 12:23:50 +00:00  
				
					
						
							
							
								 
						
							
								826bdf8c10 
								
							 
						 
						
							
							
								
								Move FindAvailableLoadedValue isSafeToLoadUnconditionally out of  
							
							... 
							
							
							
							lib/Transforms/Utils and into lib/Analysis so that Analysis passes
can use them.
llvm-svn: 104949 
							
						 
						
							2010-05-28 16:19:17 +00:00  
				
					
						
							
							
								 
						
							
								df5d7dcef1 
								
							 
						 
						
							
							
								
								Teach instcombine to promote alloca array sizes.  
							
							... 
							
							
							
							llvm-svn: 104945 
							
						 
						
							2010-05-28 15:09:00 +00:00  
				
					
						
							
							
								 
						
							
								19d0b47b1f 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 96344 
							
						 
						
							2010-02-16 11:11:14 +00:00  
				
					
						
							
							
								 
						
							
								9dff9bec31 
								
							 
						 
						
							
							
								
								Uniformize the names of type predicates: rather than having isFloatTy and  
							
							... 
							
							
							
							isInteger, we now have isFloatTy and isIntegerTy.  Requested by Chris!
llvm-svn: 96223 
							
						 
						
							2010-02-15 16:12:20 +00:00  
				
					
						
							
							
								 
						
							
								56600a15ad 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 94875 
							
						 
						
							2010-01-30 04:42:39 +00:00  
				
					
						
							
							
								 
						
							
								4b71b6c179 
								
							 
						 
						
							
							
								
								Use more specific types to avoid casts.  No functionality change.  
							
							... 
							
							
							
							llvm-svn: 94863 
							
						 
						
							2010-01-30 00:41:10 +00:00  
				
					
						
							
							
								 
						
							
								1b8453067b 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 94850 
							
						 
						
							2010-01-29 22:39:21 +00:00  
				
					
						
							
							
								 
						
							
								7c42b9d51e 
								
							 
						 
						
							
							
								
								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.
llvm-svn: 94829 
							
						 
						
							2010-01-29 19:19:08 +00:00  
				
					
						
							
							
								 
						
							
								5f8c8c034a 
								
							 
						 
						
							
							
								
								Keep ignoring pointer-to-pointer bitcasts  
							
							... 
							
							
							
							llvm-svn: 94194 
							
						 
						
							2010-01-22 19:05:05 +00:00  
				
					
						
							
							
								 
						
							
								5f5abd598c 
								
							 
						 
						
							
							
								
								No need to look through bitcasts for DbgInfoIntrinsic  
							
							... 
							
							
							
							llvm-svn: 94112 
							
						 
						
							2010-01-21 23:07:15 +00:00  
				
					
						
							
							
								 
						
							
								84bd316bd6 
								
							 
						 
						
							
							
								
								Fix comment.  
							
							... 
							
							
							
							llvm-svn: 93831 
							
						 
						
							2010-01-19 01:20:15 +00:00  
				
					
						
							
							
								 
						
							
								a65e2f7304 
								
							 
						 
						
							
							
								
								split out load/store/alloca.  
							
							... 
							
							
							
							llvm-svn: 92685 
							
						 
						
							2010-01-05 05:57:49 +00:00