llvm-project/llvm/test/Transforms/CorrelatedValuePropagation
Florian Hahn 82ce334727 [ValueLattice] Merging unknown with empty CR is unknown.
Currently an unknown/undef value is marked as overdefined when merged
with an empty range. An empty range can occur in unreachable/dead code.
When merging the new unknown state (= no value known yet) with an empty
range, there still isn't any information about the value yet and we can
stay in unknown.

This gives a few nice improvements on the number of instructions removed
by IPSCCP:
Same hash: 170 (filtered out)
Remaining: 67
Metric: sccp.IPNumInstRemoved

Program                                        base     patch    diff
 test-suite...rks/FreeBench/mason/mason.test     3.00   6.00 100.0%
 test-suite...nchmarks/McCat/18-imp/imp.test     3.00   5.00 66.7%
 test-suite...C/CFP2000/179.art/179.art.test     2.00   3.00 50.0%
 test-suite...ijndael/security-rijndael.test     2.00   3.00 50.0%
 test-suite...ks/Prolangs-C/agrep/agrep.test    40.00  58.00 45.0%
 test-suite...ce/Applications/Burg/burg.test    26.00  37.00 42.3%
 test-suite...cCat/03-testtrie/testtrie.test     3.00   4.00 33.3%
 test-suite...Source/Benchmarks/sim/sim.test    29.00  36.00 24.1%
 test-suite.../Applications/spiff/spiff.test     9.00  11.00 22.2%
 test-suite...s/FreeBench/neural/neural.test     5.00   6.00 20.0%
 test-suite...pplications/treecc/treecc.test    66.00  79.00 19.7%
 test-suite...langs-C/football/football.test    85.00 101.00 18.8%
 test-suite...ce/Benchmarks/PAQ8p/paq8p.test    90.00 105.00 16.7%
 test-suite...oxyApps-C++/miniFE/miniFE.test    37.00  43.00 16.2%
 test-suite...rks/FreeBench/pifft/pifft.test    26.00  30.00 15.4%
 test-suite...lications/sqlite3/sqlite3.test   481.00  548.00  13.9%
 test-suite...marks/7zip/7zip-benchmark.test   4875.00 5522.00 13.3%
 test-suite.../CINT2000/176.gcc/176.gcc.test   1117.00 1197.00  7.2%
 test-suite...0.perlbench/400.perlbench.test   1618.00 1732.00  7.0%

Reviewers: efriedma, nikic, davide

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D78667
2020-04-25 13:43:34 +01:00
..
2010-09-02-Trunc.ll
2010-09-26-MergeConstantRange.ll
add.ll
alloca.ll
and.ll [CVP] Remove a masking operation if range information implies it's a noop 2019-10-11 03:48:56 +00:00
ashr.ll
basic.ll
conflict.ll
crash.ll
deopt.ll
guards.ll
icmp.ll [CVP] Simplify cmp of local phi node 2020-02-26 20:36:41 +01:00
merge-range-and-undef.ll [ValueLattice] Distinguish between constant ranges with/without undef. 2020-03-31 12:50:20 +01:00
mul.ll [CVP] Deduce no-wrap on `mul` 2019-10-21 08:21:44 +00:00
non-null.ll
overflow_predicate.ll
overflows.ll [CVP] After proving that @llvm.with.overflow()/@llvm.sat() don't overflow, also try to prove other no-wrap 2019-10-18 19:32:47 +00:00
phi-common-val.ll [CVP] prevent propagating poison when substituting edge values into a phi (PR43802) 2019-10-28 08:58:28 -04:00
pointer.ll
pr35807.ll
profmd.ll
range.ll [ConstantRange] Use APInt::or/APInt::and for single elements. 2020-04-01 09:50:24 +01:00
sdiv.ll
select.ll [JT][CVP] Regenerate test checks, again 2019-11-01 22:27:48 +01:00
sext.ll [CVP} Replace SExt with ZExt if the input is known-non-negative 2019-10-08 20:29:48 +00:00
shl.ll [CVP] No-wrap deduction for `shl` 2019-10-21 21:31:19 +00:00
srem.ll
sub.ll [ValueLattice] Merging unknown with empty CR is unknown. 2020-04-25 13:43:34 +01:00
udiv.ll [llvm] Fix broken cases of 'CHECK[^:]*$' in tests 2020-01-28 09:52:59 -07:00
urem.ll [llvm] Fix broken cases of 'CHECK[^:]*$' in tests 2020-01-28 09:52:59 -07:00