1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Transforms/SCCP
Nikita Popov bab200ac44 [IR] Consider non-willreturn as side effect (PR50511)
This adjusts mayHaveSideEffect() to return true for !willReturn()
instructions. Just like other side-effects, non-willreturn calls
(aka "divergence") cannot be removed and cannot be reordered relative
to other side effects. This fixes a number of bugs where
non-willreturn calls are either incorrectly dropped or moved. In
particular, it also fixes the last open problem in
https://bugs.llvm.org/show_bug.cgi?id=50511.

I performed a cursory review of all current mayHaveSideEffect()
uses, which convinced me that these are indeed the desired default
semantics. Places that do not want to consider non-willreturn as a
sideeffect generally do not want mayHaveSideEffect() semantics at
all. I identified two such cases, which are addressed by D106591
and D106742. Finally, there is a use in SCEV for which we don't
really have an appropriate API right now -- what it wants is
basically "would this be considered forward progress". I've just
spelled out the previous semantics there.

Differential Revision: https://reviews.llvm.org/D106749
2021-07-26 16:35:14 +02:00
..
2002-05-02-MissSecondInst.ll
2002-05-20-MissedIncomingValue.ll
2002-05-21-InvalidSimplify.ll [SimplifyCFG] TryToSimplifyUncondBranchFromEmptyBlock() already knows how to preserve DomTree 2020-12-17 01:03:49 +03:00
2002-08-30-GetElementPtrTest.ll
2003-06-24-OverdefinedPHIValue.ll [SimplifyCFG] MergeBlockIntoPredecessor() already knows how to preserve DomTree 2020-12-17 01:03:49 +03:00
2003-08-26-InvokeHandling.ll
2004-11-16-DeadInvoke.ll
2004-12-10-UndefBranchBug.ll [SCCP] Reduce the number of times ResolvedUndefsIn is called for large modules. 2020-10-09 15:24:16 -07:00
2006-10-23-IPSCCP-Crash.ll
2006-12-04-PackedType.ll
2006-12-19-UndefBug.ll
2007-05-16-InvokeCrash.ll
2008-01-27-UndefCorrelate.ll
2008-04-22-multiple-ret-sccp.ll
2008-05-23-UndefCallFold.ll
2008-06-09-WeakProp.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
2009-01-14-IPSCCP-Invoke.ll
2009-05-27-VectorOperandZero.ll
2009-09-24-byval-ptr.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
apfloat-basictest.ll
apint-array.ll
apint-basictest2.ll
apint-basictest3.ll
apint-basictest4.ll
apint-basictest.ll
apint-bigarray.ll
apint-bigint2.ll Revert "Recommit "[SCCP] Do not replace deref'able ptr with un-deref'able one."" 2020-09-29 09:18:19 +01:00
apint-bigint.ll
apint-ipsccp1.ll
apint-ipsccp2.ll
apint-ipsccp3.ll
apint-ipsccp4.ll
apint-load.ll
apint-phi.ll
apint-select.ll
apint-xor.ll
arg-count-mismatch.ll Revert "[IR] Ignore bitcasts of function pointers which are only used as callees in callbase instruction" 2021-04-06 16:33:28 +02:00
arg-type-mismatch.ll Revert "[IR] Ignore bitcasts of function pointers which are only used as callees in callbase instruction" 2021-04-06 16:33:28 +02:00
assume.ll [SCCP] Propagate inequalities 2020-08-04 20:20:52 +02:00
atomic-load-store.ll
atomic.ll
binaryops-constexprs.ll [SCCP] Add test case for binary ops with constant expressions. 2020-04-09 13:38:43 +01:00
binaryops-range-special-cases.ll [ConstantRanges] Use APInt for constant case for urem/srem. 2021-06-30 11:18:20 +01:00
bitcast.ll
calltest.ll [IR] Consider non-willreturn as side effect (PR50511) 2021-07-26 16:35:14 +02:00
clang-arc-rv.ll [ObjC][ARC] Use operand bundle 'clang.arc.attachedcall' instead of 2021-03-04 11:22:30 -08:00
comdat-ipo.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
conditions-iter-order.ll
conditions-ranges-with-undef.ll [SCCP] Use ranges for predicate info conditions. 2020-04-07 11:09:18 +01:00
conditions-ranges.ll [PredicateInfo] Handle logical and/or 2021-01-20 21:03:07 +01:00
constant-range-struct.ll [SCCP] Switch to widen at PHIs, stores and call edges. 2020-05-29 11:59:17 +01:00
constant-struct.ll
crash.ll
dangling-block-address.ll [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). 2020-07-09 17:16:15 +01:00
deadarg.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
definite-initializer.ll
domtree-update.ll Reapply [SCCP] Directly remove non-feasible edges 2020-07-25 14:52:35 +02:00
dont-zap-return.ll
float-nan-simplification.ll Recommit "[SCCP] Use SimplifyBinOp for non-integer constant/expressions & overdef." 2020-04-14 11:48:52 +01:00
float-phis.ll
fp-bc-icmp-const-fold.ll Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
global-alias-constprop.ll
global.ll [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). 2020-07-09 17:16:15 +01:00
indirectbr.ll Revert "Recommit "[SCCP] Do not replace deref'able ptr with un-deref'able one."" 2020-09-29 09:18:19 +01:00
int-phis.ll
intrinsics.ll [SCCP] Compute ranges for supported intrinsics 2020-09-07 22:16:06 +02:00
ip-add-range-to-call.ll [SCCP] Add range metadata to call sites with known return ranges. 2020-07-21 10:06:54 +01:00
ip-constant-ranges.ll [SCCP] Use ranges for predicate info conditions. 2020-04-07 11:09:18 +01:00
ip-ranges-binaryops.ll
ip-ranges-casts.ll [SCCP] Turn sext into zext for non-negative ranges. 2020-06-19 10:17:55 +01:00
ip-ranges-phis.ll
ip-ranges-select.ll [ConstantFold] Fold the comparison of bitcasted global values 2020-10-20 12:41:49 -07:00
ip-ranges-sext.ll [SCCP] Turn sext into zext for non-negative ranges. 2020-06-19 10:17:55 +01:00
ipsccp-addr-taken.ll
ipsccp-basic.ll
ipsccp-branch-unresolved-undef.ll
ipsccp-clear-returned.ll [IPSCCP] Fix a bug that the "returned" attribute is not cleared when function is optimized to return undef 2020-09-02 11:21:48 -04:00
ipsccp-cycles.ll [SCCP] Switch to widen at PHIs, stores and call edges. 2020-05-29 11:59:17 +01:00
ipsccp-phi-one-pred-dead.ll
ipsccp-predinfo-order.ll
ipsccp-preserve-analysis.ll [NewPM] Hide pass manager debug logging behind -debug-pass-manager-verbose 2021-05-07 21:51:47 -07:00
ipsccp-range-crashes.ll
ipsccp-ssa-copy-nested-conds.ll [SCCP] Add tests with AND/OR branch conditions. 2020-04-09 16:39:13 +01:00
ipscp-drop-argmemonly.ll [IPSCCP] Drop argmemonly after replacing pointer argument. 2020-07-25 11:52:14 +01:00
latticeval-invalidate.ll
load-store-range.ll [SCCP] Support ranges for loads and stores. 2020-04-26 13:16:47 +01:00
loadtest2.ll
loadtest.ll
logical-nuke.ll
metadata.ll [SCCP] Propagate inequalities 2020-08-04 20:20:52 +02:00
multiple_callbacks.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
musttail-call.ll [Tests] Add missing willreturn attributes (NFC) 2021-07-24 17:17:48 +02:00
naked-return.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
openmp_parallel_for.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
overdefined-div.ll
phi-cycle.ll
phis.ll
pr27712.ll
pr35357.ll
pr45185-range-predinfo.ll
pr49582-iterator-invalidation.ll [SCCP] Avoid modifying AdditionalUsers while iterating over it 2021-04-02 19:05:59 +02:00
PR16052.ll [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). 2020-07-09 17:16:15 +01:00
PR26044.ll [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). 2020-07-09 17:16:15 +01:00
PR43857.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
predicateinfo-cond.ll Reapply [SCCP] Directly remove non-feasible edges 2020-07-25 14:52:35 +02:00
preserve-analysis.ll [NewPM] Hide pass manager debug logging behind -debug-pass-manager-verbose 2021-05-07 21:51:47 -07:00
pthreads.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
range-and-ip.ll
range-and.ll
ranges-sext.ll [SCCP] Turn sext into zext for non-negative ranges. 2020-06-19 10:17:55 +01:00
recursion.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
remove-call-inst.ll [Tests] Add missing willreturn attributes (NFC) 2021-07-24 17:17:48 +02:00
replace-dereferenceable-ptr-with-undereferenceable.ll Revert "Recommit "[SCCP] Do not replace deref'able ptr with un-deref'able one."" 2020-09-29 09:18:19 +01:00
resolvedundefsin-tracked-fn.ll [SCCP] Reduce the number of times ResolvedUndefsIn is called for large modules. 2020-10-09 15:24:16 -07:00
return-argument.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
return-constant.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
return-constants.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
return-zapped.ll
retvalue-undef.ll
sccptest.ll
select.ll
solve-after-each-resolving-undefs-for-function.ll [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). 2020-07-09 17:16:15 +01:00
struct-arg-resolve-undefs.ll
switch-constantfold-crash.ll Reapply [SCCP] Directly remove non-feasible edges 2020-07-25 14:52:35 +02:00
switch-multiple-undef.ll
switch-undef-constantfoldterminator.ll
switch.ll Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
thread_local_acs.ll Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
ub-shift.ll Recommit "[SCCP] Use SimplifyBinOp for non-integer constant/expressions & overdef." 2020-04-14 11:48:52 +01:00
ubsan_overflow.ll
undef-resolve.ll [ConstantFold] Fold the comparison of bitcasted global values 2020-10-20 12:41:49 -07:00
user-with-multiple-uses.ll [SCCP] Move tests using only ipsccp from IPConstantProp to SCCP (NFC). 2020-07-09 17:16:15 +01:00
vector-bitcast.ll [SCCP] Handle bitcast of vector constants. 2020-11-03 12:58:39 +00:00
widening.ll Reapply [SCCP] Directly remove non-feasible edges 2020-07-25 14:52:35 +02:00