Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								7cac95778f 
								
							 
						 
						
							
							
								
								Make SCEVUnknown a CallbackVH, so that it can be notified directly  
							
							 
							
							... 
							
							
							
							of Value deletions and RAUWs, instead of relying on ScalarEvolution's
Scalars map being notified, as that's complicated at best, and
insufficient in general.
This means SCEVUnknown needs a non-trivial destructor, so introduce
a mechanism to allow ScalarEvolution to locate all the SCEVUnknowns.
llvm-svn: 110086 
							
						 
						
							2010-08-02 23:49:30 +00:00  
						
					 
				
					
						
							
							
								 
								Oscar Fuentes
							
						 
						
							 
							
							
							
							
								
							
							
								40b31ad3ee 
								
							 
						 
						
							
							
								
								Prefix `next' iterator operation with `llvm::'.  
							
							 
							
							... 
							
							
							
							Fixes potential ambiguity problems on VS 2010.
Patch by nobled!
llvm-svn: 110029 
							
						 
						
							2010-08-02 06:00:15 +00:00  
						
					 
				
					
						
							
							
								 
								Eric Christopher
							
						 
						
							 
							
							
							
							
								
							
							
								ef6d5933a6 
								
							 
						 
						
							
							
								
								Speculatively revert r109705 since it seems to be causing some build bot  
							
							 
							
							... 
							
							
							
							angst.
llvm-svn: 109718 
							
						 
						
							2010-07-29 01:25:38 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3d6ac44d96 
								
							 
						 
						
							
							
								
								Factor out some of the code for updating old SCEVUnknown values, and  
							
							 
							
							... 
							
							
							
							extend it to handle the case where multiple RAUWs affect a single
SCEVUnknown.
Add a ScalarEvolution unittest to test for this situation.
llvm-svn: 109705 
							
						 
						
							2010-07-29 00:17:55 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								7a066723d0 
								
							 
						 
						
							
							
								
								Make SCEVCallbackVH::allUsesReplacedWith update the old SCEVUnknown  
							
							 
							
							... 
							
							
							
							object, as it may still be referenced by SCEVs not cleaned up by the
use list traversal.
Also, in ScalarEvolution::forgetValue, only check for a SCEVUnknown
object for the original value, not for any value in the use list,
because other SCEVUnknown values aren't necessary obsolete at that
point.
llvm-svn: 109570 
							
						 
						
							2010-07-28 01:09:07 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								8aeb0fb5ca 
								
							 
						 
						
							
							
								
								Make SCEVCallbackVH::allUsesReplacedWith unconditionally delete  
							
							 
							
							... 
							
							
							
							the old value.
llvm-svn: 109567 
							
						 
						
							2010-07-28 00:28:25 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5ae3102459 
								
							 
						 
						
							
							
								
								Micro-optimize SCEVComplexityCompare.  
							
							 
							
							... 
							
							
							
							llvm-svn: 109267 
							
						 
						
							2010-07-23 21:20:52 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								992db006d0 
								
							 
						 
						
							
							
								
								Add a const qualifier.  
							
							 
							
							... 
							
							
							
							llvm-svn: 109266 
							
						 
						
							2010-07-23 21:18:55 +00:00  
						
					 
				
					
						
							
							
								 
								Gabor Greif
							
						 
						
							 
							
							
							
							
								
							
							
								dde79d8f1a 
								
							 
						 
						
							
							
								
								mass elimination of reliance on automatic iterator dereferencing  
							
							 
							
							... 
							
							
							
							llvm-svn: 109103 
							
						 
						
							2010-07-22 13:36:47 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a57b97e7e7 
								
							 
						 
						
							
							
								
								Fix batch of converting RegisterPass<> to INTIALIZE_PASS().  
							
							 
							
							... 
							
							
							
							llvm-svn: 109045 
							
						 
						
							2010-07-21 22:09:45 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								46f00a25f9 
								
							 
						 
						
							
							
								
								Add a fast path for x - x.  
							
							 
							
							... 
							
							
							
							llvm-svn: 108855 
							
						 
						
							2010-07-20 16:53:00 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								64b1e82a7c 
								
							 
						 
						
							
							
								
								Teach ScalarEvolution how to fold trunc(undef) and anyext(undef) to undef.  
							
							 
							
							... 
							
							
							
							This helps LSR behave more consistently on bugpoint-reduced testcases.
