diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-04-01 08:07:52 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-04-01 08:07:52 +0000 |
commit | a07c1ab4e6870af37eb183c46765dd1057c00b63 (patch) | |
tree | 1e66211cafb975e0b096ba1147d5cf0e2951f8c5 /lib/MC/MCStreamer.cpp | |
parent | 5b2de5dd3d46b54788abe8ec920561484da44f02 (diff) | |
download | llvm-a07c1ab4e6870af37eb183c46765dd1057c00b63.tar.gz llvm-a07c1ab4e6870af37eb183c46765dd1057c00b63.tar.bz2 llvm-a07c1ab4e6870af37eb183c46765dd1057c00b63.tar.xz |
DebugInfo: Avoid creating unnecessary/empty line tables and remove the special case of '0' in DwarfCompileUnit::initStmtList by just always using a label difference
This moves one case of raw text checking down into the MCStreamer
interfaces in the form of a virtual function, even if we ultimately end
up consolidating on the one-or-many line tables issue one day, this is
nicer in the interim. This just generally streamlines a bunch of use
cases into a common code path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205287 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCStreamer.cpp')
-rw-r--r-- | lib/MC/MCStreamer.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp index 0558a58abf..8fa55aa59e 100644 --- a/lib/MC/MCStreamer.cpp +++ b/lib/MC/MCStreamer.cpp @@ -191,6 +191,16 @@ void MCStreamer::EmitDwarfLocDirective(unsigned FileNo, unsigned Line, Discriminator); } +MCSymbol *MCStreamer::getDwarfLineTableSymbol(unsigned CUID) { + MCDwarfLineTable &Table = getContext().getMCDwarfLineTable(CUID); + if (!Table.getLabel()) { + StringRef Prefix = Context.getAsmInfo()->getPrivateGlobalPrefix(); + Table.setLabel( + Context.GetOrCreateSymbol(Prefix + "line_table_start" + Twine(CUID))); + } + return Table.getLabel(); +} + MCDwarfFrameInfo *MCStreamer::getCurrentFrameInfo() { if (FrameInfos.empty()) return 0; |