llvm-mirror/test/Transforms/InstSimplify
Nikita Popov 556e0d5173 [InstSimplify] Protect against more poison in SimplifyWithOpReplaced (PR47322)
Replace the check for poison-producing instructions in
SimplifyWithOpReplaced() with the generic helper canCreatePoison()
that properly handles poisonous shifts and thus avoids the problem
from PR47322.

This additionally fixes a bug in IIQ.UseInstrInfo=false mode, which
previously could have caused this code to ignore poison flags.
Setting UseInstrInfo=false should reduce the possible optimizations,
not increase them.

This is not a full solution to the problem, as poison could be
introduced more indirectly. This is just a minimal, easy to backport
fix.

Differential Revision: https://reviews.llvm.org/D86834
2020-08-29 21:59:39 +02:00
..
ConstProp [ConstProp] Remove ConstantPropagation 2020-08-26 15:51:30 -07:00
2010-12-20-Boolean.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
2011-01-14-Thread.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
2011-02-01-Vector.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
2011-09-05-InsertExtractValue.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
2011-10-27-BinOpCrash.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
2011-11-23-MaskedBitsCrash.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
2013-04-19-ConstantFoldingCrash.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
abs_intrinsic.ll [ValueTracking] Add abs intrinsics support to computeConstantRange() 2020-08-12 22:28:46 +02:00
add-mask.ll [ValueTracking] Add computeKnownBits DemandedElts support to masked add instructions (PR36319) 2020-03-18 21:50:56 +00:00
add.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
addsub.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
and-icmps-same-ops.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
and-or-icmp-min-max.ll [InstSimplify] fold and/or of compares with equality to min/max constant 2020-04-23 09:16:10 -04:00
and-or-icmp-nullptr.ll [InstSimplify] fold and/or of compares with equality to min/max constant 2020-04-23 09:16:10 -04:00
and-or-icmp-zero.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
AndOrXor.ll [InstSimplify] add tests for logic-of-icmp with min/max constant; NFC 2020-04-19 08:24:38 -04:00
assume_icmp.ll [InstSimplify] Fold icmp with dominating assume 2020-07-03 18:53:58 +02:00
assume-non-zero.ll [ValueTracking] isKnownNonZero() should take non-null-ness assumptions into consideration (PR43267) 2019-12-20 01:47:57 +03:00
bitcast-vector-fold.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
bitreverse-fold.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
bitreverse.ll [ValueTracking] Add computeKnownBits DemandedElts support to EXTRACTELEMENT/OR/BSWAP/BITREVERSE instructions (PR36319) 2020-03-18 18:49:58 +00:00
bswap.ll [ValueTracking] Add computeKnownBits DemandedElts support to EXTRACTELEMENT/OR/BSWAP/BITREVERSE instructions (PR36319) 2020-03-18 18:49:58 +00:00
call.ll [InstSimplify] Extract abs intrinsic tests into separate file (NFC) 2020-08-12 22:28:46 +02:00
cast-unsigned-icmp-cmp-0.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
cast.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
cmp_ext.ll [InstSimplify] Simplify comparison between zext(x) and sext(x) 2020-07-04 11:03:00 +02:00
cmp_of_min_max.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
compare.ll [InstSimplify] Peephole optimization for icmp (urem X, Y), X 2020-08-04 20:48:37 +02:00
constantfold-add-nuw-allones-to-allones.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
constantfold-shl-nuw-C-to-C.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
constfold-constrained.ll [FEnv] Constfold some unary constrained operations 2020-03-28 12:28:33 +07:00
dead-code-removal.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
distribute.ll [InstSimplify] add tests for expandCommutativeBinOp; NFC 2020-07-29 23:21:39 +09:00
div-by-0-guard-before-smul_ov-not.ll [InstSimplify] Drop leftover "division-by-zero guard" around @llvm.umul.with.overflow inverted overflow bit 2019-08-29 12:48:04 +00:00
div-by-0-guard-before-smul_ov.ll [InstSimplify] Drop leftover "division-by-zero guard" around @llvm.umul.with.overflow overflow bit 2019-08-29 12:47:50 +00:00
div-by-0-guard-before-umul_ov-not.ll [InstSimplify] Drop leftover "division-by-zero guard" around @llvm.umul.with.overflow inverted overflow bit 2019-08-29 12:48:04 +00:00
div-by-0-guard-before-umul_ov.ll [InstSimplify] Drop leftover "division-by-zero guard" around @llvm.umul.with.overflow overflow bit 2019-08-29 12:47:50 +00:00
div.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
exact-nsw-nuw.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
extract-element.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
fast-math.ll [ValueTracking] fix CannotBeNegativeZero() to disregard 'nsz' FMF 2020-05-05 16:04:59 -04:00
fcmp-select.ll [InstSimplify] use FMF to improve fcmp+select fold 2019-11-04 08:29:56 -05:00
fdiv.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
floating-point-arithmetic.ll [ValueTracking] fix miscompile in maxnum case of cannotBeOrderedLessThanZeroImpl (PR46627) 2020-07-14 08:08:09 -04:00
floating-point-compare.ll [InstSimplify] fold fcmp using isKnownNeverInfinity + isKnownNeverNaN 2020-07-26 09:04:37 -04:00
fold-intrinsics.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
fp-nan.ll [InstSimplify] simplify FP ops harder with FMF 2020-03-12 09:13:28 -04:00
fp-undef.ll [InstSimplify] simplify FP ops harder with FMF (part 2) 2020-03-12 09:53:20 -04:00
freeze-noundef.ll [ValueTracking] Let getGuaranteedNonPoisonOp find multiple non-poison operands 2020-08-26 04:40:21 +09:00
freeze.ll [ValueTracking] Instruction::isBinaryOp should be used for constexprs 2020-07-26 21:48:51 +09:00
gep.ll [SVE] Make ConstantFoldGetElementPtr work for scalable vectors of indices 2020-06-25 07:28:19 +01:00
icmp-abs-nabs.ll [ValueTracking] When calculating known bits for integer abs, make sure we're looking at a negate and not just any instruction with the nsw flag set. 2019-08-07 18:28:16 +00:00
icmp-bool-constant.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
icmp-constant.ll [InstSimplify] avoid crashing by trying to rem-by-zero 2020-08-06 16:06:31 -04:00
icmp-ranges.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
icmp.ll [NFCI][InstSimplify] Add CHECK-LABEL to new icmp.ll test 2020-06-25 01:10:35 +03:00
implies.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
insertelement.ll [InstSimplify] allow insertelement-with-undef fold if poison-safe 2020-05-01 10:34:29 -04:00
known-never-nan.ll [FPEnv] Intrinsic llvm.roundeven 2020-05-26 19:24:58 +07:00
known-non-zero.ll [ValueTracking] Allow context-sensitive nullness check for non-pointers 2019-12-09 15:15:52 -06:00
load-relative-32.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
load-relative.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
load.ll [AssumeBundles] add cannonicalisation to the assume builder 2020-06-19 10:32:26 +02:00
log2-pow2-intrinsic.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
log10-pow10-intrinsic.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
log-exp-intrinsic.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
logic-of-fcmps.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
maxmin_intrinsics.ll [InstSimplify] Fold min/max intrinsic based on icmp of operands 2020-08-26 22:02:57 +02:00
maxmin.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
mul.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
negate.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
noalias-ptr.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
null-ptr-is-valid-attribute.ll ValueTracking: Fix isKnownNonZero for non-0 null pointers for byval 2020-07-16 13:50:49 -04:00
null-ptr-is-valid.ll ValueTracking: Fix isKnownNonZero for non-0 null pointers for byval 2020-07-16 13:50:49 -04:00
or-icmps-same-ops.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
or.ll [InstSimplify] fix bug in matching or-with-not op (PR46083) 2020-06-03 13:44:29 -04:00
past-the-end.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
phi-cse.ll [NFC][InstSimplify] Add a note to PHI CSE tests that they are all negative tests 2020-08-29 13:13:06 +03:00
phi.ll [InstSimplify] add a phi test with 1 incoming value; NFC 2019-06-19 17:23:29 +00:00
pr28725.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
pr33957.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
ptr_diff.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
reassociate.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll [InstSimplify] Pass SimplifyQuery into simplifyUnsignedRangeCheck() and use it for isKnownNonZero() 2019-09-11 15:32:46 +00:00
rem.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
remove-dead-call.ll [InstSimplify] Report "Changed" also when only deleting dead instructions 2019-08-09 07:08:25 +00:00
require-dominator.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
result-of-add-of-negative-is-non-zero-and-no-underflow.ll [NFC][InstSimplify] Add some more tests for D67498/D67502 2019-09-13 17:58:24 +00:00
result-of-usub-by-nonzero-is-non-zero-and-no-overflow.ll [InstSimplify] simplifyUnsignedRangeCheck(): handle more cases (PR43251) 2019-09-12 09:26:17 +00:00
result-of-usub-is-non-zero-and-no-overflow.ll [InstSimplify] Handle more 'A </>/>=/<= B &&/|| (A - B) !=/== 0' patterns (PR43251) 2019-09-25 22:59:41 +00:00
returned.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
round-intrinsics.ll [FPEnv] Intrinsic llvm.roundeven 2020-05-26 19:24:58 +07:00
saturating-add-sub.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
sdiv.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
select-and-cmp.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
select-implied.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
select-or-cmp.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
select.ll [InstSimplify] Protect against more poison in SimplifyWithOpReplaced (PR47322) 2020-08-29 21:59:39 +02:00
shift-128-kb.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
shift-knownbits.ll Reapply [InstSimplify] Remove known bits constant folding 2020-05-08 10:24:53 +02:00
shift.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
shr-nop.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
shr-scalar-vector-consistency.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
shufflevector.ll [InstSimplify] fold splat of inserted constant to vector constant 2019-12-15 09:32:03 -05:00
signed-div-rem.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
simplify-nested-bitcast.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
srem.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
sub.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
undef.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
vec-cmp.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
vector_gep.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
vector_ptr_bitcast.ll Revert "Temporarily Revert "Add basic loop fusion pass."" 2019-04-17 04:52:47 +00:00
vscale.ll [InstSimplify] Simplify to vector constants when possible 2020-08-26 11:40:36 -07:00