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  
				
					
						
							
							
								 
						
							
								e0938d8a87 
								
							 
						 
						
							
							
								
								(Almost) always call reserveOperandSpace() on newly created PHINodes.  
							
							... 
							
							
							
							llvm-svn: 128535 
							
						 
						
							2011-03-30 11:19:20 +00:00  
				
					
						
							
							
								 
						
							
								0bb2ad2cf7 
								
							 
						 
						
							
							
								
								Constant folding support for calls to umul.with.overflow(), basically identical to the smul.with.overflow() code.  
							
							... 
							
							
							
							llvm-svn: 128379 
							
						 
						
							2011-03-27 14:26:13 +00:00  
				
					
						
							
							
								 
						
							
								c4f0ab397c 
								
							 
						 
						
							
							
								
								Revert r128140 for now.  
							
							... 
							
							
							
							llvm-svn: 128149 
							
						 
						
							2011-03-23 15:51:12 +00:00  
				
					
						
							
							
								 
						
							
								9ed8d93f55 
								
							 
						 
						
							
							
								
								A global variable with internal linkage where all uses are in one function and whose address is never taken is a non-escaping local object and can't alias anything else.  
							
							... 
							
							
							
							llvm-svn: 128140 
							
						 
						
							2011-03-23 02:19:48 +00:00  
				
					
						
							
							
								 
						
							
								f0469af63e 
								
							 
						 
						
							
							
								
								Fix INT_MIN gotcha pointed out by Eli Friedman.  
							
							... 
							
							
							
							llvm-svn: 128028 
							
						 
						
							2011-03-21 21:40:32 +00:00  
				
					
						
							
							
								 
						
							
								1c4b42d00f 
								
							 
						 
						
							
							
								
								Avoid creating canonical induction variables for non-native types.  
							
							... 
							
							
							
							For example, on 32-bit architecture, don't promote all uses of the IV
to 64-bits just because one use is a 64-bit cast.
Alternate implementation of the patch by Arnaud de Grandmaison.
llvm-svn: 127884 
							
						 
						
							2011-03-18 16:50:32 +00:00  
				
					
						
							
							
								 
						
							
								87716c93c2 
								
							 
						 
						
							
							
								
								Added isValidRewrite() to check the result of ScalarEvolutionExpander.  
							
							... 
							
							
							
							SCEV may generate expressions composed of multiple pointers, which can
lead to invalid GEP expansion. Until we can teach SCEV to follow strict
pointer rules, make sure no bad GEPs creep into IR.
Fixes rdar://problem/9038671.
llvm-svn: 127839 
							
						 
						
							2011-03-17 23:51:11 +00:00  
				
					
						
							
							
								 
						
							
								b4d763b37d 
								
							 
						 
						
							
							
								
								Add comments for the demanglings. Correct mangled form of operator delete!  
							
							... 
							
							
							
							llvm-svn: 127801 
							
						 
						
							2011-03-17 05:20:12 +00:00  
				
					
						
							
							
								 
						
							
								c1f8658368 
								
							 
						 
						
							
							
								
								Add C++ global operator {new,new[],delete,delete[]}(unsigned {int,long}) to the  
							
							... 
							
							
							
							memory builtins as equivalent to malloc/free.
This is different from any attribute we have. For example, you can delete the
allocators when their result is unused, but you can't collapse two calls to the
same function, even if no global/memory state has changed in between. The
noalias return states that the result does not alias any other pointer, but
instcombine optimizes malloc() as though the result is non-null for the purpose
of eliminating unused pointers.
llvm-svn: 127673 
							
						 
						
							2011-03-15 07:31:32 +00:00  
				
					
						
							
							
								 
						
							
								a34f1b1f10 
								
							 
						 
						
							
							
								
								Remove getMinusSCEVForExitTest().  
							
							... 
							
							
							
							This function performed acrobatics to prove no-self-wrap, which we now
have for free.
llvm-svn: 127643 
							
						 
						
							2011-03-15 01:16:14 +00:00  
				
					
						
							
							
								 
						
							
								f6b01ff422 
								
							 
						 
						
							
							
								
								Propagate SCEV no-wrap flags whenever possible.  
							
							... 
							
							
							
							This needs review.
