llvm-project/llvm/test/Transforms/InstSimplify
Florian Hahn 292077072e
[Local] Treat calls that may not return as being alive.
With the addition of the `willreturn` attribute, functions that may
not return (e.g. due to an infinite loop) are well defined, if they are
not marked as `willreturn`.

This patch updates `wouldInstructionBeTriviallyDead` to not consider
calls that may not return as dead.

This patch still provides an escape hatch for intrinsics, which are
still assumed as willreturn unconditionally. It will be removed once
all intrinsics definitions have been reviewed and updated.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D94106
2021-01-23 16:05:14 +00:00
..
ConstProp [Local] Treat calls that may not return as being alive. 2021-01-23 16:05:14 +00:00
2010-12-20-Boolean.ll
2011-01-14-Thread.ll
2011-02-01-Vector.ll
2011-09-05-InsertExtractValue.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
2011-10-27-BinOpCrash.ll
2011-11-23-MaskedBitsCrash.ll
2013-04-19-ConstantFoldingCrash.ll
AndOrXor.ll [InstSimplify] reduce logic with inverted add/sub ops 2020-12-21 08:51:43 -05:00
abs_intrinsic.ll [InstSimplify] Don't miscompile `X == 0 ? abs(X) : -abs(X) --> -abs(X)` xform 2020-12-18 21:18:13 +03:00
add-mask.ll [ValueTracking] Add computeKnownBits DemandedElts support to masked add instructions (PR36319) 2020-03-18 21:50:56 +00:00
add.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
addsub.ll
and-icmps-same-ops.ll
and-or-icmp-min-max.ll [InstSimplify] peek through 'not' operand in logic-of-icmps fold 2020-10-25 11:13:30 -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
and.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
assume-non-zero.ll
assume_icmp.ll [InstSimplify] Fold icmp with dominating assume 2020-07-03 18:53:58 +02:00
bitcast-vector-fold.ll
bitreverse-fold.ll
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] Fold call null/undef to poison 2021-01-06 21:09:30 +01:00
cast-unsigned-icmp-cmp-0.ll
cast.ll
cmp-vec-fast-path.ll [SVE] Take constant fold fast path for splatted vscale vectors 2020-11-17 12:45:31 -08: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
compare.ll [InstSimplify] allow vector folds for (Pow2C << X) == NonPow2C 2020-11-08 09:52:05 -05:00
constantfold-add-nuw-allones-to-allones.ll
constantfold-shl-nuw-C-to-C.ll
constfold-constrained.ll [FEnv] Constfold some unary constrained operations 2020-03-28 12:28:33 +07:00
dead-code-removal.ll
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
div-by-0-guard-before-smul_ov.ll
div-by-0-guard-before-umul_ov-not.ll
div-by-0-guard-before-umul_ov.ll
div.ll [InstSimplify] Fold division by zero to poison 2021-01-03 20:52:45 +01:00
exact-nsw-nuw.ll
extract-element.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
fast-math.ll [ValueTracking] fix CannotBeNegativeZero() to disregard 'nsz' FMF 2020-05-05 16:04:59 -04:00
fcmp-select.ll
fcmp.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
fdiv.ll
floating-point-arithmetic.ll [InstSimplify] add/move tests for fmin/fmax; NFC 2020-09-14 10:24:19 -04:00
floating-point-compare.ll [ValueTracking] enhance isKnownNeverInfinity to understand sitofp 2020-09-27 08:40:31 -04:00
fminmax-folds.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
fold-intrinsics.ll
fp-nan.ll [InstSimplify] Fold nnan/ninf violation to poison 2021-01-03 22:05:40 +01:00
fp-undef-poison.ll [InstSimplify] Fold nnan/ninf violation to poison 2021-01-03 22:05:40 +01:00
fptoi-sat.ll [ConstantFold] Fold fptoi.sat intrinsics 2021-01-10 17:37:27 +01:00
freeze-noundef.ll Add support for !noundef metatdata on loads 2020-10-17 13:50:10 +09:00
freeze.ll [ValueTracking] Instruction::isBinaryOp should be used for constexprs 2020-07-26 21:48:51 +09:00
gep.ll [InstSimplify] Don't fold gep p, -p to null 2021-01-12 20:24:23 +01:00
icmp-abs-nabs.ll
icmp-bool-constant.ll
icmp-constant.ll [InstSimplify] avoid crashing by trying to rem-by-zero 2020-08-06 16:06:31 -04:00
icmp-ranges.ll
icmp.ll [InstSimplify] Fold x*C1/C2 <= x (PR48744) 2021-01-17 16:02:55 +01:00
implies.ll
insertelement.ll [InstSimplify] Fold insertelement vec, poison, idx into vec 2021-01-07 10:10:14 +09:00
insertvalue.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
known-never-nan.ll [FPEnv] Intrinsic llvm.roundeven 2020-05-26 19:24:58 +07:00
known-non-zero.ll [ValueTracking] isKnownNonZero, computeKnownBits for freeze 2020-09-10 08:07:38 +09:00
load-relative-32.ll
load-relative.ll
load.ll [AssumeBundles] add cannonicalisation to the assume builder 2020-06-19 10:32:26 +02:00
log-exp-intrinsic.ll
log2-pow2-intrinsic.ll
log10-pow10-intrinsic.ll
logic-of-fcmps.ll
maxmin.ll
maxmin_intrinsics.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
mul.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
negate.ll
noalias-ptr.ll
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
or.ll [InstSimplify] Handle commutativity for 'and' and 'outer or' for (~A & B) | ~(A | B) --> ~A 2021-01-16 19:42:50 +01:00
past-the-end.ll
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 tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
pr28725.ll
pr33957.ll
ptr_diff.ll
reassociate.ll
redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll
rem.ll [InstSimplify] Fold division by zero to poison 2021-01-03 20:52:45 +01:00
remove-dead-call.ll [Local] Treat calls that may not return as being alive. 2021-01-23 16:05:14 +00:00
require-dominator.ll
result-of-add-of-negative-is-non-zero-and-no-underflow.ll
result-of-usub-by-nonzero-is-non-zero-and-no-overflow.ll
result-of-usub-is-non-zero-and-no-overflow.ll
returned.ll [Local] Treat calls that may not return as being alive. 2021-01-23 16:05:14 +00:00
round-intrinsics.ll [FPEnv] Intrinsic llvm.roundeven 2020-05-26 19:24:58 +07:00
saturating-add-sub.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
sdiv.ll
select-and-cmp.ll
select-implied.ll
select-inseltpoison.ll Precommit transform tests that have poison as insertelement's placeholder 2020-12-24 11:46:17 +09:00
select-or-cmp.ll
select.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
shift-128-kb.ll
shift-knownbits.ll [InstSimplify] Fold out-of-bounds shift to poison 2021-01-06 20:41:37 +01:00
shift.ll [InstSimplify] Fold out-of-bounds shift to poison 2021-01-06 20:41:37 +01:00
shr-nop.ll
shr-scalar-vector-consistency.ll
shufflevector-inseltpoison.ll Precommit tests that have poison as shufflevector's placeholder 2020-12-29 17:09:31 +09:00
shufflevector.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
signed-div-rem.ll
simplify-nested-bitcast.ll
srem.ll
sub.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
undef.ll [InstSimplify] Fold call null/undef to poison 2021-01-06 21:09:30 +01:00
vec-cmp.ll
vector_gep.ll
vector_ptr_bitcast.ll
vscale-inseltpoison.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
vscale.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
xor.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00