summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ScalarEvolution.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Make SCEVCallbackVH::allUsesReplacedWith unconditionally deleteDan Gohman2010-07-281-12/+6
| | | | | | the old value. llvm-svn: 109567
* Micro-optimize SCEVComplexityCompare.Dan Gohman2010-07-231-34/+44
| | | | llvm-svn: 109267
* Add a const qualifier.Dan Gohman2010-07-231-2/+2
| | | | llvm-svn: 109266
* mass elimination of reliance on automatic iterator dereferencingGabor Greif2010-07-221-1/+1
| | | | llvm-svn: 109103
* Fix batch of converting RegisterPass<> to INTIALIZE_PASS().Owen Anderson2010-07-211-2/+2
| | | | llvm-svn: 109045
* Add a fast path for x - x.Dan Gohman2010-07-201-0/+4
| | | | llvm-svn: 108855
* Teach ScalarEvolution how to fold trunc(undef) and anyext(undef) to undef.Dan Gohman2010-07-151-0/+14
| | | | | | This helps LSR behave more consistently on bugpoint-reduced testcases. llvm-svn: 108451
* In ScalarEvolution::forgetValue, eliminate any SCEVUnknownDan Gohman2010-06-301-0/+20
| | | | | | | | | | | 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
* Revert the part of r107257 which introduced new logic for usingDan Gohman2010-06-301-82/+11
| | | | | | | nsw and nuw flags from IR Instructions. On further consideration, this isn't valid. llvm-svn: 107298
* Improve ScalarEvolution's nsw and nuw preservation.Dan Gohman2010-06-301-31/+105
| | | | llvm-svn: 107257
* When computing a new ConservativeResult, intersect it withDan Gohman2010-06-301-1/+2
| | | | | | the old one instead of replacing it, to be more precise. llvm-svn: 107256
* Fix ScalarEvolution's tripcount computation for chains of loopsDan Gohman2010-06-291-41/+61
| | | | | | | where each loop's induction variable's start value is the exit value of a preceding loop. llvm-svn: 107224
* Just as its not safe to blindly transfer the nsw bit from an addDan Gohman2010-06-291-5/+9
| | | | | | | | 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
* Eliminate a redundant FoldingSet lookup.Dan Gohman2010-06-251-3/+3
| | | | llvm-svn: 106872
* Don't try to preserve pointer types in SCEVConstants; the old codeDan Gohman2010-06-241-12/+8
| | | | | | was over-complicated. llvm-svn: 106760
* Make the trunc code consistent with the zext and sext code in itsDan Gohman2010-06-241-1/+2
| | | | | | handling of pointer types. llvm-svn: 106757
* Replace ScalarEvolution's private copy of getLoopPredecessorDan Gohman2010-06-221-19/+2
| | | | | | with LoopInfo's public copy. llvm-svn: 106603
* Allow "exhaustive" trip count evaluation on phi nodes with allDan Gohman2010-06-221-9/+7
| | | | | | constant operands. llvm-svn: 106537
* Use A.append(...) instead of A.insert(A.end(), ...) when A is aDan Gohman2010-06-211-7/+6
| | | | | | SmallVector, and other SmallVector simplifications. llvm-svn: 106452
* Fix ScalarEvolution's "exhaustive" trip count evaluation code to avoidDan Gohman2010-06-191-2/+5
| | | | | | | | 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
* Revert r106304 (105548 and friends), which are the SCEVComplexityCompareDan Gohman2010-06-181-38/+138
| | | | | | optimizations. There is still some nondeterminism remaining. llvm-svn: 106306
* Reapply 105540, 105542, and 105548, and revert r105732.Dan Gohman2010-06-181-138/+38
| | | | llvm-svn: 106304
* Reapply 105546.Dan Gohman2010-06-181-7/+13
| | | | llvm-svn: 106302
* Reapply 105544.Dan Gohman2010-06-181-2/+2
| | | | llvm-svn: 106301
* Remove getIntegerSCEV; it's redundant with getConstant, and getConstantDan Gohman2010-06-181-7/+0
| | | | | | is more consistent with the ConstantInt API. llvm-svn: 106281
* Simplify this code.Dan Gohman2010-06-171-11/+3
| | | | llvm-svn: 106254
* Revert 105540, 105542, 105544, 105546, and 105548 to unbreak bootstrapping.Evan Cheng2010-06-091-53/+147
| | | | llvm-svn: 105740
* The FoldingSet hash data includes pointer values, so it isn'tDan Gohman2010-06-071-21/+28
| | | | | | | determinstic. Instead, give SCEV objects an arbitrary sequence number. llvm-svn: 105548
* Optimize this code somewhat by taking advantage of the factDan Gohman2010-06-071-7/+13
| | | | | | that the operands are sorted. llvm-svn: 105546
* Micro-optimize this, to speed up this hotspot in debug builds a little.Dan Gohman2010-06-071-2/+2
| | | | llvm-svn: 105544
* Micro-optimize this.Dan Gohman2010-06-071-2/+4
| | | | llvm-svn: 105542
* Optimize ScalarEvolution's SCEVComplexityCompare predicate: don't goDan Gohman2010-06-071-123/+14
| | | | | | | | | | | 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
* ConstantFoldConstantExpression can theoretically return null.Dan Gohman2010-05-281-4/+8
| | | | llvm-svn: 104948
* Use the SCEVAddRecExpr::getPostIncExpr utility function insteadDan Gohman2010-05-041-4/+2
| | | | | | of doing the same thing manually. llvm-svn: 102997
* Fix a copy+pasto.Dan Gohman2010-05-041-2/+2
| | | | llvm-svn: 102996
* Use getConstant instead of getIntegerSCEV. The two are basically theDan Gohman2010-05-031-13/+13
| | | | | | same, now that getConstant has overloads consistent with ConstantInt::get. llvm-svn: 102965
* Silence warnings about -1 being converted to an unsigned value.Dan Gohman2010-05-031-6/+6
| | | | | | | | 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
* Use isTrueWhenEqual and isFalseWhenEqual instead of assuming thatDan Gohman2010-05-031-2/+2
| | | | | | | | 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
* In ScalarEvolution::print, don't bother printing out the SCEVs forDan Gohman2010-05-031-1/+1
| | | | | | | comparison instructions, since they aren't interesting, despite having integer result types. llvm-svn: 102925
* In SimplifyICmpOperands, avoid needlessly swapping the operands in theDan Gohman2010-05-031-3/+6
| | | | | | case where both are addrecs in unrelated loops. llvm-svn: 102924
* Factor out the new <= and >= analysis code into SimplifyICmpOperands.Dan Gohman2010-05-031-51/+62
| | | | llvm-svn: 102922
* Set isSigned to true when creating an all-ones integer constant, evenDan Gohman2010-04-301-4/+4
| | | | | | | for unsigned purposes, so >64-bit integer values get a full all-ones value. llvm-svn: 102739
* Silence compiler warnings.Dan Gohman2010-04-301-4/+4
| | | | llvm-svn: 102734
* ScalarEvolution support for <= and >= loops.Dan Gohman2010-04-241-20/+107
| | | | | | | 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
* Use SimplifyICmpOperands in isKnownPredicate too.Dan Gohman2010-04-241-0/+3
| | | | llvm-svn: 102233
* Update isImpliedCond to use the new SimplifyICmpOperands utility.Dan Gohman2010-04-241-111/+6
| | | | llvm-svn: 102232
* Add a new utility function SimplifyICmpOperands. Much of this code isDan Gohman2010-04-241-0/+198
| | | | | | | refactored out of ScalarEvolution::isImpliedCond, which will be updated to use this new utility routine soon. llvm-svn: 102229
* When it doesn't matter whether zero or sign extension is used,Dan Gohman2010-04-231-6/+2
| | | | | | use ScalarEvolutions "any" extend function. llvm-svn: 102156
* Don't attempt to analyze values which are obviously undef. This fixes someDan Gohman2010-04-221-75/+102
| | | | | | assertion failures in extreme cases. llvm-svn: 102042
* Make ScalarEvolution::getConstant support pointer types, for consistencyDan Gohman2010-04-211-2/+2
| | | | | | with ScalarEvolution's overall approach to pointer types. llvm-svn: 102003
OpenPOWER on IntegriCloud