llvm-6502/test/Transforms
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
..
ADCE
AddDiscriminators IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
AlignmentFromAssumptions
ArgumentPromotion IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
AtomicExpand/ARM
BBVectorize This patch teaches IndVarSimplify to add nuw and nsw to certain kinds 2015-01-06 19:02:56 +00:00
BranchFolding Delete -std-compile-opts. 2014-10-16 20:00:02 +00:00
CodeExtractor
CodeGenPrepare [GC] CodeGenPrep transform: simplify offsetable relocate 2015-01-14 23:27:07 +00:00
ConstantHoisting
ConstantMerge
ConstProp
CorrelatedValuePropagation LazyValueInfo: Actually re-visit partially solved block-values in solveBlockValue() 2014-11-25 17:23:05 +00:00
DeadArgElim IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
DeadStoreElimination IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
EarlyCSE Tweak EarlyCSE to recognize series of dead stores 2014-11-18 17:46:32 +00:00
FunctionAttrs Normally an 'optnone' function goes through fast-isel, which does not 2014-11-03 18:19:26 +00:00
GCOVProfiling IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
GlobalDCE Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
GlobalOpt IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
GVN GVN: propagate equalities for floating point compares 2015-01-12 19:29:48 +00:00
IndVarSimplify Fix PR22222 2015-01-15 01:46:09 +00:00
Inline DebugInfo: Use distinct inlinedAt MDLocations to avoid separate inlined calls being coalesced 2015-01-21 22:57:29 +00:00
InstCombine InstCombine: Don't strip bitcasts off of callsites marked 'thunk' 2015-01-21 22:32:04 +00:00
InstMerge Added 5 more tests related to sink store revision 224247 2014-12-17 08:12:59 +00:00
InstSimplify InstSimplify: Optimize away pointless comparisons 2014-12-20 03:04:38 +00:00
Internalize
IPConstantProp
IRCE Add a new pass "inductive range check elimination" 2015-01-16 01:03:22 +00:00
JumpThreading ValueTracking: ComputeNumSignBits should tolerate misshapen phi nodes 2015-01-04 07:06:53 +00:00
LCSSA [LCSSA] Handle PHI insertion in disjoint loops 2014-12-22 22:35:46 +00:00
LICM IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
LoadCombine Use AA in LoadCombine 2014-11-03 23:19:16 +00:00
LoopDeletion
LoopIdiom IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
LoopReroll
LoopRotate IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
LoopSimplify
LoopStrengthReduce IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
LoopUnroll Use a smaller pragma unroll threshold to reduce test execution time. 2015-01-21 13:52:02 +00:00
LoopUnswitch
LoopVectorize IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
LowerAtomic
LowerExpectIntrinsic IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
LowerInvoke
LowerSwitch
Mem2Reg IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
MemCpyOpt Allow call-slop optzn for destinations with a suitable dereferenceable attribute 2014-10-16 19:43:08 +00:00
MergeFunc IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
MetaRenamer
ObjCARC IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
PartiallyInlineLibCalls
PhaseOrdering
PruneEH
Reassociate Fix Reassociate handling of constant in presence of undef float 2015-01-16 03:00:58 +00:00
Reg2Mem
SampleProfile IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
Scalarizer IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
ScalarRepl IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
SCCP SCCP: overdefined calls cannot become constant 2014-11-07 08:54:19 +00:00
SeparateConstOffsetFromGEP/NVPTX [SeparateConstOffsetFromGEP] Fixed a bug related to unsigned modulo 2014-10-25 18:34:03 +00:00
SimplifyCFG IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
Sink
SLPVectorizer Fix Operandreorder logic in SLPVectorizer to generate longer vectorizable chain. 2015-01-20 06:11:00 +00:00
SROA [SROA] Apply a somewhat heavy and unpleasant hammer to fix PR22093, an 2015-01-05 04:17:53 +00:00
StripSymbols IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
StructurizeCFG StructurizeCFG: Use LoopInfo analysis for better loop detection 2014-12-03 04:28:32 +00:00
TailCallElim Fix tail recursion elimination 2014-11-19 13:32:51 +00:00
TailDup
Util [SwitchLowering] Handle destinations on multiple phi instructions 2014-12-02 18:31:53 +00:00