DebugInfo: Lazily construct subprogram definition DIEs.
authorDavid Blaikie <dblaikie@gmail.com>
Tue, 27 May 2014 18:37:48 +0000 (18:37 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Tue, 27 May 2014 18:37:48 +0000 (18:37 +0000)
commit3c2fff3fe6152b81743f639d7b7d78ab11456e5d
treeabfb3c63b36f7366fc1b2e976d02e748acb5bf43
parentf7221adb8ed6e60ac3e97ab528ec2e4c2e18fc79
DebugInfo: Lazily construct subprogram definition DIEs.

A further step to correctly emitting concrete out of line definitions
preceeding inlined instances of the same program.

To do this, emission of subprograms must be delayed until required since
we don't know which (abstract only (if there's no out of line
definition), concrete only (if there are no inlined instances), or both)
DIEs are required at the start of the module.

To reduce the test churn in the following commit that actually fixes the
bug, this commit introduces the lazy DIE construction and cleans up test
cases that are impacted by the changes in the resulting DIE ordering.

llvm-svn: 209675
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
llvm/test/DebugInfo/X86/concrete_out_of_line.ll
llvm/test/DebugInfo/X86/debug-info-blocks.ll
llvm/test/DebugInfo/X86/inline-member-function.ll
llvm/test/DebugInfo/X86/inline-seldag-test.ll
llvm/test/DebugInfo/X86/sret.ll
llvm/test/DebugInfo/debug-info-qualifiers.ll
llvm/test/DebugInfo/namespace.ll
llvm/test/DebugInfo/varargs.ll
llvm/test/Linker/type-unique-odr-a.ll