summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/LazyValueInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Now with fewer extraneous semicolons!Owen Anderson2010-10-071-1/+1
| | | | llvm-svn: 115996
* It is possible, under specific circumstances involving ptrtoint ↵Owen Anderson2010-09-161-3/+7
| | | | | | | | | | | | ConstantExpr's, for LVI to end up trying to merge a Constant into a ConstantRange. Handle this conservatively for now, rather than asserting. The testcase is more complex that I would like, but the manifestation of the problem is sensitive to iteration orders and the state of the LVI cache, and I have not been able to reproduce it with manually constructed or simplified cases. Fixes PR8162. llvm-svn: 114103
* Clean up some of the PassRegistry implementation, and pImpl-ize it to reduce ↵Owen Anderson2010-09-071-0/+2
| | | | | | | | #include clutter and exposing internal details. llvm-svn: 113252
* Add completely hokey binary-and and binary-or operations to ConstantRange andNick Lewycky2010-09-071-0/+6
| | | | | | teach LazyValueInfo to use them. llvm-svn: 113196
* zap dead code.Chris Lattner2010-09-041-4/+0
| | | | llvm-svn: 113073
* Add support for simplifying a load from a computed value to a load from a ↵Owen Anderson2010-09-031-2/+11
| | | | | | | | global when it is provable that they're equivalent. This fixes PR4855. llvm-svn: 112994
* Remove incorrect and poorly tested code for trying to reason about values on ↵Owen Anderson2010-09-021-16/+2
| | | | | | | | default edges of switches. Just return the conservatively correct answer. llvm-svn: 112876
* Fix a bug in LazyValueInfo that CorrelatedValuePropagation exposed: In the ↵Owen Anderson2010-09-021-4/+0
| | | | | | | | LVI lattice, undef and the full set ConstantRange should not be treated as equivalent. llvm-svn: 112843
* It is possible to try to merge a not-constant with a constantrage, when ↵Owen Anderson2010-08-301-2/+3
| | | | | | | | | dealing with ptrtoint ConstantExpr's. Unfortunately, the only testcase I have for this is huge and doesn't reduce well because the error is sensitive to iteration-order issues, since the problem only occurs when merging values in a particular order. llvm-svn: 112489
* Improve the precision of getConstant().Owen Anderson2010-08-271-0/+5
| | | | llvm-svn: 112323
* Use LVI to eliminate conditional branches where we've tested a related ↵Owen Anderson2010-08-271-1/+2
| | | | | | | | condition previously. Update tests for this change. This fixes PR5652. llvm-svn: 112270
* In the default address space, any GEP off of null results in a trap value if ↵Owen Anderson2010-08-251-4/+5
| | | | | | | | | you try to load it. Thus, any load in the default address space that completes implies that the base value that it GEP'd from was not null. llvm-svn: 112015
* NULL loads are only invalid in the default address space.Owen Anderson2010-08-241-1/+1
| | | | llvm-svn: 111972
* Add support for inferring values for the default cases of switches.Owen Anderson2010-08-241-3/+22
| | | | llvm-svn: 111971
* Add support for inferring that a load from a pointer implies that it is not ↵Owen Anderson2010-08-241-4/+17
| | | | | | null. llvm-svn: 111959
* Don't assume that all constants with integer types are ConstantInts.Owen Anderson2010-08-241-2/+11
| | | | llvm-svn: 111906
* Use ConstantRange to propagate information through value definitions.Owen Anderson2010-08-181-4/+83
| | | | llvm-svn: 111425
* Inform LazyValueInfo whenever a block is deleted, to avoid dangling pointer ↵Owen Anderson2010-08-181-21/+47
| | | | | | issues. llvm-svn: 111382
* Fix another iterator invalidation that caused a *really* nasty ↵Owen Anderson2010-08-161-6/+7
| | | | | | miscompilation in 403.gcc. llvm-svn: 111210
* Fix a subtle use-after-free issue.Owen Anderson2010-08-111-1/+4
| | | | llvm-svn: 110863
* Improve indentation.Owen Anderson2010-08-111-27/+28
| | | | llvm-svn: 110778
* Now that we're using ConstantRange to represent potential values, make use ↵Owen Anderson2010-08-101-8/+35
| | | | | | | | of that represenation to create constraints from comparisons other than eq/neq. llvm-svn: 110742
* Switch over to using ConstantRange to track integral values.Owen Anderson2010-08-101-7/+44
| | | | llvm-svn: 110714
* Add ConstantRange information to the debugging output.Owen Anderson2010-08-091-0/+3
| | | | llvm-svn: 110598
* Add the beginnings of infrastructure for range tracking.Owen Anderson2010-08-051-6/+60
| | | | llvm-svn: 110388
* Split the tag and value members of LVILatticeVal in preparation for ↵Owen Anderson2010-08-051-14/+14
| | | | | | expanding the lattice to something that won't fit in two bits. llvm-svn: 110383
* Add an initial implementation of PHI translation for LazyValueInfo. This ↵Owen Anderson2010-07-301-35/+72
| | | | | | | | involves rolling back some of my earlier data structure improvements until I can ensure that there are no iterator invalidation problems. llvm-svn: 109935
* Revert my last two patches to LVI, which recent changes have exposed a ↵Owen Anderson2010-07-301-56/+94
| | | | | | miscompilation in. llvm-svn: 109889
* Pass the queried value by argument rather than in a member, in preparation ↵Owen Anderson2010-07-281-36/+25
| | | | | | for supporting PHI translation. llvm-svn: 109701
* Get rid of LVIQuery as a distinct data structure, so that we don't have to ↵Owen Anderson2010-07-281-93/+66
| | | | | | initialize a new set of maps on every query. llvm-svn: 109679
* Rearrange several datastructures in LazyValueInfo to improve compile time.Owen Anderson2010-07-271-69/+35
| | | | | | This is still not perfect, but better than it was before. llvm-svn: 109563
* Add an initial implementation of LazyValueInfo updating for JumpThreading. ↵Owen Anderson2010-07-261-4/+89
| | | | | | Disabled for now. llvm-svn: 109424
* Fix batch of converting RegisterPass<> to INTIALIZE_PASS().Owen Anderson2010-07-211-2/+2
| | | | llvm-svn: 109045
* Convert debug messages to use dbgs(). Generally this meansDavid Greene2009-12-231-7/+7
| | | | | | s/errs/dbgs/g except for certain special cases. llvm-svn: 92040
* typo spotted by duncan.Chris Lattner2009-11-161-1/+1
| | | | llvm-svn: 88884
* teach LVI to infer edge information from switch instructions.Chris Lattner2009-11-151-6/+24
| | | | | | | This allows JT to eliminate a ton of infeasible edges when handling code like the templates in PatternMatch.h llvm-svn: 88869
* fix a logic error that would cause LVI-JT to miscompileChris Lattner2009-11-151-1/+1
| | | | | | some conditionals llvm-svn: 88868
* implement the first stab at caching queries. This isn't correctChris Lattner2009-11-151-13/+97
| | | | | | | (because the invalidation logic is missing) but LVI isn't enabled by default anyway. llvm-svn: 88867
* refactor a bunch of code forming the new LazyValueInfoCacheChris Lattner2009-11-151-94/+172
| | | | | | and LVIQuery classes, no functionality change. llvm-svn: 88866
* various fixes to the lattice transfer functions.Chris Lattner2009-11-121-6/+27
| | | | llvm-svn: 86952
* Add a new getPredicateOnEdge method which returns more rich information forChris Lattner2009-11-121-17/+85
| | | | | | | constant constraints. Improve the LVI lattice to include inequality constraints. llvm-svn: 86950
* expose edge information and switch j-t to use it.Chris Lattner2009-11-121-0/+21
| | | | llvm-svn: 86920
* move some stuff into DEBUG's and turn on lazy-value-info forChris Lattner2009-11-121-3/+5
| | | | | | the basic.ll testcase. llvm-svn: 86918
* make LazyValueInfo actually to some stuff. This isn't very tested but improvesChris Lattner2009-11-111-8/+152
| | | | | | strswitch. llvm-svn: 86889
* stub out some LazyValueInfo interfaces, and have JumpThreadingChris Lattner2009-11-111-1/+116
| | | | | | | | start using them in a trivial way when -enable-jump-threading-lvi is passed. enable-jump-threading-lvi will be my playground for awhile. llvm-svn: 86789
* Stub out a new lazy value info pass, which will eventuallyChris Lattner2009-11-111-0/+31
vend value constraint information to the optimizer. llvm-svn: 86767
OpenPOWER on IntegriCloud