llvm-svn: 127638 
							
						 
						
							2011-03-15 00:37:00 +00:00  
				
					
						
							
							
								 
						
							
								e92dcceab7 
								
							 
						 
						
							
							
								
								Negating a recurrence preserves no-self-wrap.  
							
							... 
							
							
							
							llvm-svn: 127593 
							
						 
						
							2011-03-14 17:38:54 +00:00  
				
					
						
							
							
								 
						
							
								f1781db622 
								
							 
						 
						
							
							
								
								HowFarToZero can compute a trip count as long as the recurrence has no-self-wrap.  
							
							... 
							
							
							
							llvm-svn: 127591 
							
						 
						
							2011-03-14 17:28:02 +00:00  
				
					
						
							
							
								 
						
							
								8b55b736b1 
								
							 
						 
						
							
							
								
								Added SCEV::NoWrapFlags to manage unsigned, signed, and self wrap  
							
							... 
							
							
							
							properties.
Added the self-wrap flag for SCEV::AddRecExpr.
A slew of temporary FIXMEs indicate the intention of the no-self-wrap flag
without changing behavior in this revision.
llvm-svn: 127590 
							
						 
						
							2011-03-14 16:50:06 +00:00  
				
					
						
							
							
								 
						
							
								5acc751b6f 
								
							 
						 
						
							
							
								
								Teach ComputeMaskedBits about sub nsw.  
							
							... 
							
							
							
							llvm-svn: 127548 
							
						 
						
							2011-03-12 17:18:11 +00:00  
				
					
						
							
							
								 
						
							
								391a946fa9 
								
							 
						 
						
							
							
								
								ComputeMaskedBits: sub falls through to add, and sub doesn't have the same overflow semantics as add.  
							
							... 
							
							
							
							Should fix the selfhost failures that started with r127463.
llvm-svn: 127465 
							
						 
						
							2011-03-11 14:46:49 +00:00  
				
					
						
							
							
								 
						
							
								cc79973856 
								
							 
						 
						
							
							
								
								Teach ComputeMaskedBits about nsw on add. I don't think there's anything we can  
							
							... 
							
							
							
							do with nuw here, but sub and mul should be given similar treatment.
Fixes PR9343 #15 !
llvm-svn: 127463 
							
						 
						
							2011-03-11 09:00:19 +00:00  
				
					
						
							
							
								 
						
							
								fa31d38aad 
								
							 
						 
						
							
							
								
								Introduce DebugInfoProbe. This is used to monitor how llvm optimizer is treating debugging information.  
							
							... 
							
							
							
							It generates output that lools like
8 times line number info lost by Scalar Replacement of Aggregates (SSAUp) 
1 times line number info lost by Simplify well-known library calls 
12 times variable info lost by Jump Threading
llvm-svn: 127381 
							
						 
						
							2011-03-10 00:21:25 +00:00  
				
					
						
							
							
								 
						
							
								2afa325811 
								
							 
						 
						
							
							
								
								When SCEV can determine the loop test is X < X, set ExactBECount=0.  
							
							... 
							
							
							
							When ExactBECount is a constant, use it for MaxBECount.
When MaxBECount cannot be computed, replace it with ExactBECount.
Fixes PR9424.
llvm-svn: 127342 
							
						 
						
							2011-03-09 17:29:58 +00:00  
				
					
						
							
							
								 
						
							
								2a3b71684a 
								
							 
						 
						
							
							
								
								whitespace  
							
							... 
							
							
							
							llvm-svn: 127340 
							
						 
						
							2011-03-09 17:23:39 +00:00  
				
					
						
							
							
								 
						
							
								774647d974 
								
							 
						 
						
							
							
								
								Fix two cases I forgot to update when doing a mental "getSwappedPredicate".  
							
							... 
							
							
							
							Thanks Duncan Sands!
llvm-svn: 127323 
							
						 
						
							2011-03-09 08:20:06 +00:00  
				
					
						
							
							
								 
						
							
								980104d1d6 
								
							 
						 
						
							
							
								
								Add another micro-optimization. Apologies for the lack of refactoring, but I  
							
							... 
							
							
							
							gave up when I realized I couldn't come up with a good name for what the
refactored function would be, to describe what it does.
This is PR9343 test12, which is test3 with arguments reordered. Whoops!
llvm-svn: 127318 
							
						 
						
							2011-03-09 06:26:03 +00:00  
				
					
						
							
							
								 
						
							
								7dc3d47c34 
								
							 
						 
						
							
							
								
								Fix PR9331.  Simplified version of a patch by Jakub Staszak.  
							
							... 
							
							
							
							llvm-svn: 127243 
							
						 
						
							2011-03-08 12:39:03 +00:00  
				
					
						
							
							
								 
						
							
								e467979d0a 
								
							 
						 
						
							
							
								
								Add more analysis of the sign bit of an srem instruction. If the LHS is negative  
							
							... 
							
							
							
							then the result could go either way. If it's provably positive then so is the
