llvm-project/llvm/test/Transforms/Inline
Arthur Eubanks 8bc298d041 [NewPM][Inliner] Check if deleted function is in current SCC
In weird cases, the inliner will inline internal recursive functions,
sometimes causing them to have no more uses, in which case the
inliner will mark the function to be deleted. The function is
actually deleted after the call to
updateCGAndAnalysisManagerForCGSCCPass(). In
updateCGAndAnalysisManagerForCGSCCPass(), UR.UpdatedC may be set to
the SCC containing the function to be deleted. Then the inliner calls
CG.removeDeadFunction() which can cause that SCC to be deleted, even
though it's still stored in UR.UpdatedC.

We could potentially check in the wrappers/pass managers if UR.UpdatedC
is in UR.InvalidatedSCCs before doing anything with it, but it's safer
to do this as close to possible to the call to CG.removeDeadFunction()
to avoid issues with allocating a new SCC in the same address as
the deleted one.

It's hard to find a small test case since we need to have recursive
internal functions be reachable from non-internal functions, yet they
need to become non-recursive and not referenced by other functions when
inlined.

Similar to https://reviews.llvm.org/D106306.

Fixes PR50788.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D106405
2021-07-21 08:47:45 -07:00
..
AArch64 [SVE][CodeGen] Fix InlineFunction for scalable vectors 2020-09-11 08:34:51 +01:00
AMDGPU [AMDGPU] Fix -amdgpu-inline-arg-alloca-cost 2021-03-12 10:19:50 -08:00
ARM
Inputs [InlineAdvisor] Allow replay of inline decisions for the CGSCC inliner from optimization remarks 2021-01-25 15:38:57 -08:00
ML [MLGO] Use binary protobufs for improved training performance. 2021-07-19 13:59:28 -07:00
PowerPC
WebAssembly [WebAssembly] Add missing lit.local.cfg 2020-08-13 16:33:52 -07:00
X86 [InlineCost] CallAnalyzer: use TTI info for extractvalue - they are free (PR50099) 2021-04-30 13:55:11 +03:00
2003-09-14-InlineValue.ll
2003-09-22-PHINodeInlineFail.ll
2003-09-22-PHINodesInExceptionDest.ll
2003-09-22-PHINodesInNormalInvokeDest.ll
2003-10-13-AllocaDominanceProblem.ll
2004-04-15-InlineDeletesCall.ll
2004-04-20-InlineLinkOnce.ll [PruneEH] Pin tests to legacy PM 2020-10-29 18:17:55 -07:00
2004-10-17-InlineFunctionWithoutReturn.ll
2006-01-14-CallGraphUpdate.ll [PruneEH] Pin tests to legacy PM 2020-10-29 18:17:55 -07:00
2006-07-12-InlinePruneCGUpdate.ll [PruneEH] Pin tests to legacy PM 2020-10-29 18:17:55 -07:00
2006-11-09-InlineCGUpdate-2.ll [PruneEH] Pin tests to legacy PM 2020-10-29 18:17:55 -07:00
2006-11-09-InlineCGUpdate.ll [PruneEH] Pin tests to legacy PM 2020-10-29 18:17:55 -07:00
2007-04-15-InlineEH.ll
2007-06-25-WeakInline.ll
2007-12-19-InlineNoUnwind.ll
2008-09-02-NoInline.ll
2009-01-08-NoInlineDynamicAlloca.ll
2009-01-13-RecursiveInlineCrash.ll
2009-05-07-CallUsingSelfCrash.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
2010-05-12-ValueMap.ll
PR4909.ll
align.ll Reland [AssumeBundles] Use operand bundles to encode alignment assumptions 2020-09-12 15:36:06 +02:00
alloca-bonus.ll
alloca-dbgdeclare-merge.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
alloca-dbgdeclare.ll [Local] Do not move around dbg.declares during replaceDbgDeclare 2020-02-13 14:35:02 -08:00
alloca-in-scc.ll
alloca-merge-align.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
alloca_test.ll
always-inline-attr.ll Reapply [IR] Don't mark mustprogress as type attribute 2021-07-09 20:57:44 +02:00
always-inline.ll [test][Inliner] Make always-inline.ll work with NPM 2020-08-27 10:00:54 -07:00
arg-attr-propagation.ll [ValueTracking] Use assume's noundef operand bundle 2020-10-14 20:16:33 +09:00
array-alloca.ll
array_merge.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
attributes.ll [Inliner] Handle 'no-signed-zeros-fp-math' function attribute. 2020-06-24 17:53:59 -07:00
basictest.ll
bfi-update.ll
blockaddress.ll
byref-align.ll Reland [AssumeBundles] Use operand bundles to encode alignment assumptions 2020-09-12 15:36:06 +02:00
byval-align.ll Inliner: Add missing test for alignment assume with byval 2020-06-29 10:39:58 -04:00
byval-tail-call.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
byval.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
byval_lifetime.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
callbr.ll
callgraph-update.ll
casts.ll
cfg_preserve_test.ll
cgscc-cycle-debug.ll [LazyCallGraph] Build SCCs of the reference graph in order 2020-11-02 13:22:42 -08:00
cgscc-cycle.ll [LazyCallGraph] Build SCCs of the reference graph in order 2020-11-02 13:22:42 -08:00
cgscc-incremental-invalidate.ll Revert "[NewPM] Only invalidate modified functions' analyses in CGSCC passes" 2021-05-21 16:38:03 -07:00
cgscc-inline-replay.ll [InlineAdvisor] Allow replay of inline decisions for the CGSCC inliner from optimization remarks 2021-01-25 15:38:57 -08:00
cgscc-invalidate.ll [LazyCallGraph] Build SCCs of the reference graph in order 2020-11-02 13:22:42 -08:00
cgscc-update.ll [funcattrs] Add the maximal set of implied attributes to definitions 2021-04-16 14:22:19 -07:00
clear-analyses.ll [NewPM] Hide pass manager debug logging behind -debug-pass-manager-verbose 2021-05-07 21:51:47 -07:00
comdat-ipo.ll
crash-lifetime-marker.ll
crash.ll
crash2.ll [NPM] Share pass building options with legacy PM 2020-11-23 13:04:05 -08:00
dead-calls-willreturn.ll [test] Pin dead-calls-willreturn.ll to legacy PM 2021-01-23 12:35:36 -08:00
debug-info-duplicate-calls.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
debug-invoke.ll
debuginline-cost-delta.ll [InlineCost] InlineCostAnnotationWriterPass introduced 2020-06-24 21:27:07 +00:00
delete-call.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
deleted-scc.ll [NewPM][Inliner] Check if deleted function is in current SCC 2021-07-21 08:47:45 -07:00
deopt-bundles.ll
deoptimize-intrinsic-attrs.ll [Inliner] Copy attributes when deoptimize intrinsic is inlined 2021-05-18 10:08:37 +07:00
deoptimize-intrinsic-cconv.ll
deoptimize-intrinsic.ll
devirtualize-2.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
devirtualize-3.ll Reland [CGSCC] Detect devirtualization in more cases 2020-11-23 21:28:59 -08:00
devirtualize-4.ll Devirtualize a call on alloca without waiting for post inline cleanup and next DevirtSCCRepeatedPass iteration. 2020-02-28 09:43:32 -08:00
devirtualize-5.ll Reland [CGSCC] Detect devirtualization in more cases 2020-11-23 21:28:59 -08:00
devirtualize-6.ll Reland [CGSCC] Detect devirtualization in more cases 2020-11-23 21:28:59 -08:00
devirtualize.ll [Inline] prevent inlining on stack protector mismatch 2020-12-02 11:00:16 -08:00
dynamic-alloca-simplified-large.ll [IR] Make nosync, nofree and willreturn default for intrinsics. 2020-10-20 11:57:19 +02:00
dynamic_alloca_test.ll
ephemeral.ll Require asserts for test that uses debug flag 2021-04-23 15:23:47 -07:00
externally_available.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
frameescape.ll
function-count-update-2.ll
function-count-update-3.ll
function-count-update.ll
gep_from_constant.ll [InlineCost] GetElementPtr with constant operands 2020-06-25 18:09:51 +00:00
guard-intrinsic.ll
gvn-inline-iteration.ll [test] Fix gvn-inline-iteration.ll under NPM 2020-11-23 23:46:31 -08:00
ignore-debug-info.ll
inalloca-not-static.ll Reapply "OpaquePtr: Turn inalloca into a type attribute" 2021-03-29 08:55:30 -04:00
infinite-loop-two-predecessors.ll
inline-assume.ll
inline-brunch-funnel.ll
inline-byval-bonus.ll [Inline] prevent inlining on stack protector mismatch 2020-12-02 11:00:16 -08:00
inline-cold-callee.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
inline-cold-callsite-pgo.ll
inline-cold-callsite.ll
inline-cold.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
inline-constexpr-addrspacecast-argument.ll
inline-cost-annotation-pass.ll [InlineCost] InlineCostAnnotationWriterPass introduced 2020-06-24 21:27:07 +00:00
inline-fast-math-flags.ll
inline-funclets.ll
inline-hot-callee.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
inline-hot-callsite-2.ll
inline-hot-callsite.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
inline-incompat-attrs.ll [SampleFDO] Add use-sample-profile function attribute. 2020-06-02 17:23:17 -07:00
inline-indirect-chain.ll [EarlyCSE] Verify hash code in regression tests 2020-09-04 10:40:35 -04:00
inline-indirect.ll
inline-invoke-tail.ll
inline-invoke-with-asm-call.ll
inline-min-legal-vector-width.ll
inline-no-builtin-compatible.ll Revert "[TLI] Per-function fveclib for math library used for vectorization" 2020-04-11 01:05:01 +00:00
inline-optnone.ll [Inliner] Don't skip inlining alwaysinline in optnone functions 2020-07-07 12:54:55 -07:00
inline-optsize.ll
inline-probe-stack.ll
inline-ptrtoint-different-sizes.ll [test] Update PR reference in testcase [NFC] 2020-11-23 15:12:50 +01:00
inline-remark.ll
inline-retainRV-call.ll [ObjC][ARC] Use operand bundle 'clang.arc.attachedcall' instead of 2021-03-04 11:22:30 -08:00
inline-scalable.ll [InlineCost] Fix scalable vectors in visitAlloca 2020-08-17 10:34:27 +00:00
inline-semantic-interposition.ll Implement -fsemantic-interposition 2020-01-31 14:02:33 +01:00
inline-skip-use-empty-alloca.ll [utils] InlineFunction: fix for debug info affecting optimizations 2019-10-28 18:19:07 +01:00
inline-stack-probe-size.ll
inline-tail.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
inline-threshold.ll
inline-varargs.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
inline-vla.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
inline_call.ll [llvm][Inliner] Add an optional PriorityInlineOrder 2021-06-19 10:17:32 +08:00
inline_cleanup.ll
inline_constprop.ll
inline_dbg_declare.ll [Local] Do not move around dbg.declares during replaceDbgDeclare 2020-02-13 14:35:02 -08:00
inline_dce.ll
inline_inv_group.ll
inline_invoke.ll [llvm][Inliner] Add an optional PriorityInlineOrder 2021-06-19 10:17:32 +08:00
inline_minisize.ll
inline_negative_result.ll
inline_noprofile.ll [Inline] prevent inlining on noprofile mismatch 2021-06-29 10:32:03 -07:00
inline_nossp.ll [Test] delete LPM RUNs in inline_nossp.ll 2021-06-29 17:09:42 -07:00
inline_prune.ll
inline_returns_twice.ll
inline_ssp.ll [Inline] prevent inlining on stack protector mismatch 2020-12-02 11:00:16 -08:00
inline_stats.ll Reland "[NPM][Inliner] Factor ImportedFunctionStats in the InlineAdvisor" 2021-01-20 13:33:43 -08:00
inline_unreachable-2.ll
inline_unreachable.ll
inlined-loop-metadata-inseltpoison.ll Precommit tests that have poison as shufflevector's placeholder 2020-12-29 17:09:31 +09:00
inlined-loop-metadata.ll
inlined-mustprogress-loop-metadata.ll [Inliner] Handle `mustprogress` functions 2020-11-06 20:03:46 -05:00
inlinedefault-threshold.ll [InlineCost] Add flag to allow changing the default inline cost 2020-02-04 12:06:20 -08:00
inlining-advisor-default.ll [llvm] Development-mode InlineAdvisor 2020-07-20 11:01:56 -07:00
internal-scc-members.ll [llvm] Add interface to drive inlining decision using ML model 2020-05-13 13:27:29 -07:00
invariant-group-sroa.ll [Inliner] Propagate SROA analysis through invariant group intrinsics 2021-04-12 10:54:22 -07:00
invoke-cleanup.ll
invoke-combine-clauses.ll
invoke-cost.ll
invoke_test-1.ll
invoke_test-2.ll [SimplifyCFG] TryToSimplifyUncondBranchFromEmptyBlock() already knows how to preserve DomTree 2020-12-17 01:03:49 +03:00
invoke_test-3.ll
label-annotation.ll
last-call-bonus.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
last-call-no-bonus.ll [NewPM][LoopUnroll] Rename unroll* to loop-unroll* 2020-06-26 09:28:32 -07:00
last-callsite.ll [llvm][Inliner] Add an optional PriorityInlineOrder 2021-06-19 10:17:32 +08:00
launder.invariant.group.ll [InlineFunction] Use llvm.experimental.noalias.scope.decl for noalias arguments. 2021-01-23 12:10:57 +01:00
lifetime-no-datalayout.ll
lifetime.ll
local-as-metadata-undominated-use.ll
module-inlining.ll [llvm] Add interface to drive inlining decision using ML model 2020-05-13 13:27:29 -07:00
monster_scc.ll [NewPM] Consistently use 'simplifycfg' rather than 'simplify-cfg' 2021-07-09 09:47:03 +02:00
nested-inline.ll
no-inline-line-tables.ll Recommit "[CodeView] Add option to disable inline line tables." 2019-11-04 09:15:26 -08:00
no-unwind-inline-asm.ll Support unwinding from inline assembly 2021-05-13 19:13:03 +01:00
noalias-calls-always.ll [InlineFunction] Use llvm.experimental.noalias.scope.decl for noalias arguments. 2021-01-23 12:10:57 +01:00
noalias-calls.ll [InlineFunction] Use llvm.experimental.noalias.scope.decl for noalias arguments. 2021-01-23 12:10:57 +01:00
noalias-calls2.ll [Inline] Don't add noalias metadata to inaccessiblememonly calls 2021-04-17 14:56:13 +02:00
noalias-cs.ll [InlineFunction] Use llvm.experimental.noalias.scope.decl for noalias arguments. 2021-01-23 12:10:57 +01:00
noalias.ll [InlineFunction] Use llvm.experimental.noalias.scope.decl for noalias arguments. 2021-01-23 12:10:57 +01:00
noalias2.ll [Inline] Don't add noalias metadata to inaccessiblememonly calls 2021-04-17 14:56:13 +02:00
noalias3.ll [InlineFunction] Only update noalias scopes once for an instruction. 2021-02-02 17:57:10 +01:00
noinline-recursive-fn.ll
noinline.ll
nonnull.ll
null-function.ll [PM] Show the pass argument in pre/post-pass IR dumps 2021-02-25 14:02:00 -08:00
optimization-remarks-hotness-threshold.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
optimization-remarks-passed-yaml.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
optimization-remarks-with-hotness.ll [NewPM][Inliner] Move the 'always inliner' case in the same CGSCC pass as 'regular' inliner 2021-01-15 17:59:38 -08:00
optimization-remarks-yaml.ll [llvm] Add interface to drive inlining decision using ML model 2020-05-13 13:27:29 -07:00
optimization-remarks.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
parallel-loop-md-callee.ll
parallel-loop-md-merge.ll
parallel-loop-md.ll
partial-inline-act.ll
partial-inline-incompat-attrs.ll [SampleFDO] Add use-sample-profile function attribute. 2020-06-02 17:23:17 -07:00
pr21206.ll
pr22285.ll [Inliner][NPM] Fix various tests under NPM 2020-10-12 10:41:40 -07:00
pr26698.ll
pr28298.ll
pr33637.ll
pr46945.ll [NewPM][Inliner] Move the 'always inliner' case in the same CGSCC pass as 'regular' inliner 2021-01-15 17:59:38 -08:00
pr48209.ll [Inline] Fix incorrect noalias metadata application (PR48209) 2020-11-18 20:52:58 +01:00
pr50270.ll [Inliner] Fix noalias metadata handling for instructions simplified during cloning (PR50270) 2021-05-10 21:59:59 +02:00
pr50589.ll [Inline] Fix noalias addition on simplified instructions (PR50589) 2021-07-20 19:52:41 +02:00
prof-update-instr.ll
prof-update-sample-alwaysinline.ll Make CallInst::updateProfWeight emit i32 weights instead of i64 2020-11-24 18:13:59 -08:00
prof-update-sample.ll Make CallInst::updateProfWeight emit i32 weights instead of i64 2020-11-24 18:13:59 -08:00
profile-meta.ll
ptr-diff.ll
recursive.ll
redundant-loads.ll
ret_attr_update.ll [ValueTracking] Don't assume readonly function will return 2021-01-24 10:40:21 +01:00
simplified_to.ll [InlineCost] PrinterPass prints constants to which instructions are simplified 2020-06-24 22:52:31 +00:00
store-sroa.ll
switch.ll
unwind-inline-asm.ll Support unwinding from inline assembly 2021-05-13 19:13:03 +01:00
vector-bonus.ll
vector-no-bonus.ll
zero-cost.ll