summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ScalarEvolution.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Fix SCEVCommutativeExpr::print to be robust in the case of improperDan Gohman2010-04-161-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 successorDan Gohman2010-04-151-12/+10
| | | | | | in addition to the predecessor. llvm-svn: 101374
* Add a comment.Dan Gohman2010-04-141-0/+2
| | | | llvm-svn: 101248
* Teach ScalarEvolution to simplify smax and umax when it can proveDan Gohman2010-04-131-2/+14
| | | | | | that one operand is always greater than another. llvm-svn: 101142
* Minor code micro-optimizations.Dan Gohman2010-04-131-7/+7
| | | | llvm-svn: 101141
* Micro-optimize a few hot spots.Dan Gohman2010-04-121-10/+11
| | | | llvm-svn: 101086
* Add fast paths to ScalarEvolution::getSizeOf and getOffsetOf, asDan Gohman2010-04-121-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'tDan Gohman2010-04-121-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 forDan Gohman2010-04-121-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 Gohman2010-04-111-1/+1
| | | | llvm-svn: 101001
* Enhance ScalarEvolution::isKnownPredicate with support forDan Gohman2010-04-111-8/+33
| | | | | | loop conditions which are invariants. llvm-svn: 100995
* Minor code simplification.Dan Gohman2010-04-111-2/+1
| | | | llvm-svn: 100994
OpenPOWER on IntegriCloud