llvm-svn: 108451 
							
						 
						
							2010-07-15 20:02:11 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								f638f4ff84 
								
							 
						 
						
							
							
								
								In ScalarEvolution::forgetValue, eliminate any SCEVUnknown  
							
							 
							
							... 
							
							
							
							entries associated with the value being erased in the
folding set map.  These entries used to be harmless, because
a SCEVUnknown doesn't store any information about its Value*,
so having a new Value allocated at the old Value's address
wasn't a problem. But now that ScalarEvolution is storing more
information about values, this is no longer safe.
llvm-svn: 107316 
							
						 
						
							2010-06-30 20:21:12 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								c0cca7fdda 
								
							 
						 
						
							
							
								
								Revert the part of r107257 which introduced new logic for using  
							
							 
							
							... 
							
							
							
							nsw and nuw flags from IR Instructions. On further consideration,
this isn't valid.
llvm-svn: 107298 
							
						 
						
							2010-06-30 17:27:11 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								16206132b6 
								
							 
						 
						
							
							
								
								Improve ScalarEvolution's nsw and nuw preservation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 107257 
							
						 
						
							2010-06-30 07:16:37 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								9396b42ca4 
								
							 
						 
						
							
							
								
								When computing a new ConservativeResult, intersect it with  
							
							 
							
							... 
							
							
							
							the old one instead of replacing it, to be more precise.
llvm-svn: 107256 
							
						 
						
							2010-06-30 06:58:35 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								ae36b1ed42 
								
							 
						 
						
							
							
								
								Fix ScalarEvolution's tripcount computation for chains of loops  
							
							 
							
							... 
							
							
							
							where each loop's induction variable's start value is the exit
value of a preceding loop.
llvm-svn: 107224 
							
						 
						
							2010-06-29 23:43:06 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								90db61d638 
								
							 
						 
						
							
							
								
								Just as its not safe to blindly transfer the nsw bit from an add  
							
							 
							
							... 
							
							
							
							instruction to an add scev, it's not safe to blindly transfer the
inbounds flag from a gep instruction to an nsw on the scev for the
gep.
llvm-svn: 107117 
							
						 
						
							2010-06-29 01:41:41 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								89dd42af31 
								
							 
						 
						
							
							
								
								Eliminate a redundant FoldingSet lookup.  
							
							 
							
							... 
							
							
							
							llvm-svn: 106872 
							
						 
						
							2010-06-25 18:47:08 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5235cc2c25 
								
							 
						 
						
							
							
								
								Don't try to preserve pointer types in SCEVConstants; the old code  
							
							 
							
							... 
							
							
							
							was over-complicated.
llvm-svn: 106760 
							
						 
						
							2010-06-24 16:47:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3ace9f4e3d 
								
							 
						 
						
							
							
								
								Make the trunc code consistent with the zext and sext code in its  
							
							 
							
							... 
							
							
							
							handling of pointer types.
llvm-svn: 106757 
							
						 
						
							2010-06-24 16:33:38 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								75c6b0bb1f 
								
							 
						 
						
							
							
								
								Replace ScalarEvolution's private copy of getLoopPredecessor  
							
							 
							
							... 
							
							
							
							with LoopInfo's public copy.
llvm-svn: 106603 
							
						 
						
							2010-06-22 23:43:28 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								f820bd327d 
								
							 
						 
						
							
							
								
								Allow "exhaustive" trip count evaluation on phi nodes with all  
							
							 
							
							... 
							
							
							
							constant operands.
llvm-svn: 106537 
							
						 
						
							2010-06-22 13:15:46 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								dd41bba517 
								
							 
						 
						
							
							
								
								Use A.append(...) instead of A.insert(A.end(), ...) when A is a  
							
							 
							
							... 
							
							
							
							SmallVector, and other SmallVector simplifications.
