summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCAsmStreamer.cpp
diff options
context:
space:
mode:
authorNilanjana Basu <nilanjana.basu87@gmail.com>2019-08-05 13:11:51 +0000
committerNilanjana Basu <nilanjana.basu87@gmail.com>2019-08-05 13:11:51 +0000
commita885afa9fa8cab3b34f1ddf3d21535f88b662881 (patch)
tree55184727a14bf5bcdc44d1e0f0e80d76c8f03235 /llvm/lib/MC/MCAsmStreamer.cpp
parentf9e0df071ec24a2b0aafe52a1d67d359744cf26e (diff)
downloadbcm5719-llvm-a885afa9fa8cab3b34f1ddf3d21535f88b662881.tar.gz
bcm5719-llvm-a885afa9fa8cab3b34f1ddf3d21535f88b662881.zip
Changing representation of .cv_def_range directives in Codeview debug info assembly format for better readability
llvm-svn: 367850
Diffstat (limited to 'llvm/lib/MC/MCAsmStreamer.cpp')
-rw-r--r--llvm/lib/MC/MCAsmStreamer.cpp63
1 files changed, 56 insertions, 7 deletions
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index 7a2b0b8a122..c0890b59fe3 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -254,9 +254,26 @@ public:
unsigned SourceLineNum,
const MCSymbol *FnStartSym,
const MCSymbol *FnEndSym) override;
+
+ void PrintCVDefRangePrefix(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges);
+
+ void EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeRegisterRelSym::Header DRHdr) override;
+
void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- StringRef FixedSizePortion) override;
+ codeview::DefRangeSubfieldRegisterSym::Header DRHdr) override;
+
+ void EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeRegisterSym::Header DRHdr) override;
+
+ void EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeFramePointerRelSym::Header DRHdr) override;
+
void EmitCVStringTableDirective() override;
void EmitCVFileChecksumsDirective() override;
void EmitCVFileChecksumOffsetDirective(unsigned FileNo) override;
@@ -1376,9 +1393,8 @@ void MCAsmStreamer::EmitCVInlineLinetableDirective(unsigned PrimaryFunctionId,
PrimaryFunctionId, SourceFileId, SourceLineNum, FnStartSym, FnEndSym);
}
-void MCAsmStreamer::EmitCVDefRangeDirective(
- ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
- StringRef FixedSizePortion) {
+void MCAsmStreamer::PrintCVDefRangePrefix(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges) {
OS << "\t.cv_def_range\t";
for (std::pair<const MCSymbol *, const MCSymbol *> Range : Ranges) {
OS << ' ';
@@ -1386,10 +1402,43 @@ void MCAsmStreamer::EmitCVDefRangeDirective(
OS << ' ';
Range.second->print(OS, MAI);
}
- OS << ", ";
- PrintQuotedString(FixedSizePortion, OS);
+}
+
+void MCAsmStreamer::EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeRegisterRelSym::Header DRHdr) {
+ PrintCVDefRangePrefix(Ranges);
+ OS << ", reg_rel, ";
+ OS << DRHdr.Register << ", " << DRHdr.Flags << ", "
+ << DRHdr.BasePointerOffset;
+ EmitEOL();
+}
+
+void MCAsmStreamer::EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeSubfieldRegisterSym::Header DRHdr) {
+ PrintCVDefRangePrefix(Ranges);
+ OS << ", subfield_reg, ";
+ OS << DRHdr.Register << ", " << DRHdr.OffsetInParent;
+ EmitEOL();
+}
+
+void MCAsmStreamer::EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeRegisterSym::Header DRHdr) {
+ PrintCVDefRangePrefix(Ranges);
+ OS << ", reg, ";
+ OS << DRHdr.Register;
+ EmitEOL();
+}
+
+void MCAsmStreamer::EmitCVDefRangeDirective(
+ ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
+ codeview::DefRangeFramePointerRelSym::Header DRHdr) {
+ PrintCVDefRangePrefix(Ranges);
+ OS << ", frame_ptr_rel, ";
+ OS << DRHdr.Offset;
EmitEOL();
- this->MCStreamer::EmitCVDefRangeDirective(Ranges, FixedSizePortion);
}
void MCAsmStreamer::EmitCVStringTableDirective() {
OpenPOWER on IntegriCloud