llvm-6502/test/Transforms/Inline
David Blaikie f93662d3d5 DebugInfo: Use distinct inlinedAt MDLocations to avoid separate inlined calls being coalesced
When two calls from the same MDLocation are inlined they currently get
treated as one inlined function call (creating difficulty debugging,
duplicate variables, etc).

Clang worked around this by including column information on inline calls
which doesn't address LTO inlining or calls to the same function from
the same line and column (such as through a macro). It also didn't
address ctor and member function calls.

By making the inlinedAt locations distinct, every call site has an
explicitly distinct location that cannot be coalesced with any other
call.

This can produce linearly (2x in the worst case where every call is
inlined and the call instruction has a non-call instruction at the same
location) more debug locations. Any increase beyond that are in cases
where the Clang workaround was insufficient and the new scheme is
creating necessary distinct nodes that were being erroneously coalesced
previously.

After this change to LLVM the incomplete workarounds in Clang. That
should reduce the number of debug locations (in a build without column
info, the default on Darwin, not the default on Linux) by not creating
pseudo-distinct locations for every call to an inline function.

(oh, and I made the inlined-at chain rebuilding iterative instead of
recursive because I was having trouble wrapping my head around it the
way it was - open to discussion on the right design for that function
(including going back to a recursive solution))

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226736 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-21 22:57:29 +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
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
2010-05-12-ValueMap.ll
align.ll Preserve non-byval pointer alignment attributes using @llvm.assume when inlining 2014-10-15 23:44:41 +00:00
alloca_test.ll
alloca-bonus.ll
alloca-in-scc.ll
alloca-merge-align-nodl.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
alloca-merge-align.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
always-inline.ll Check the alwaysinline attribute on the call as well as on the caller. 2014-05-19 18:25:54 +00:00
array_merge.ll
attributes.ll Disable inlining between sanitized and non-sanitized functions. 2013-08-08 08:22:39 +00:00
basictest.ll Fixup to r186268 and r186269: don't append -LABEL to CHECK-NOT. No functionality change. 2013-07-14 02:10:57 +00:00
blockaddress.ll Suppress inlining when the block address is taken 2014-07-01 00:19:34 +00:00
byval_lifetime.ll Add lifetime markers for allocas created to hold byval arguments, make them 2014-04-15 18:06:46 +00:00
byval-tail-call.ll Revert "Transforms: reapply SVN r219899" 2014-11-04 02:02:14 +00:00
byval.ll Revert "Inliner: Handle readonly attribute per argument when adding memcpy" 2013-11-03 12:22:13 +00:00
callgraph-update.ll
casts.ll
cfg_preserve_test.ll
crash2.ll
crash.ll
debug-info-duplicate-calls.ll DebugInfo: Use distinct inlinedAt MDLocations to avoid separate inlined calls being coalesced 2015-01-21 22:57:29 +00:00
debug-invoke.ll DebugInfo: Use distinct inlinedAt MDLocations to avoid separate inlined calls being coalesced 2015-01-21 22:57:29 +00:00
delete-call.ll Fix FileCheck --check-prefix lines. 2013-08-12 12:43:26 +00:00
devirtualize-2.ll
devirtualize-3.ll
devirtualize.ll
dynamic_alloca_test.ll
ephemeral.ll Add functions for finding ephemeral values 2014-09-07 13:49:57 +00:00
externally_available.ll
gvn-inline-iteration.ll
ignore-debug-info.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
inline_cleanup.ll
inline_constprop.ll Have InlineCost check constant fcmps 2013-07-20 04:09:00 +00:00
inline_dbg_declare.ll DebugInfo: Use distinct inlinedAt MDLocations to avoid separate inlined calls being coalesced 2015-01-21 22:57:29 +00:00
inline_dce.ll
inline_invoke.ll Fix inlining to not produce duplicate landingpad clauses 2013-12-08 00:50:58 +00:00
inline_minisize.ll
inline_prune.ll
inline_returns_twice.ll [inliner] Fix PR18206 by preventing inlining functions that call setjmp 2013-12-13 08:00:01 +00:00
inline_ssp.ll
inline-byval-bonus.ll
inline-cold.ll [inline cold threshold] Command line argument for inline threshold will 2014-04-25 17:34:55 +00:00
inline-invoke-tail.ll
inline-invoke-with-asm-call.ll Rename testing case to use - instead of _. 2013-11-04 18:52:06 +00:00
inline-musttail-varargs.ll Declare that musttail calls in variadic functions forward the ellipsis 2014-08-26 00:33:28 +00:00
inline-optnone.ll The 'optnone' attribute means don't inline anything into this function 2013-11-18 21:44:03 +00:00
inline-optsize.ll
inline-tail.ll Revert "Transforms: reapply SVN r219899" 2014-11-04 02:02:14 +00:00
inline-vla.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
invoke_test-1.ll
invoke_test-2.ll
invoke_test-3.ll
invoke-cleanup.ll Fix inlining to not lose the "cleanup" clause from landingpads 2013-12-08 00:51:21 +00:00
invoke-combine-clauses.ll Fix inlining to not produce duplicate landingpad clauses 2013-12-08 00:50:58 +00:00
invoke-cost.ll [inliner] Completely change (and fix) how the inline cost analysis 2013-12-13 07:59:56 +00:00
lifetime-no-datalayout.ll
lifetime.ll
nested-inline.ll Fixup to r186268 and r186269: don't append -LABEL to CHECK-NOT. No functionality change. 2013-07-14 02:10:57 +00:00
noalias2.ll IR: Add 'distinct' MDNodes to bitcode and assembly 2015-01-08 22:38:29 +00:00
noalias-calls.ll IR: Add 'distinct' MDNodes to bitcode and assembly 2015-01-08 22:38:29 +00:00
noalias-cs.ll IR: Add 'distinct' MDNodes to bitcode and assembly 2015-01-08 22:38:29 +00:00
noalias.ll IR: Add 'distinct' MDNodes to bitcode and assembly 2015-01-08 22:38:29 +00:00
noinline-recursive-fn.ll
noinline.ll
null-function.ll Add new lines to debugging information. 2014-07-03 02:11:49 +00:00
optimization-remarks.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
pr21206.ll Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
PR4909.ll
ptr-diff.ll Fix known typos 2014-01-24 17:20:08 +00:00
recursive.ll
switch.ll [inliner] Significantly improve the compile time in cases like PR19499 2014-04-28 08:52:44 +00:00