Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Don't add the operand count to SCEV uniquing data; FoldingSetNodeID | Dan Gohman | 2010-10-04 | 1 | -5/+0 |
| | | | | | | already knows its own length, so this is redundant. llvm-svn: 115521 | ||||
* | Reapply r112432, now that the real problem is addressed. | Dan Gohman | 2010-08-31 | 1 | -4/+9 |
| | | | | llvm-svn: 112667 | ||||
* | Reapply r112433, now that the real problem is addressed. | Dan Gohman | 2010-08-31 | 1 | -21/+24 |
| | | | | llvm-svn: 112666 | ||||
* | Revert r110916. This patch is buggy because the code inside the | Dan Gohman | 2010-08-31 | 1 | -7/+4 |
| | | | | | | inner loop doesn't update all the variables in the outer loop. llvm-svn: 112665 | ||||
* | Revert r112432. It appears to be exposing a problem in the emacs build. | Dan Gohman | 2010-08-31 | 1 | -9/+4 |
| | | | | llvm-svn: 112638 | ||||
* | Speculatively revert r112433. | Dan Gohman | 2010-08-31 | 1 | -24/+21 |
| | | | | llvm-svn: 112608 | ||||
* | Restructure the {A,+,B}<L> * {C,+,D}<L> folding so that it folds | Dan Gohman | 2010-08-29 | 1 | -21/+24 |
| | | | | | | | all applicable addrecs before recursing on getMulExpr, instead of recursing on getMulExpr for each one. llvm-svn: 112433 | ||||
* | Batch up subtracts along with adds, when analyzing long chains of | Dan Gohman | 2010-08-29 | 1 | -4/+9 |
| | | | | | | operations. llvm-svn: 112432 | ||||
* | Micro-optimize GroupByComplexity. | Dan Gohman | 2010-08-29 | 1 | -2/+3 |
| | | | | llvm-svn: 112431 | ||||
* | Hold AddRec->getLoop() in a variable, to make the Mul code more consistent | Dan Gohman | 2010-08-29 | 1 | -3/+4 |
| | | | | | | with the Add code. llvm-svn: 112430 | ||||
* | Rename a variable, for consistency. | Dan Gohman | 2010-08-29 | 1 | -5/+8 |
| | | | | llvm-svn: 112429 | ||||
* | Use iterators instead of indices. | Dan Gohman | 2010-08-29 | 1 | -2/+2 |
| | | | | llvm-svn: 112428 | ||||
* | Fix an index calculation thinko. | Dan Gohman | 2010-08-28 | 1 | -1/+1 |
| | | | | llvm-svn: 112337 | ||||
* | When merging adjacent operands, scan ahead and merge all equal | Dan Gohman | 2010-08-27 | 1 | -11/+14 |
| | | | | | | adjacent operands at once, instead of just two at a time. llvm-svn: 112299 | ||||
* | Make the {A,+,B}<L> + {C,+,D}<L> --> Other + {A+C,+,B+D}<L> | Dan Gohman | 2010-08-27 | 1 | -23/+21 |
| | | | | | | | | transformation collect all the addrecs with the same loop add combine them at once rather than starting everything over at the first chance. llvm-svn: 112290 | ||||
* | Switch ScalarEvolution's main Value*->SCEV* map from std::map | Dan Gohman | 2010-08-27 | 1 | -28/+26 |
| | | | | | | to DenseMap. llvm-svn: 112281 | ||||
* | Optimize SCEVComplexityCompare. Use a 3-way return instead of a 2-way | Dan Gohman | 2010-08-27 | 1 | -48/+82 |
| | | | | | | | return to avoid needing two calls to test for equivalence, and sort addrecs by their degree before examining their operands. llvm-svn: 112267 | ||||
* | To create a copy of a SmallVector with an element removed from the | Dan Gohman | 2010-08-16 | 1 | -6/+7 |
| | | | | | | | | | middle, copy the elements in two groups, rather than copying all the elements and then doing an erase on the middle of the result. These are SmallVectors, so we shouldn't expect to hit dynamic allocation in the common case. llvm-svn: 111151 | ||||
* | Tidy whitespace. | Dan Gohman | 2010-08-16 | 1 | -5/+4 |
| | | | | llvm-svn: 111147 | ||||
* | Add a comment. | Dan Gohman | 2010-08-16 | 1 | -0/+5 |
| | | | | llvm-svn: 111145 | ||||
* | Use const_iterator in a few places. | Dan Gohman | 2010-08-16 | 1 | -3/+3 |
| | | | | llvm-svn: 111144 | ||||
* | Use iterators instead of indices in a few more places. | Dan Gohman | 2010-08-16 | 1 | -6/+9 |
| | | | | llvm-svn: 111143 | ||||
* | Micro-optimize SCEVConstant comparison. | Dan Gohman | 2010-08-16 | 1 | -4/+4 |
| | | | | llvm-svn: 111142 | ||||
* | Move SCEVNAryExpr's virtual member functions out of line, and convert | Dan Gohman | 2010-08-16 | 1 | -0/+33 |
| | | | | | | them to iterators. llvm-svn: 111140 | ||||
* | Use iterators instead of indices in simple cases. | Dan Gohman | 2010-08-16 | 1 | -6/+4 |
| | | | | llvm-svn: 111138 | ||||
* | Avoid gratuitous inefficiency in ifndef NDEBUG code. | Dan Gohman | 2010-08-16 | 1 | -8/+8 |
| | | | | llvm-svn: 111137 | ||||
* | Make one getAddExpr call when analyzing a+b+c+d+e+... instead of one | Dan Gohman | 2010-08-16 | 1 | -6/+31 |
| | | | | | | for each add instruction. Ditto for Mul. llvm-svn: 111136 | ||||
* | Delete an unused function. | Dan Gohman | 2010-08-16 | 1 | -35/+0 |
| | | | | llvm-svn: 111135 | ||||
* | Various optimizations. Don't compare two loops' depths | Dan Gohman | 2010-08-13 | 1 | -18/+26 |
| | | | | | | | when they are the same loop. Don't compare two instructions' loop depths when they are in the same block. llvm-svn: 111045 | ||||
* | When testing whether one loop contains another, test this directly | Dan Gohman | 2010-08-13 | 1 | -2/+2 |
| | | | | | | rather than testing whether the loop contains the other's header. llvm-svn: 111039 | ||||
* | Add a const. | Dan Gohman | 2010-08-13 | 1 | -1/+1 |
| | | | | llvm-svn: 111038 | ||||
* | When creating a symmetric SCEV with a constant operand, put | Dan Gohman | 2010-08-13 | 1 | -4/+4 |
| | | | | | | | the constant operand on the left, as that's where ScalarEvolution will end up canonicalizing to. llvm-svn: 111037 | ||||
* | An add recurrence is loop-invariant in any loop inside of its | Dan Gohman | 2010-08-13 | 1 | -0/+4 |
| | | | | | | | associated loop. This avoids potentially expensive traversals of the add recurrence's operands. llvm-svn: 111034 | ||||
* | Optimize ScalarEvolution::getAddExpr's operand factoring code by | Dan Gohman | 2010-08-12 | 1 | -4/+7 |
| | | | | | | | | having it finish processing all of the muliply operands before starting the whole getAddExpr process over again, instead of immediately after the first simplification. llvm-svn: 110916 | ||||
* | Hoist some loop-invariant code out of a hot loop. | Dan Gohman | 2010-08-12 | 1 | -2/+4 |
| | | | | llvm-svn: 110915 | ||||
* | Optimize ScalarEvolution::getAddExpr's duplicate operand detection | Dan Gohman | 2010-08-12 | 1 | -3/+7 |
| | | | | | | | | by having it finish processing the whole operand list before starting the whole getAddExpr process over again, instead of immediately after the first duplicate is found. llvm-svn: 110914 | ||||
* | When analyzing loop exit conditions combined with and and or, don't | Dan Gohman | 2010-08-11 | 1 | -14/+12 |
| | | | | | | | make any assumptions about when the two conditions will agree on when to permit the loop to exit. This fixes PR7845. llvm-svn: 110758 | ||||
* | Rename and reorder the arguments to isImpliedCond, for consistency and clarity. | Dan Gohman | 2010-08-10 | 1 | -10/+12 |
| | | | | llvm-svn: 110750 | ||||
* | Reapply r110396, with fixes to appease the Linux buildbot gods. | Owen Anderson | 2010-08-06 | 1 | -1/+1 |
| | | | | llvm-svn: 110460 | ||||
* | Revert r110396 to fix buildbots. | Owen Anderson | 2010-08-06 | 1 | -1/+1 |
| | | | | llvm-svn: 110410 | ||||
* | Don't use PassInfo* as a type identifier for passes. Instead, use the ↵ | Owen Anderson | 2010-08-05 | 1 | -1/+1 |
| | | | | | | | | address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396 | ||||
* | Fix a minor bug which resulted in intermediate calculations | Dan Gohman | 2010-08-04 | 1 | -1/+1 |
| | | | | | | using wider types than are necessary. llvm-svn: 110241 | ||||
* | Make SCEVUnknown a CallbackVH, so that it can be notified directly | Dan Gohman | 2010-08-02 | 1 | -47/+46 |
| | | | | | | | | | | | 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 | ||||
* | Prefix `next' iterator operation with `llvm::'. | Oscar Fuentes | 2010-08-02 | 1 | -2/+2 |
| | | | | | | | | Fixes potential ambiguity problems on VS 2010. Patch by nobled! llvm-svn: 110029 | ||||
* | Speculatively revert r109705 since it seems to be causing some build bot | Eric Christopher | 2010-07-29 | 1 | -45/+29 |
| | | | | | | angst. llvm-svn: 109718 | ||||
* | Factor out some of the code for updating old SCEVUnknown values, and | Dan Gohman | 2010-07-29 | 1 | -29/+45 |
| | | | | | | | | | 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 | ||||
* | Make SCEVCallbackVH::allUsesReplacedWith update the old SCEVUnknown | Dan Gohman | 2010-07-28 | 1 | -22/+39 |
| | | | | | | | | | | | | 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 | ||||
* | 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 |