llvm-6502/test/Transforms/DeadArgElim
David Blaikie 92f9736baf DebugInfo+DeadArgElimination: Ensure llvm::Function*s from debug info are updated even when DAE removes both varargs and non-varargs arguments on the same function.
After some stellar (& inspired) help from Reid Kleckner providing a test
case for some rather unstable undefined behavior showing up as
assertions produced by r214761, I was able to fix this issue in DAE
involving the application of both varargs removal, followed by normal
argument removal.

Indeed I introduced this same bug into ArgumentPromotion (r212128) by
copying the code from DAE, and when I fixed the bug in ArgPromo
(r213805) and commented in that patch that I didn't need to address the
same issue in DAE because it was a single pass. Turns out it's two pass,
one for the varargs and one for the normal arguments, so the same fix is
needed (at least during varargs removal). So here it is.

(the observable/net effect of this bug, even when it didn't result in
assertion failure, is that debug info would describe the DAE'd function
in the abstract, but wouldn't provide high/low_pc, variable locations,
line table, etc (it would appear as though the function had been
entirely optimized away), see the original PR14016 for details of the
general problem)

I'm not recommitting the assertion just yet, as there's been another
regression of it since I last tried. It might just be a few test cases
weren't adequately updated after Adrian or Duncan's recent schema
changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219210 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-07 15:10:23 +00:00
..
2006-06-27-struct-ret.ll
2007-02-07-FuncRename.ll
2007-10-18-VarargsReturn.ll
2007-12-20-ParamAttrs.ll Use references to attribute groups on the call/invoke instructions. 2013-02-22 09:09:42 +00:00
2008-01-16-VarargsParamAttrs.ll
2008-06-23-DeadAfterLive.ll
2009-03-17-MRE-Invoke.ll
2010-04-30-DbgInfo.ll Revert "Revert "DI: Fold constant arguments into a single MDString"" 2014-10-03 20:01:09 +00:00
2013-05-17-VarargsAndBlockAddress.ll Fix DeleteDeadVarargs not to crash on functions referenced by BlockAddresses 2013-06-13 19:51:17 +00:00
basictest.ll
canon.ll
dbginfo.ll DebugInfo+DeadArgElimination: Ensure llvm::Function*s from debug info are updated even when DAE removes both varargs and non-varargs arguments on the same function. 2014-10-07 15:10:23 +00:00
dead_vaargs.ll musttail: Don't eliminate varargs packs if there is a forwarding call 2014-08-26 00:59:51 +00:00
deadexternal.ll Fix broken CHECK lines 2014-02-16 07:31:05 +00:00
deadretval2.ll
deadretval.ll
keepalive.ll IR: Change inalloca's grammar a bit 2014-03-09 06:41:58 +00:00
linkage.ll Fix a bug in Dead Argument Elimination. 2013-10-09 17:21:44 +00:00
multdeadretval.ll
returned.ll Start using CHECK-LABEL in some tests. 2013-07-12 14:54:12 +00:00
variadic_safety.ll Make DeadArgumentElimination more conservative on variadic functions 2013-06-09 02:17:27 +00:00