summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDwarf.cpp
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@google.com>2014-02-14 19:27:53 +0000
committerDiego Novillo <dnovillo@google.com>2014-02-14 19:27:53 +0000
commit5b5cf503b53ff103c9c0ecb735479366d79a47bf (patch)
tree59bf9ac85d7945b610df04f2c8049dde58b792c4 /llvm/lib/MC/MCDwarf.cpp
parent4cdaa7d778e6b61df85a4b870b3b959cd40a5911 (diff)
downloadbcm5719-llvm-5b5cf503b53ff103c9c0ecb735479366d79a47bf.tar.gz
bcm5719-llvm-5b5cf503b53ff103c9c0ecb735479366d79a47bf.zip
Support DWARF discriminators in object streamer.
Summary: This adds support for emitting DWARF path discriminator values in the object streamer. It also changes the DWARF dumper to show discriminator values in the line table output. Reviewers: echristo CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2794 llvm-svn: 201427
Diffstat (limited to 'llvm/lib/MC/MCDwarf.cpp')
-rw-r--r--llvm/lib/MC/MCDwarf.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index fe20a6d9a98..d52c7a76928 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -137,6 +137,7 @@ static inline void EmitDwarfLineTable(MCStreamer *MCOS,
unsigned Column = 0;
unsigned Flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
unsigned Isa = 0;
+ unsigned Discriminator = 0;
MCSymbol *LastLabel = NULL;
// Loop through each MCLineEntry and encode the dwarf line number table.
@@ -154,6 +155,15 @@ static inline void EmitDwarfLineTable(MCStreamer *MCOS,
MCOS->EmitIntValue(dwarf::DW_LNS_set_column, 1);
MCOS->EmitULEB128IntValue(Column);
}
+ if (Discriminator != it->getDiscriminator()) {
+ Discriminator = it->getDiscriminator();
+ unsigned Size =
+ MCOS->getContext().getAsmInfo()->getULEB128Size(Discriminator);
+ MCOS->EmitIntValue(dwarf::DW_LNS_extended_op, 1);
+ MCOS->EmitULEB128IntValue(Size + 1);
+ MCOS->EmitIntValue(dwarf::DW_LNE_set_discriminator, 1);
+ MCOS->EmitULEB128IntValue(Discriminator);
+ }
if (Isa != it->getIsa()) {
Isa = it->getIsa();
MCOS->EmitIntValue(dwarf::DW_LNS_set_isa, 1);
OpenPOWER on IntegriCloud