llvm-project/llvm/test/Transforms/Inline
David Bolvansky c0aa4b75a4 Enrich inline messages
Summary:
This patch improves Inliner to provide causes/reasons for negative inline decisions.
1. It adds one new message field to InlineCost to report causes for Always and Never instances. All Never and Always instantiations must provide a simple message.
2. Several functions that used to return the inlining results as boolean are changed to return InlineResult which carries the cause for negative decision.
3. Changed remark priniting and debug output messages to provide the additional messages and related inline cost.
4. Adjusted tests for changed printing.

Patch by: yrouban (Yevgeny Rouban)


Reviewers: craig.topper, sammccall, sgraenitz, NutshellySima, shchenz, chandlerc, apilipenko, javed.absar, tejohnson, dblaikie, sanjoy, eraman, xbolva00

Reviewed By: tejohnson, xbolva00

Subscribers: xbolva00, llvm-commits, arsenm, mehdi_amini, eraman, haicheng, steven_wu, dexonsmith

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

llvm-svn: 338969
2018-08-05 14:53:08 +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
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-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