Debug Info: store the files and directories for each compile unit.
authorManman Ren <mren@apple.com>
Thu, 7 Mar 2013 01:42:00 +0000 (01:42 +0000)
committerManman Ren <mren@apple.com>
Thu, 7 Mar 2013 01:42:00 +0000 (01:42 +0000)
commit3de61b4c0144748e4b9157e2c22fe4ea685981a2
tree76198e1cb0e2d2e257ac269f9cd6175087d2d3bd
parent55d8f6d49023de5182efbb29d0b3bd0035909d62
Debug Info: store the files and directories for each compile unit.

We now emit a line table for each compile unit. To reduce the prologue size
of each line table, the files and directories used by each compile unit are
stored in std::map<unsigned, std::vector< > > instead of std::vector< >.

The prologue for a lto'ed image can be as big as 93K. Duplicating 93K for each
compile unit causes a huge increase of debug info. With this patch, each
prologue will only emit the files required by the compile unit.

rdar://problem/13342023

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176605 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/MC/MCContext.h
include/llvm/MC/MCStreamer.h
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/AsmPrinter/DwarfDebug.h
lib/MC/MCAsmStreamer.cpp
lib/MC/MCContext.cpp
lib/MC/MCDwarf.cpp
lib/MC/MCNullStreamer.cpp
lib/MC/MCPureStreamer.cpp
lib/MC/MCStreamer.cpp
test/DebugInfo/X86/stmt-list-multiple-compile-units.ll