Benjamin Kramer
caa5d4f15d
CVP: If we have a PHI with an incoming select, try to skip the select.
...
This is a common pattern with dyn_cast and similar constructs, when the
PHI no longer depends on the select it can often be turned into a simpler
construct or even get hoisted out of the loop.
PR15340.
llvm-svn: 175995
2013-02-24 15:34:43 +00:00
Benjamin Kramer
02f21547cd
Fix invalid IR in test, missing incoming value for PHI node.
...
llvm-svn: 175994
2013-02-24 15:34:29 +00:00
Benjamin Kramer
4193023537
CorrelatedPropagation: BasicBlock::removePredecessor can simplify PHI nodes. If the it's the condition of a SwitchInst, reload it.
...
Fixes PR13972.
llvm-svn: 164818
2012-09-28 10:42:50 +00:00
Nuno Lopes
52920835c9
make LazyValueInfo analyze the default case of switch statements (we know that in the default branch the value cannot be any of the switch cases)
...
llvm-svn: 159353
2012-06-28 16:13:37 +00:00
Nuno Lopes
873f05c3ff
make LVI::getEdgeValue() always intersect the constraints of the edge with the range of the block. Previously it was only performing the intersection for a few cases, thus losing precision
...
llvm-svn: 159320
2012-06-28 01:16:18 +00:00
Nuno Lopes
4b9a5ae769
allow LazyValueInfo::getEdgeValue() to reason about multiple edges from the same switch instruction by doing union of ranges (which may still be conservative, but it's more aggressive than before)
...
llvm-svn: 157071
2012-05-18 21:02:10 +00:00
Nuno Lopes
4af12ec75d
add test case for bugfix in r157032
...
llvm-svn: 157058
2012-05-18 17:44:58 +00:00
Duncan Sands
8139573edf
Eliminate switch cases that can never match, for example removes all
...
negative switch cases if the branch condition is known to be positive.
Inspired by a recent improvement to GCC's VRP.
llvm-svn: 152405
2012-03-09 13:45:18 +00:00
Benjamin Kramer
2a3719125f
LVI: Recognize the form instcombine canonicalizes range checks into when forming constant ranges.
...
This could probably be made a lot smarter, but this is a common case and doesn't require LVI to scan a lot
of code. With this change CVP can optimize away the "shift == 0" case in Hashing.h that only gets hit when
"shift" is in a range not containing 0.
llvm-svn: 151919
2012-03-02 15:34:43 +00:00
Eli Bendersky
4afdeeb682
Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed.
...
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
2012-02-16 06:28:33 +00:00
Nick Lewycky
8f0b243661
Test for lazy value info's ability to prove the absense of NULLs in pointers.
...
llvm-svn: 123601
2011-01-16 21:57:20 +00:00
Owen Anderson
de42e1136e
Fix PR8790, another instance where unreachable code can cause instruction simplification to fail,
...
this case involve a select that simplifies to itself.
llvm-svn: 121817
2010-12-15 00:55:35 +00:00
Owen Anderson
14cf6bfa0f
Update testcase since we're no longer doing the constant forwarding inline with correlated value propagation.
...
llvm-svn: 117712
2010-10-29 21:18:23 +00:00
Owen Anderson
37a6d67bd6
Add missing RUN line to this test.
...
llvm-svn: 114106
2010-09-16 18:46:23 +00:00
Owen Anderson
6f3516065f
It is possible, under specific circumstances involving ptrtoint 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
2010-09-16 18:28:33 +00:00
Owen Anderson
521e8dfef8
Fix PR8161, in which an unreachable loop causes recursive instruction simplification to try
...
to replace an instruction with itself. Add a predicate to the simplifier to prevent this case.
llvm-svn: 114097
2010-09-16 17:42:36 +00:00
Owen Anderson
94d98b12c8
Propagate non-local comparisons. Fixes PR1757.
...
llvm-svn: 113025
2010-09-03 22:47:08 +00:00
Owen Anderson
9161c79ffe
Add support for simplifying a load from a computed value to a load from a global when it
...
is provable that they're equivalent. This fixes PR4855.
llvm-svn: 112994
2010-09-03 19:08:37 +00:00
Owen Anderson
91cc1ae13c
Add PR number to test.
...
llvm-svn: 112971
2010-09-03 16:58:25 +00:00
Owen Anderson
86201cfdd9
Fix typo. I accidentally edited the wrong file before my last commit.
...
llvm-svn: 112851
2010-09-02 19:52:06 +00:00
Owen Anderson
3206920eb2
Fix a bug in LazyValueInfo that CorrelatedValuePropagation exposed: In the LVI lattice, undef and the full set ConstantRange should not
...
be treated as equivalent.
llvm-svn: 112843
2010-09-02 18:23:58 +00:00
Owen Anderson
e930c65b2c
Rename test directory to reflect new pass name.
...
llvm-svn: 112592
2010-08-31 07:50:31 +00:00