diff options
author | Diego Novillo <dnovillo@google.com> | 2014-02-14 19:27:53 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@google.com> | 2014-02-14 19:27:53 +0000 |
commit | 5b5cf503b53ff103c9c0ecb735479366d79a47bf (patch) | |
tree | 59bf9ac85d7945b610df04f2c8049dde58b792c4 /llvm/lib/MC/MCDwarf.cpp | |
parent | 4cdaa7d778e6b61df85a4b870b3b959cd40a5911 (diff) | |
download | bcm5719-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.cpp | 10 |
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); |