srem. Fixes PR9343 #7 !
llvm-svn: 127146 
							
						 
						
							2011-03-07 01:50:10 +00:00  
				
					
						
							
							
								 
						
							
								9719a719c7 
								
							 
						 
						
							
							
								
								Thread comparisons over udiv/sdiv/ashr/lshr exact and lshr nuw/nsw whenever  
							
							... 
							
							
							
							possible. This goes into instcombine and instsimplify because instsimplify
doesn't need to check hasOneUse since it returns (almost exclusively) constants.
This fixes PR9343 #4  #5  and #8 !
llvm-svn: 127064 
							
						 
						
							2011-03-05 05:19:11 +00:00  
				
					
						
							
							
								 
						
							
								aa036eedb8 
								
							 
						 
						
							
							
								
								When decling to reuse existing expressions that involve casts, ignore  
							
							... 
							
							
							
							bitcasts, which are really no-ops here. This fixes slowdowns on
MultiSource/Applications/aha and others.
llvm-svn: 127031 
							
						 
						
							2011-03-04 20:46:46 +00:00  
				
					
						
							
							
								 
						
							
								41c529bd09 
								
							 
						 
						
							
							
								
								Revert broken srem logic from r126991.  
							
							... 
							
							
							
							llvm-svn: 127021 
							
						 
						
							2011-03-04 19:26:08 +00:00  
				
					
						
							
							
								 
						
							
								8e3a79da9f 
								
							 
						 
						
							
							
								
								Fold "icmp pred (srem X, Y), Y" like we do for urem. Handle signed comparisons  
							
							... 
							
							
							
							in the urem case, though not the other way around. This is enough to get #3  from
PR9343!
llvm-svn: 126991 
							
						 
						
							2011-03-04 10:06:52 +00:00  
				
					
						
							
							
								 
						
							
								3cec6f5563 
								
							 
						 
						
							
							
								
								Teach instruction simplify to use constant ranges to solve problems of the form  
							
							... 
							
							
							
							"icmp pred %X, CI" and a number of examples where "%X = binop %Y, CI2".
Some of these cases (div and rem) used to make it through opt -O2, but the
others are probably now making code elsewhere redundant (probably instcombine).
llvm-svn: 126988 
							
						 
						
							2011-03-04 07:00:57 +00:00  
				
					
						
							
							
								 
						
							
								bf577d6a86 
								
							 
						 
						
							
							
								
								Remove DIFactory.  Patch by Devang.  
							
							... 
							
							
							
							llvm-svn: 126871 
							
						 
						
							2011-03-02 20:30:37 +00:00  
				
					
						
							
							
								 
						
							
								7290868a1b 
								
							 
						 
						
							
							
								
								Don't re-use existing addrec expansions if they contain casts.  
							
							... 
							
							
							
							This fixes PR9259.
llvm-svn: 126812 
							
						 
						
							2011-03-02 01:34:10 +00:00  
				
					
						
							
							
								 
						
							
								40eee1e970 
								
							 
						 
						
							
							
								
								Today, the language front ends produces llvm.dbg.* intrinsics, used to encode arguments' debug info, in order any way, most of the times. However, if a front end mix-n-matches llvm.dbg.declare and llvm.dbg.value intrinsics to encode debug info for arguments then code generator needs a way to find argument order.  
							
							... 
							
							
							
							Use 8 bits from line number field to keep track of argument ordering while encoding debug info for an argument. That leaves 24 bit for line no, DebugLoc also allocates 24 bit for line numbers. If a function has more than 255 arguments then rest of the arguments will be ordered by llvm.dbg.* intrinsics' ordering in IR.
llvm-svn: 126793 
							
						 
						
							2011-03-01 22:58:13 +00:00  
				
					
						
							
							
								 
						
							
								c9d20067cd 
								
							 
						 
						
							
							
								
								Optimize "icmp pred (urem X, Y), Y" --> true/false depending on pred. There's  
							
							... 
							
							
							
							more work to do here, "icmp ult (urem X, 10), 11" doesn't optimize away yet.
Fixes example 3 from PR9343!
llvm-svn: 126741 
							
						 
						
							2011-03-01 08:15:50 +00:00  
				
					
						
							
							
								 
						
							
								49d15b959e 
								
							 
						 
						
							
							
								
								Unbreak CMake build.  
							
							... 
							
							
							
							llvm-svn: 126717 
							
						 
						
							2011-03-01 00:02:51 +00:00  
				
					
						
							
							
								 
						
							
								161058838c 
								
							 
						 
						
							
							
								
								Delete the LiveValues pass. I won't get get back to the project it  
							
							... 
							
							
							
							was started for in the foreseeable future.
