llvm-project/llvm/test/Transforms/Inline
David Bolvansky c1b27b562b [Inliner] Attribute callsites with inline remarks
Summary:
Sometimes reading an output *.ll file it is not easy to understand why some callsites are not inlined. We can read output of inline remarks (option --pass-remarks-missed=inline) and try correlating its messages with the callsites.

An easier way proposed by this patch is to add to every callsite processed by Inliner an attribute with the latest message that describes the cause of not inlining this callsite. The attribute is called //inline-remark//. By default this feature is off. It can be switched on by the option //-inline-remark-attribute//.

For example in the provided test the result method //@test1// has two callsites //@bar// and inline remarks report different inlining missed reasons:
  remark: <unknown>:0:0: bar not inlined into test1 because too costly to inline (cost=-5, threshold=-6)
  remark: <unknown>:0:0: bar not inlined into test1 because it should never be inlined (cost=never): recursive

It is not clear which remark correspond to which callsite. With the inline remark attribute enabled we get the reasons attached to their callsites:
  define void @test1() {
    call void @bar(i1 true) #0
    call void @bar(i1 false) #2
    ret void
  }
  attributes #0 = { "inline-remark"="(cost=-5, threshold=-6)" }
  ..
  attributes #2 = { "inline-remark"="(cost=never): recursive" }

Patch by: yrouban (Yevgeny Rouban)

Reviewers: xbolva00, tejohnson, apilipenko

Reviewed By: xbolva00, tejohnson

Subscribers: eraman, llvm-commits

Differential Revision: https://reviews.llvm.org/D50435

