Benjamin Kramer
255dea4b90
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
8650fb8e0e
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
e6e049020b
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
ac59380dfd
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
b63d6cdf79
add test case for bugfix in r157032
...
llvm-svn: 157058
2012-05-18 17:44:58 +00:00
Duncan Sands
cca89124a2
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
d9d80b1dde
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
924f9a671d
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
872a453ada
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
35609d97ae
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
8e7b73743d
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
20154b3ed4
Add missing RUN line to this test.
...
llvm-svn: 114106
2010-09-16 18:46:23 +00:00
Owen Anderson
140296f5c0
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
94532cb297
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
c91c1a205a
Propagate non-local comparisons. Fixes PR1757.
...
llvm-svn: 113025
2010-09-03 22:47:08 +00:00
Owen Anderson
c725462245
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
50d8c8888c
Add PR number to test.
...
llvm-svn: 112971
2010-09-03 16:58:25 +00:00
Owen Anderson
67dee4dcac
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
a8c896b704
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
064b139c8d
Rename test directory to reflect new pass name.
...
llvm-svn: 112592
2010-08-31 07:50:31 +00:00