1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00
llvm-mirror/test/Transforms/CorrelatedValuePropagation
Nikita Popov b926818b2f [CVP] Guard against poison in common phi value transform (PR50399)
The common phi value transform replaces constants with values that
have the same value as the constant on a given edge. However, LVI
generally only provides information that is correct up to poison,
so this can end up replacing a well-defined value with poison.
D69442 addressed an instance of this problem by clearing poison
flags on the generating instruction, which was sufficient at the
time. rGa917fb89dc28 made LVI's edge value analysis slightly more
powerful, and clearing poison flags is no longer sufficient.

This patch changes the transform to instead explicitly guard against
a poison value instead. This should be satisfied for most cases due
to a prior branch on poison.

Fixes https://bugs.llvm.org/show_bug.cgi?id=50399.

Differential Revision: https://reviews.llvm.org/D102966
2021-05-25 20:47:17 +02:00
..
2010-09-02-Trunc.ll
2010-09-26-MergeConstantRange.ll
abs.ll [CVP] @llvm.abs() handling 2021-04-10 16:47:31 +03:00
add.ll [CVP] Remove -cvp-dont-add-nowrap-flags option 2021-03-07 18:19:31 +01:00
alloca.ll
and.ll [CVP] Add more tests for select with overdefined operand (NFC) 2021-04-04 13:54:06 +02:00
ashr.ll
basic.ll [CVP] Add more tests for select with overdefined operand (NFC) 2021-04-04 13:54:06 +02:00
conflict.ll
crash.ll
deopt.ll
guards.ll
icmp.ll [LVI] Handle mask not equal zero conditions 2021-05-01 23:08:49 +02:00
merge-range-and-undef.ll
min-max.ll [CVP] @llvm.[us]{min,max}() intrinsics handling 2021-04-11 00:33:47 +03:00
minmaxabs.ll [CVP] @llvm.abs() handling 2021-04-10 16:47:31 +03:00
mul.ll [CVP] Remove -cvp-dont-add-nowrap-flags option 2021-03-07 18:19:31 +01:00
non-null.ll
overflow_predicate.ll
overflows.ll
phi-common-val.ll [CVP] Guard against poison in common phi value transform (PR50399) 2021-05-25 20:47:17 +02:00
pointer.ll
pr35807.ll
profmd.ll Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
range.ll [LVI] Use range metadata on intrinsics 2021-04-02 16:45:31 +02:00
sdiv.ll
select.ll
sext.ll
shl.ll [CVP] Remove -cvp-dont-add-nowrap-flags option 2021-03-07 18:19:31 +01:00
srem.ll
sub.ll [CVP] Remove -cvp-dont-add-nowrap-flags option 2021-03-07 18:19:31 +01:00
udiv.ll
urem.ll