Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | 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 | |||||
* | Fix SCEVCommutativeExpr::print to be robust in the case of improper | Dan Gohman | 2010-04-16 | 1 | -4/+6 | |
| | | | | | | | expression canonicalization. Its job is to print what's there, not to make judgements about it. llvm-svn: 101461 | |||||
* | Make getPredecessorWithUniqueSuccessorForBB return the unique successor | Dan Gohman | 2010-04-15 | 1 | -12/+10 | |
| | | | | | | in addition to the predecessor. llvm-svn: 101374 | |||||
* | Add a comment. | Dan Gohman | 2010-04-14 | 1 | -0/+2 | |
| | | | | llvm-svn: 101248 | |||||
* | Teach ScalarEvolution to simplify smax and umax when it can prove | Dan Gohman | 2010-04-13 | 1 | -2/+14 | |
| | | | | | | that one operand is always greater than another. llvm-svn: 101142 | |||||
* | Minor code micro-optimizations. | Dan Gohman | 2010-04-13 | 1 | -7/+7 | |
| | | | | llvm-svn: 101141 | |||||
* | Micro-optimize a few hot spots. | Dan Gohman | 2010-04-12 | 1 | -10/+11 | |
| | | | | llvm-svn: 101086 | |||||
* | Add fast paths to ScalarEvolution::getSizeOf and getOffsetOf, as | Dan Gohman | 2010-04-12 | 1 | -0/+14 | |
| | | | | | | | they're used a lot by getNodeForGEP, which can be called a lot. This speeds up -iv-users by around 15% on several testcases. llvm-svn: 101083 | |||||
* | Generalize ScalarEvolution's PHI analysis to handle loops that don't | Dan Gohman | 2010-04-12 | 1 | -14/+26 | |
| | | | | | | | have preheaders or dedicated exit blocks, as clients may not otherwise need to run LoopSimplify. llvm-svn: 101030 | |||||
* | Rewrite the overflow checking in the get{Signed,Unsigned}Range code for | Dan Gohman | 2010-04-12 | 1 | -10/+34 | |
| | | | | | | | | | AddRecs so that it checks for overflow in the computation that it is performing, rather than just checking hasNo{Signed,Unsigned}Wrap, since those flags are for a different computation. This fixes a bug that impacts an upcoming change. llvm-svn: 101028 | |||||
* | Fix indentation. | Dan Gohman | 2010-04-11 | 1 | -1/+1 | |
| | | | | llvm-svn: 101001 | |||||
* | Enhance ScalarEvolution::isKnownPredicate with support for | Dan Gohman | 2010-04-11 | 1 | -8/+33 | |
| | | | | | | loop conditions which are invariants. llvm-svn: 100995 | |||||
* | Minor code simplification. | Dan Gohman | 2010-04-11 | 1 | -2/+1 | |
| | | | | llvm-svn: 100994 |