llvm-svn: 106452 
							
						 
						
							2010-06-21 19:47:52 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								866971ed3d 
								
							 
						 
						
							
							
								
								Fix ScalarEvolution's "exhaustive" trip count evaluation code to avoid  
							
							 
							
							... 
							
							
							
							assuming that loops are in canonical form, as ScalarEvolution doesn't
depend on LoopSimplify itself. Also, with indirectbr not all loops can
be simplified. This fixes PR7416.
llvm-svn: 106389 
							
						 
						
							2010-06-19 14:17:24 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								24ceda8eb0 
								
							 
						 
						
							
							
								
								Revert r106304 (105548 and friends), which are the SCEVComplexityCompare  
							
							 
							
							... 
							
							
							
							optimizations. There is still some nondeterminism remaining.
llvm-svn: 106306 
							
						 
						
							2010-06-18 19:54:20 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								4c807fca97 
								
							 
						 
						
							
							
								
								Reapply 105540, 105542, and 105548, and revert r105732.  
							
							 
							
							... 
							
							
							
							llvm-svn: 106304 
							
						 
						
							2010-06-18 19:26:04 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								45073042eb 
								
							 
						 
						
							
							
								
								Reapply 105546.  
							
							 
							
							... 
							
							
							
							llvm-svn: 106302 
							
						 
						
							2010-06-18 19:12:32 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								9136d9fbf8 
								
							 
						 
						
							
							
								
								Reapply 105544.  
							
							 
							
							... 
							
							
							
							llvm-svn: 106301 
							
						 
						
							2010-06-18 19:09:27 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3d8a9d7490 
								
							 
						 
						
							
							
								
								Remove getIntegerSCEV; it's redundant with getConstant, and getConstant  
							
							 
							
							... 
							
							
							
							is more consistent with the ConstantInt API.
llvm-svn: 106281 
							
						 
						
							2010-06-18 14:33:50 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								8f5954f42c 
								
							 
						 
						
							
							
								
								Simplify this code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 106254 
							
						 
						
							2010-06-17 23:34:09 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ae83e1f5cb 
								
							 
						 
						
							
							
								
								Revert 105540, 105542, 105544, 105546, and 105548 to unbreak bootstrapping.  
							
							 
							
							... 
							
							
							
							llvm-svn: 105740 
							
						 
						
							2010-06-09 18:59:43 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								ebf2e977cf 
								
							 
						 
						
							
							
								
								The FoldingSet hash data includes pointer values, so it isn't  
							
							 
							
							... 
							
							
							
							determinstic. Instead, give SCEV objects an arbitrary sequence
number.
llvm-svn: 105548 
							
						 
						
							2010-06-07 19:36:14 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3553feed79 
								
							 
						 
						
							
							
								
								Optimize this code somewhat by taking advantage of the fact  
							
							 
							
							... 
							
							
							
							that the operands are sorted.
llvm-svn: 105546 
							
						 
						
							2010-06-07 19:20:57 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a2effb6452 
								
							 
						 
						
							
							
								
								Micro-optimize this, to speed up this hotspot in debug builds a little.  
							
							 
							
							... 
							
							
							
							llvm-svn: 105544 
							
						 
						
							2010-06-07 19:16:37 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								18a4b46404 
								
							 
						 
						
							
							
								
								Micro-optimize this.  
							
							 
							
							... 
							
							
							
							llvm-svn: 105542 
							
						 
						
							2010-06-07 19:12:54 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								70910a6ab6 
								
							 
						 
						
							
							
								
								Optimize ScalarEvolution's SCEVComplexityCompare predicate: don't go  
							
							 
							
							... 
							
							
							
							scrounging through SCEVUnknown contents and SCEVNAryExpr operands;
