| Age | Commit message (Collapse) | Author | Files | Lines | |
|---|---|---|---|---|---|
| 2011-07-26 | SCEV: Added a data structure for storing not-taken info per loop | Andrew Trick | 1 | -127/+212 | |
| exit. Added an interfaces for querying either the loop's exact/max backedge taken count or a specific loop exit's not-taken count. llvm-svn: 136100 | |||||
| 2011-07-19 | Use ArrayRef in ConstantFoldInstOperands and ConstantFoldCall. | Jay Foad | 1 | -3/+2 | |
| llvm-svn: 135477 | |||||
| 2011-07-18 | land David Blaikie's patch to de-constify Type, with a few tweaks. | Chris Lattner | 1 | -71/+71 | |
| llvm-svn: 135375 | |||||
| 2011-06-01 | SCEV: missing null check fix for r132360, dragonegg crash. | Andrew Trick | 1 | -3/+3 | |
| llvm-svn: 132416 | |||||
| 2011-05-31 | scev: Better sign-extend removal. Normalize postincrement recurrences | Andrew Trick | 1 | -31/+102 | |
| so that their sign extended forms are congruent when no overflow occurs. llvm-svn: 132360 | |||||
| 2011-05-09 | Change a few std::maps to DenseMaps. | Dan Gohman | 1 | -2/+2 | |
| llvm-svn: 131088 | |||||
| 2011-04-27 | Corrects an old, old typo in a case that doesn't seem to be reached in practice. | Andrew Trick | 1 | -1/+1 | |
| llvm-svn: 130316 | |||||
| 2011-04-27 | Test case and comment for PR9633. | Andrew Trick | 1 | -2/+3 | |
| llvm-svn: 130294 | |||||
| 2011-04-27 | Fix for PR9633 [indvars] Assertion `isa<X>(Val) && "cast<Ty>() argument of ↵ | Andrew Trick | 1 | -2/+7 | |
| incompatible type!"' failed. Added a type check in ScalarEvolution::computeSCEVAtScope to handle the case in which operands of an AddRecExpr in the current scope are folded. llvm-svn: 130271 | |||||
| 2011-04-25 | Fix an iterator invalidation bug. | Dan Gohman | 1 | -9/+16 | |
| llvm-svn: 130166 | |||||
| 2011-04-15 | Fix a ton of comment typos found by codespell. Patch by | Chris Lattner | 1 | -1/+1 | |
| Luis Felipe Strano Moraes! llvm-svn: 129558 | |||||
| 2011-03-17 | Added isValidRewrite() to check the result of ScalarEvolutionExpander. | Andrew Trick | 1 | -0/+30 | |
| SCEV may generate expressions composed of multiple pointers, which can lead to invalid GEP expansion. Until we can teach SCEV to follow strict pointer rules, make sure no bad GEPs creep into IR. Fixes rdar://problem/9038671. llvm-svn: 127839 | |||||
| 2011-03-15 | Remove getMinusSCEVForExitTest(). | Andrew Trick | 1 | -106/+3 | |
| This function performed acrobatics to prove no-self-wrap, which we now have for free. llvm-svn: 127643 | |||||
| 2011-03-15 | Propagate SCEV no-wrap flags whenever possible. | Andrew Trick | 1 | -60/+72 | |
| This needs review. llvm-svn: 127638 | |||||
| 2011-03-14 | Negating a recurrence preserves no-self-wrap. | Andrew Trick | 1 | -0/+11 | |
| llvm-svn: 127593 | |||||
| 2011-03-14 | HowFarToZero can compute a trip count as long as the recurrence has ↵ | Andrew Trick | 1 | -16/+20 | |
| no-self-wrap. llvm-svn: 127591 | |||||
| 2011-03-14 | Added SCEV::NoWrapFlags to manage unsigned, signed, and self wrap | Andrew Trick | 1 | -126/+187 | |
| properties. Added the self-wrap flag for SCEV::AddRecExpr. A slew of temporary FIXMEs indicate the intention of the no-self-wrap flag without changing behavior in this revision. llvm-svn: 127590 | |||||
| 2011-03-09 | When SCEV can determine the loop test is X < X, set ExactBECount=0. | Andrew Trick | 1 | -1/+17 | |
| When ExactBECount is a constant, use it for MaxBECount. When MaxBECount cannot be computed, replace it with ExactBECount. Fixes PR9424. llvm-svn: 127342 | |||||
| 2011-03-09 | whitespace | Andrew Trick | 1 | -18/+18 | |
| llvm-svn: 127340 | |||||
| 2011-02-13 | teach SCEV that the scale and addition of an inbounds gep don't NSW. | Chris Lattner | 1 | -2/+5 | |
| This fixes a FIXME in scev-aa.ll (allowing a new no-alias result) and generally makes things more precise. llvm-svn: 125449 | |||||
| 2011-02-11 | Per discussion with Dan G, inbounds geps *certainly* can have | Chris Lattner | 1 | -3/+14 | |
| unsigned overflow (e.g. "gep P, -1"), and while they can have signed wrap in theoretical situations, modelling an AddRec as not having signed wrap is going enough for any case we can think of today. In the future if this isn't enough, we can revisit this. Modeling them as having NUW isn't causing any known problems either FWIW. llvm-svn: 125410 | |||||
| 2011-01-26 | Fix memory corruption. If one of the SCEV creation functions calls another but | Nick Lewycky | 1 | -0/+2 | |
| doesn't return immediately after then the insert position in UniqueSCEVs will be out of date. No test because this is a memory corruption issue. Fixes PR9051! llvm-svn: 124282 | |||||
| 2011-01-24 | Add a comment. | Dan Gohman | 1 | -0/+1 | |
| llvm-svn: 124126 | |||||
| 2011-01-23 | Simplify some code with no functionality change. Make the test a lot more | Nick Lewycky | 1 | -12/+4 | |
| robust against smarter optimizations, using the power of FileCheck. llvm-svn: 124081 | |||||
| 2011-01-23 | Use value ranges to fold ext(trunc) in SCEV when possible. | Nick Lewycky | 1 | -0/+34 | |
| llvm-svn: 124062 | |||||
| 2011-01-22 | Have SCEV turn sext(x) into zext(x) when x is s>= 0. This applies many times in | Nick Lewycky | 1 | -0/+4 | |
| "make check" alone. llvm-svn: 124046 | |||||
| 2011-01-19 | Similarly, analyze truncate through multiply. | Nick Lewycky | 1 | -0/+14 | |
| llvm-svn: 123842 | |||||
| 2011-01-19 | Add a missed SCEV fold that is required to continue analyzing the IR produced | Nick Lewycky | 1 | -0/+14 | |
| by indvars through the scev expander. trunc(add x, y) --> add(trunc x, y). Currently SCEV largely folds the other way which is probably wrong, but preserved to minimize churn. Instcombine doesn't do this fold either, demonstrating a missed optz'n opportunity on code doing add+trunc+add. llvm-svn: 123838 | |||||
| 2011-01-19 | Add a missing SCEV simplification sext(zext x) --> zext x. | Nick Lewycky | 1 | -0/+4 | |
| llvm-svn: 123832 | |||||
| 2011-01-11 | some comment improvements. | Chris Lattner | 1 | -3/+4 | |
| llvm-svn: 123243 | |||||
| 2011-01-11 | Temporarily revert 123133, it's causing some regressions and I'm trying | Eric Christopher | 1 | -8/+4 | |
| to get a testcase. llvm-svn: 123225 | |||||
| 2011-01-11 | the GEP faq says that only inbounds geps are guaranteed to not overflow. | Chris Lattner | 1 | -2/+3 | |
| llvm-svn: 123218 | |||||
| 2011-01-09 | add a fixme: ir isn't expressive enough. | Chris Lattner | 1 | -0/+1 | |
| llvm-svn: 123139 | |||||
| 2011-01-09 | Step #4 in improving trip count analysis: HowFarToZero can analyze | Chris Lattner | 1 | -2/+11 | |
| NUW AddRec's much more aggressively. We now get a trip count for @test2 in nsw.ll llvm-svn: 123138 | |||||
| 2011-01-09 | rearrange some code, no functionality change. | Chris Lattner | 1 | -41/+45 | |
| llvm-svn: 123136 | |||||
| 2011-01-09 | Step #3 to improving trip count analysis: If we fold | Chris Lattner | 1 | -4/+8 | |
| a + {b,+,stride} into {a+b,+,stride} (because a is LIV), then the resultant AddRec is NUW/NSW if the client says it is. llvm-svn: 123133 | |||||
| 2011-01-09 | Step #2 to improve trip count analysis for loops like this: | Chris Lattner | 1 | -6/+105 | |
| void f(int* begin, int* end) { std::fill(begin, end, 0); } which turns into a != exit expression where one pointer is strided and (thanks to step #1) known to not overflow, and the other is loop invariant. The observation here is that, though the IV is strided by 4 in this case, that the IV *has* to become equal to the end value. It cannot "miss" the end value by stepping over it, because if it did, the strided IV expression would eventually wrap around. Handle this by turning A != B into "A-B != 0" where the A-B part is known to be NUW. llvm-svn: 123131 | |||||
| 2011-01-09 | teach SCEV analysis of PHI nodes that PHI recurences formed | Chris Lattner | 1 | -0/+5 | |
| with GEP instructions are always NUW, because PHIs cannot wrap the end of the address space. llvm-svn: 123105 | |||||
| 2011-01-09 | reduce indentation. Print <nuw> and <nsw> when dumping SCEV AddRec's | Chris Lattner | 1 | -49/+54 | |
| that have the bit set. llvm-svn: 123104 | |||||
| 2010-12-07 | PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and | Jay Foad | 1 | -2/+2 | |
| zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method trunc(), to be const and to return a new value instead of modifying the object in place. llvm-svn: 121120 | |||||
| 2010-12-01 | PR5207: Rename overloaded APInt methods set(), clear(), flip() to | Jay Foad | 1 | -1/+1 | |
| setAllBits(), setBit(unsigned), etc. llvm-svn: 120564 | |||||
| 2010-11-20 | Simplify code. No change in functionality. | Benjamin Kramer | 1 | -2/+2 | |
| llvm-svn: 119908 | |||||
| 2010-11-19 | Silence warning about an uninitialized variable. | Benjamin Kramer | 1 | -1/+1 | |
| llvm-svn: 119800 | |||||
| 2010-11-18 | Factor code for testing whether replacing one value with another | Duncan Sands | 1 | -17/+2 | |
| preserves LCSSA form out of ScalarEvolution and into the LoopInfo class. Use it to check that SimplifyInstruction simplifications are not breaking LCSSA form. Fixes PR8622. llvm-svn: 119727 | |||||
| 2010-11-18 | Introduce memoization for ScalarEvolution dominates and properlyDominates | Dan Gohman | 1 | -58/+56 | |
| queries, and SCEVExpander getRelevantLoop queries. llvm-svn: 119595 | |||||
| 2010-11-17 | Factor out the code for purging a SCEV from all the various memoization maps. | Dan Gohman | 1 | -26/+13 | |
| Some of these maps may merge in the future, but for now it's convenient to have a utility function for them. llvm-svn: 119587 | |||||
| 2010-11-17 | Merge the implementations of isLoopInvariant and hasComputableLoopEvolution, and | Dan Gohman | 1 | -71/+58 | |
| memoize the results. This improves compile time in code which highly complex expressions which get queried many times. llvm-svn: 119584 | |||||
| 2010-11-17 | Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperand | Dan Gohman | 1 | -105/+167 | |
| to ScalarEvolution. Delete SCEV::~SCEV. SCEV is no longer virtual. llvm-svn: 119578 | |||||
| 2010-11-17 | Move SCEV::dominates and properlyDominates to ScalarEvolution. | Dan Gohman | 1 | -58/+91 | |
| llvm-svn: 119570 | |||||
| 2010-11-17 | Move SCEV::isLoopInvariant and hasComputableLoopEvolution to be member | Dan Gohman | 1 | -81/+135 | |
| functions of ScalarEvolution, in preparation for memoization and other optimizations. llvm-svn: 119562 | |||||
