Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Make SCEVCallbackVH::allUsesReplacedWith unconditionally delete | Dan Gohman | 2010-07-28 | 1 | -12/+6 | |
| | | | | | | the old value. llvm-svn: 109567 | |||||
* | Micro-optimize SCEVComplexityCompare. | Dan Gohman | 2010-07-23 | 1 | -34/+44 | |
| | | | | llvm-svn: 109267 | |||||
* | Add a const qualifier. | Dan Gohman | 2010-07-23 | 1 | -2/+2 | |
| | | | | llvm-svn: 109266 | |||||
* | mass elimination of reliance on automatic iterator dereferencing | Gabor Greif | 2010-07-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 109103 | |||||
* | Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). | Owen Anderson | 2010-07-21 | 1 | -2/+2 | |
| | | | | llvm-svn: 109045 | |||||
* | Add a fast path for x - x. | Dan Gohman | 2010-07-20 | 1 | -0/+4 | |
| | | | | llvm-svn: 108855 | |||||
* | Teach ScalarEvolution how to fold trunc(undef) and anyext(undef) to undef. | Dan Gohman | 2010-07-15 | 1 | -0/+14 | |
| | | | | | | This helps LSR behave more consistently on bugpoint-reduced testcases. llvm-svn: 108451 | |||||
* | In ScalarEvolution::forgetValue, eliminate any SCEVUnknown | Dan Gohman | 2010-06-30 | 1 | -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 using | Dan Gohman | 2010-06-30 | 1 | -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 Gohman | 2010-06-30 | 1 | -31/+105 | |
| | | | | llvm-svn: 107257 | |||||
* | When computing a new ConservativeResult, intersect it with | Dan Gohman | 2010-06-30 | 1 | -1/+2 | |
| | | | | | | the old one instead of replacing it, to be more precise. llvm-svn: 107256 | |||||
* | Fix ScalarEvolution's tripcount computation for chains of loops | Dan Gohman | 2010-06-29 | 1 | -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 add | Dan Gohman | 2010-06-29 | 1 | -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 Gohman | 2010-06-25 | 1 | -3/+3 | |
| | | | | llvm-svn: 106872 | |||||
* | Don't try to preserve pointer types in SCEVConstants; the old code | Dan Gohman | 2010-06-24 | 1 | -12/+8 | |
| | | | | | | was over-complicated. llvm-svn: 106760 | |||||
* | Make the trunc code consistent with the zext and sext code in its | Dan Gohman | 2010-06-24 | 1 | -1/+2 | |
| | | | | | | handling of pointer types. llvm-svn: 106757 | |||||
* | Replace ScalarEvolution's private copy of getLoopPredecessor | Dan Gohman | 2010-06-22 | 1 | -19/+2 | |
| | | | | | | with LoopInfo's public copy. llvm-svn: 106603 | |||||
* | Allow "exhaustive" trip count evaluation on phi nodes with all | Dan Gohman | 2010-06-22 | 1 | -9/+7 | |
| | | | | | | constant operands. llvm-svn: 106537 | |||||
* | Use A.append(...) instead of A.insert(A.end(), ...) when A is a | Dan Gohman | 2010-06-21 | 1 | -7/+6 | |
| | | | | | | SmallVector, and other SmallVector simplifications. llvm-svn: 106452 | |||||
* | Fix ScalarEvolution's "exhaustive" trip count evaluation code to avoid | Dan Gohman | 2010-06-19 | 1 | -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 SCEVComplexityCompare | Dan Gohman | 2010-06-18 | 1 | -38/+138 | |
| | | | | | | optimizations. There is still some nondeterminism remaining. llvm-svn: 106306 | |||||
* | Reapply 105540, 105542, and 105548, and revert r105732. | Dan Gohman | 2010-06-18 | 1 | -138/+38 | |
| | | | | llvm-svn: 106304 | |||||
* | Reapply 105546. | Dan Gohman | 2010-06-18 | 1 | -7/+13 | |
| | | | | llvm-svn: 106302 | |||||
* | Reapply 105544. | Dan Gohman | 2010-06-18 | 1 | -2/+2 | |
| | | | | llvm-svn: 106301 | |||||
* | Remove getIntegerSCEV; it's redundant with getConstant, and getConstant | Dan Gohman | 2010-06-18 | 1 | -7/+0 | |
| | | | | | | is more consistent with the ConstantInt API. llvm-svn: 106281 | |||||
* | Simplify this code. | Dan Gohman | 2010-06-17 | 1 | -11/+3 | |
| | | | | llvm-svn: 106254 | |||||
* | Revert 105540, 105542, 105544, 105546, and 105548 to unbreak bootstrapping. | Evan Cheng | 2010-06-09 | 1 | -53/+147 | |
| | | | | llvm-svn: 105740 | |||||
* | The FoldingSet hash data includes pointer values, so it isn't | Dan Gohman | 2010-06-07 | 1 | -21/+28 | |
| | | | | | | | determinstic. Instead, give SCEV objects an arbitrary sequence number. llvm-svn: 105548 | |||||
* | Optimize this code somewhat by taking advantage of the fact | Dan Gohman | 2010-06-07 | 1 | -7/+13 | |
| | | | | | | that the operands are sorted. llvm-svn: 105546 | |||||
* | Micro-optimize this, to speed up this hotspot in debug builds a little. | Dan Gohman | 2010-06-07 | 1 | -2/+2 | |
| | | | | llvm-svn: 105544 | |||||
* | Micro-optimize this. | Dan Gohman | 2010-06-07 | 1 | -2/+4 | |
| | | | | llvm-svn: 105542 | |||||
* | Optimize ScalarEvolution's SCEVComplexityCompare predicate: don't go | Dan Gohman | 2010-06-07 | 1 | -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 Gohman | 2010-05-28 | 1 | -4/+8 | |
| | | | | llvm-svn: 104948 | |||||
* | Use the SCEVAddRecExpr::getPostIncExpr utility function instead | Dan Gohman | 2010-05-04 | 1 | -4/+2 | |
| | | | | | | of doing the same thing manually. llvm-svn: 102997 | |||||
* | Fix a copy+pasto. | Dan Gohman | 2010-05-04 | 1 | -2/+2 | |
| | | | | llvm-svn: 102996 | |||||
* | Use getConstant instead of getIntegerSCEV. The two are basically the | Dan Gohman | 2010-05-03 | 1 | -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 Gohman | 2010-05-03 | 1 | -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 that | Dan Gohman | 2010-05-03 | 1 | -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 for | Dan Gohman | 2010-05-03 | 1 | -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 the | Dan Gohman | 2010-05-03 | 1 | -3/+6 | |
| | | | | | | case where both are addrecs in unrelated loops. llvm-svn: 102924 | |||||
* | Factor out the new <= and >= analysis code into SimplifyICmpOperands. | Dan Gohman | 2010-05-03 | 1 | -51/+62 | |
| | | | | llvm-svn: 102922 | |||||
* | Set isSigned to true when creating an all-ones integer constant, even | Dan Gohman | 2010-04-30 | 1 | -4/+4 | |
| | | | | | | | for unsigned purposes, so >64-bit integer values get a full all-ones value. llvm-svn: 102739 | |||||
* | Silence compiler warnings. | Dan Gohman | 2010-04-30 | 1 | -4/+4 | |
| | | | | llvm-svn: 102734 | |||||
* | ScalarEvolution support for <= and >= loops. | Dan Gohman | 2010-04-24 | 1 | -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 Gohman | 2010-04-24 | 1 | -0/+3 | |
| | | | | llvm-svn: 102233 | |||||
* | Update isImpliedCond to use the new SimplifyICmpOperands utility. | Dan Gohman | 2010-04-24 | 1 | -111/+6 | |
| | | | | llvm-svn: 102232 | |||||
* | Add a new utility function SimplifyICmpOperands. Much of this code is | Dan Gohman | 2010-04-24 | 1 | -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 Gohman | 2010-04-23 | 1 | -6/+2 | |
| | | | | | | use ScalarEvolutions "any" extend function. llvm-svn: 102156 | |||||
* | Don't attempt to analyze values which are obviously undef. This fixes some | Dan Gohman | 2010-04-22 | 1 | -75/+102 | |
| | | | | | | assertion failures in extreme cases. llvm-svn: 102042 | |||||
* | Make ScalarEvolution::getConstant support pointer types, for consistency | Dan Gohman | 2010-04-21 | 1 | -2/+2 | |
| | | | | | | with ScalarEvolution's overall approach to pointer types. llvm-svn: 102003 |