llvm-svn: 126668 
							
						 
						
							2011-02-28 19:37:59 +00:00  
				
					
						
							
							
								 
						
							
								afe4a3062d 
								
							 
						 
						
							
							
								
								Fix comment.  
							
							... 
							
							
							
							llvm-svn: 126645 
							
						 
						
							2011-02-28 09:18:11 +00:00  
				
					
						
							
							
								 
						
							
								66f4f22f7b 
								
							 
						 
						
							
							
								
								srem doesn't actually have the same resulting sign as its numerator, you could  
							
							... 
							
							
							
							also have a zero when numerator = denominator. Reverts parts of r126635 and
r126637.
llvm-svn: 126644 
							
						 
						
							2011-02-28 09:17:39 +00:00  
				
					
						
							
							
								 
						
							
								c9aab8567b 
								
							 
						 
						
							
							
								
								Teach value tracking to make use of flags in more situations.  
							
							... 
							
							
							
							llvm-svn: 126642 
							
						 
						
							2011-02-28 08:02:21 +00:00  
				
					
						
							
							
								 
						
							
								29dbbd12c1 
								
							 
						 
						
							
							
								
								Teach ValueTracking to look at the dividend when determining the sign bit of an  
							
							... 
							
							
							
							srem instruction.
llvm-svn: 126637 
							
						 
						
							2011-02-28 06:52:12 +00:00  
				
					
						
							
							
								 
						
							
								98eecaf0a9 
								
							 
						 
						
							
							
								
								RegionPrinter: Ignore back edges when layouting the graph  
							
							... 
							
							
							
							llvm-svn: 126564 
							
						 
						
							2011-02-27 04:11:07 +00:00  
				
					
						
							
							
								 
						
							
								9b4127349c 
								
							 
						 
						
							
							
								
								Follow LLVM coding style.  
							
							... 
							
							
							
							clang uses DBuilder, so it requries corresponding change.
llvm-svn: 126231 
							
						 
						
							2011-02-22 18:56:12 +00:00  
				
					
						
							
							
								 
						
							
								5b7a4e0195 
								
							 
						 
						
							
							
								
								Move "A | ~(A & ?) -> -1" from InstCombine to InstructionSimplify.  
							
							... 
							
							
							
							llvm-svn: 126082 
							
						 
						
							2011-02-20 15:20:01 +00:00  
				
					
						
							
							
								 
						
							
								acf6b0776a 
								
							 
						 
						
							
							
								
								Stores of null pointers should turn into memset, we weren't recognizing  
							
							... 
							
							
							
							them as splat values.
llvm-svn: 126041 
							
						 
						
							2011-02-19 19:35:49 +00:00  
				
					
						
							
							
								 
						
							
								5ed962656c 
								
							 
						 
						
							
							
								
								Move library stuff out of the toplevel CMakeLists.txt file.  
							
							... 
							
							
							
							llvm-svn: 125968 
							
						 
						
							2011-02-18 22:06:14 +00:00  
				
					
						
							
							
								 
						
							
								4ab0852080 
								
							 
						 
						
							
							
								
								Move DbgInfoPrinter specific utlities inside DbgInfoPrinter.cpp  
							
							... 
							
							
							
							llvm-svn: 125571 
							
						 
						
							2011-02-15 17:36:11 +00:00  
				
					
						
							
							
								 
						
							
								27924da676 
								
							 
						 
						
							
							
								
								Print function info. Patch by Minjang Kim.  
							
							... 
							
							
							
							llvm-svn: 125567 
							
						 
						
							2011-02-15 17:24:56 +00:00  
				
					
						
							
							
								 
						
							
								69229316aa 
								
							 
						 
						
							
							
								
								convert ConstantVector::get to use ArrayRef.  
							
							... 
							
							
							
							llvm-svn: 125537 
							
						 
						
							2011-02-15 00:14:00 +00:00  
				
					
						
							
							
								 
						
							
								34442e6ebf 
								
							 
						 
						
							
							
								
								revert my ConstantVector patch, it seems to have made the llvm-gcc  
							
							... 
							
							
							
							builders unhappy.
llvm-svn: 125504 
							
						 
						
							2011-02-14 18:15:46 +00:00  
				
					
						
							
							
								 
						
							
								d9f5b88548 
								
							 
						 
						
							
							
								
								Switch ConstantVector::get to use ArrayRef instead of a pointer+size  
							
							... 
							
							
							
							idiom.  Change various clients to simplify their code.
llvm-svn: 125487 
							
						 
						
							2011-02-14 07:55:32 +00:00