instead just do a simple deterministic comparison of the precomputed
hash data.
Also, since this is more precise, it eliminates the need for the slow
N^2 duplicate detection code.
llvm-svn: 105540 
							
						 
						
							2010-06-07 19:06:13 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a3b6c4b529 
								
							 
						 
						
							
							
								
								ConstantFoldConstantExpression can theoretically return null.  
							
							 
							
							... 
							
							
							
							llvm-svn: 104948 
							
						 
						
							2010-05-28 16:12:08 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								70a3b12193 
								
							 
						 
						
							
							
								
								Use the SCEVAddRecExpr::getPostIncExpr utility function instead  
							
							 
							
							... 
							
							
							
							of doing the same thing manually.
llvm-svn: 102997 
							
						 
						
							2010-05-04 01:12:27 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5f18c547da 
								
							 
						 
						
							
							
								
								Fix a copy+pasto.  
							
							 
							
							... 
							
							
							
							llvm-svn: 102996 
							
						 
						
							2010-05-04 01:11:15 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								1d2ded75e2 
								
							 
						 
						
							
							
								
								Use getConstant instead of getIntegerSCEV. The two are basically the  
							
							 
							
							... 
							
							
							
							same, now that getConstant has overloads consistent with ConstantInt::get.
llvm-svn: 102965 
							
						 
						
							2010-05-03 22:09:21 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								267700c5aa 
								
							 
						 
						
							
							
								
								Silence warnings about -1 being converted to an unsigned value.  
							
							 
							
							... 
							
							
							
							Also, pass true for isSigned even when creating constants for unsigned
comparisons, because the point is to create an all-ones constant,
rather than UINT64_MAX, even for integers wider than 64 bits.
llvm-svn: 102946 
							
						 
						
							2010-05-03 20:23:47 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								b5025c72eb 
								
							 
						 
						
							
							
								
								Use isTrueWhenEqual and isFalseWhenEqual instead of assuming that  
							
							 
							
							... 
							
							
							
							SimplifyICmpOperands will simplify such cases to EQ or NE. This makes
the correcntess of the code independent on SimplifyICmpOperands doing
certain simplifications.
llvm-svn: 102927 
							
						 
						
							2010-05-03 18:00:24 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								d18dc2c876 
								
							 
						 
						
							
							
								
								In ScalarEvolution::print, don't bother printing out the SCEVs for  
							
							 
							
							... 
							
							
							
							comparison instructions, since they aren't interesting, despite having
integer result types.
llvm-svn: 102925 
							
						 
						
							2010-05-03 17:03:23 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								df564cacaf 
								
							 
						 
						
							
							
								
								In SimplifyICmpOperands, avoid needlessly swapping the operands in the  
							
							 
							
							... 
							
							
							
							case where both are addrecs in unrelated loops.
llvm-svn: 102924 
							
						 
						
							2010-05-03 17:00:11 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								81585c18e1 
								
							 
						 
						
							
							
								
								Factor out the new <= and >= analysis code into SimplifyICmpOperands.  
							
							 
							
							... 
							
							
							
							llvm-svn: 102922 
							
						 
						
							2010-05-03 16:35:17 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a0a8a7fe40 
								
							 
						 
						
							
							
								
								Set isSigned to true when creating an all-ones integer constant, even  
							
							 
							
							... 
							
							
							
							for unsigned purposes, so >64-bit integer values get a full all-ones
value.
llvm-svn: 102739 
							
						 
						
							2010-04-30 19:22:39 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								1c07852e17 
								
							 
						 
						
							
							
								
								Silence compiler warnings.  
							
							 
							
							... 
							
							
							
							llvm-svn: 102734 
							
						 
						
							2010-04-30 19:21:13 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								f33bac3afe 
								
							 
						 
						
							
							
								
								ScalarEvolution support for <= and >= loops.  
							
							 
							
							... 
							
							
							
							Also, generalize ScalarEvolutions's min and max recognition to handle
some new forms of min and max that this change makes more common.
llvm-svn: 102234 
							
						 
						
							2010-04-24 03:09:42 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								36cce7e0dd 
								
							 
						 
						
							
							
								
								Use SimplifyICmpOperands in isKnownPredicate too.  
							
							 
							
							... 
							
							
							
							llvm-svn: 102233 
							
						 
						
							2010-04-24 01:38:36 +00:00