llvm-svn: 340834
2018-08-28 15:27:25 +00:00
..
AArch64 [InlineCost] Find more free binary operations 2017-12-22 17:09:09 +00:00
AMDGPU AMDGPU: Use a custom areInlineCompatible 2017-08-07 17:08:44 +00:00
ARM Enrich inline messages 2018-08-05 14:53:08 +00:00
PowerPC [TTI] Refine the cost of EXT in getUserCost() 2017-07-15 02:12:16 +00:00
X86 [TTI] Refine the cost of EXT in getUserCost() 2017-07-15 02:12:16 +00: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
2004-10-17-InlineFunctionWithoutReturn.ll
2006-01-14-CallGraphUpdate.ll
2006-07-12-InlinePruneCGUpdate.ll
2006-11-09-InlineCGUpdate-2.ll
2006-11-09-InlineCGUpdate.ll
2007-04-15-InlineEH.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
2007-06-25-WeakInline.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
2007-12-19-InlineNoUnwind.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
2008-09-02-NoInline.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
2009-01-08-NoInlineDynamicAlloca.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
2009-01-13-RecursiveInlineCrash.ll
2009-05-07-CallUsingSelfCrash.ll
2010-05-12-ValueMap.ll
PR4909.ll
align.ll
alloca-bonus.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
alloca-dbgdeclare-merge.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
alloca-dbgdeclare.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
alloca-in-scc.ll
alloca-merge-align.ll
alloca_test.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
always-inline.ll Revert "CallGraphSCCPass: iterate over all functions." 2018-07-13 16:32:31 +00:00
arg-attr-propagation.ll Revert r296366 "[InlineFunction] add nonnull assumptions based on argument attributes" 2017-02-27 22:33:02 +00:00
array-alloca.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
array_merge.ll
attributes.ll [Inline] Copy "null-pointer-is-valid" attribute in caller. 2018-07-30 19:33:53 +00:00
basictest.ll Inliner: Don't touch indirect calls 2017-06-09 03:29:20 +00:00
bfi-update.ll Fix a bug in caller's BFI update code after inlining. 2017-02-14 22:49:28 +00:00
blockaddress.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
byval-tail-call.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
byval.ll Avoid inlining if there is byval arguments with non-alloca address space 2018-01-10 13:01:18 +00:00
byval_lifetime.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
callgraph-update.ll
casts.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
cfg_preserve_test.ll [Inliner] Modernize all of the inliner tests that were using grep. 2016-12-27 02:47:37 +00:00
cgscc-cycle.ll [PM] Fix a bug where through CGSCC iteration we can get 2017-08-02 02:09:22 +00:00
cgscc-incremental-invalidate.ll [PM] Fix a nasty bug in the new PM where we failed to properly 2017-07-09 13:45:11 +00:00
cgscc-invalidate.ll [PM/Inliner] Make the new PM's inliner process call edges across an 2017-03-09 11:35:40 +00:00
cgscc-update.ll [PM][FunctionAttrs] add NoUnwind attribute inference to PostOrderFunctionAttrs pass 2018-03-23 21:46:16 +00:00
clear-analyses.ll [PH] Replace uses of AssertingVH from members of analysis results with 2017-01-24 12:55:57 +00:00
comdat-ipo.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
crash-lifetime-marker.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
crash.ll
crash2.ll
debug-info-duplicate-calls.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
debug-invoke.ll
delete-call.ll
deopt-bundles.ll
deoptimize-intrinsic-cconv.ll
deoptimize-intrinsic.ll NFC - Various typo fixes in tests 2018-07-04 13:28:39 +00:00
devirtualize-2.ll [PM] Introduce a devirtualization iteration layer for the new PM. 2016-12-28 11:07:33 +00:00
devirtualize-3.ll
devirtualize.ll
dynamic_alloca_test.ll
ephemeral.ll [InlineCost] Reduce inline thresholds to compensate for cost changes 2016-11-28 11:07:37 +00:00
externally_available.ll [Inliner] Modernize all of the inliner tests that were using grep. 2016-12-27 02:47:37 +00:00
frameescape.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
function-count-update-2.ll Improve PGO support for the new inliner 2017-01-20 22:44:04 +00:00
function-count-update-3.ll Improve PGO support for the new inliner 2017-01-20 22:44:04 +00:00
function-count-update.ll Improve PGO support for the new inliner 2017-01-20 22:44:04 +00:00
guard-intrinsic.ll
gvn-inline-iteration.ll
ignore-debug-info.ll Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
inalloca-not-static.ll [PM] Wire up another test to the new pass manager. 2016-12-27 06:46:16 +00:00
infinite-loop-two-predecessors.ll [CloneFunction] Constant fold terminators before checking single predecessor 2018-08-28 12:40:11 +00:00
inline-assume.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline-brunch-funnel.ll Don't inline @llvm.icall.branch.funnel 2018-04-04 21:46:27 +00:00
inline-byval-bonus.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline-cold-callee.ll Improve PGO support for the new inliner 2017-01-20 22:44:04 +00:00
inline-cold-callsite-pgo.ll [NewPM/Inliner] Reduce threshold for cold callsites in the non-PGO case 2017-06-27 23:11:18 +00:00
inline-cold-callsite-samplepgo.ll Move accurate-sample-profile into the function attribute. 2017-08-24 21:37:04 +00:00
inline-cold-callsite.ll [NewPM/Inliner] Reduce threshold for cold callsites in the non-PGO case 2017-06-27 23:11:18 +00:00
inline-cold.ll Decrease inlinecold-threshold to 45 2017-05-11 21:36:28 +00:00
inline-constexpr-addrspacecast-argument.ll ConstantFold: Handle gep nonnull, undef as well 2017-05-08 17:37:33 +00:00
inline-fast-math-flags.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline-funclets.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline-hot-callee.ll [Inliner] Do not mix callsite and callee hotness based updates. 2017-05-16 21:18:09 +00:00
inline-hot-callsite-2.ll Improve PGO support for the new inliner 2017-01-20 22:44:04 +00:00
inline-hot-callsite.ll [PM] Add ProfileSummaryAnalysis as a required pass in the new pipeline. 2017-05-04 16:58:45 +00:00
inline-indirect.ll
inline-invoke-tail.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
inline-invoke-with-asm-call.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline-optnone.ll
inline-optsize.ll [InlineCost] Remove skew when calculating call costs 2016-11-14 11:14:41 +00:00
inline-probe-stack.ll Add a "probe-stack" attribute 2017-06-21 18:46:50 +00:00
inline-remark.ll [Inliner] Attribute callsites with inline remarks 2018-08-28 15:27:25 +00:00
inline-stack-probe-size.ll Define behavior of "stack-probe-size" attribute when inlining. 2017-06-22 23:22:36 +00:00
inline-tail.ll Treat inlining a notail call as a regular, non-tail call 2018-04-02 21:23:16 +00:00
inline-threshold.ll
inline-varargs.ll [InlineCost] Mark functions accessing varargs as not viable. 2018-01-28 19:11:49 +00:00
inline-vla.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
inline_cleanup.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline_constprop.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline_dbg_declare.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
inline_dce.ll [Inliner] Modernize all of the inliner tests that were using grep. 2016-12-27 02:47:37 +00:00
inline_inv_group.ll ConstantFolding: Avoid a crash. 2018-07-23 21:20:00 +00:00
inline_invoke.ll [PM] Move the collection of call sites to a more appropriate place 2016-12-27 01:24:50 +00:00
inline_minisize.ll
inline_prune.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline_returns_twice.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline_ssp.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline_stats.ll [ThinLTO] Port InlinerFunctionImportStats handling to new PM 2018-06-28 20:07:47 +00:00
inline_unreachable-2.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
inline_unreachable.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
internal-scc-members.ll [PM/Inliner] Fix a bug in r297374 where we would leave stale calls in 2017-03-16 10:45:42 +00:00
invoke-cleanup.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
invoke-combine-clauses.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
invoke-cost.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
invoke_test-1.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
invoke_test-2.ll [Inliner] Modernize all of the inliner tests that were using grep. 2016-12-27 02:47:37 +00:00
invoke_test-3.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
label-annotation.ll Add llvm.codeview.annotation to implement MSVC __annotation 2017-09-05 20:14:58 +00:00
last-call-bonus.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
last-call-no-bonus.ll [PM] Split LoopUnrollPass and make partial unroller a function pass 2017-08-02 20:35:29 +00:00
last-callsite.ll [NFC] fix trivial typos in comments and documents 2018-01-29 05:17:03 +00:00
launder.invariant.group.ll Fix aliasing of launder.invariant.group 2018-05-23 09:16:44 +00:00
lifetime-no-datalayout.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
lifetime.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
local-as-metadata-undominated-use.ll Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
monster_scc.ll [PM/Inliner] Add a test case that encapsulates the core issue addressed 2017-03-16 10:13:55 +00:00
nested-inline.ll [PM] Provide an initial, minimal port of the inliner to the new pass manager. 2016-12-20 03:15:32 +00:00
noalias-calls.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
noalias-cs.ll
noalias.ll
noalias2.ll
noinline-recursive-fn.ll [PM] Add one of the features left out of the initial inliner patch: 2016-12-27 06:46:20 +00:00
noinline.ll
nonnull.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
null-function.ll
optimization-remarks-hotness-threshold.ll Enrich inline messages 2018-08-05 14:53:08 +00:00
optimization-remarks-passed-yaml.ll Enrich inline messages 2018-08-05 14:53:08 +00:00
optimization-remarks-with-hotness.ll Enrich inline messages 2018-08-05 14:53:08 +00:00
optimization-remarks-yaml.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
optimization-remarks.ll Enrich inline messages 2018-08-05 14:53:08 +00:00
parallel-loop-md.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
partial-inline-act.ll Renable test that was disabled due to cost analysis 2017-05-14 02:58:39 +00:00
pr21206.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
pr22285.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
pr26698.ll [InlineCost] Refactor the checks for different analyses to be a bit more 2017-08-14 21:25:00 +00:00
pr28298.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
pr33637.ll [Cloner] Re-map simplfied cloned instructions. 2017-07-01 03:29:33 +00:00
prof-update-instr.ll Fix update VP metadata after inlining for instrumentation PGO 2017-05-22 20:28:18 +00:00
prof-update-sample.ll Fix update VP metadata after inlining for instrumentation PGO 2017-05-22 20:28:18 +00:00
profile-meta.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
ptr-diff.ll Teach InlineCost about address spaces 2018-01-04 18:23:40 +00:00
recursive.ll [Inliner] Fix a nasty bug when inlining a non-recursive trace of 2017-08-19 06:56:11 +00:00
redundant-loads.ll [InlineCost] Skip volatile loads when looking for repeated loads 2017-12-19 13:42:58 +00:00
store-sroa.ll
switch.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
vector-bonus.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00
vector-no-bonus.ll [Inliner] Do not apply any bonus for cold callsites. 2017-07-28 21:47:36 +00:00
zero-cost.ll [PM] Turn on the new PM's inliner in addition to the current one for 2016-12-27 07:18:43 +00:00