summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCAsmStreamer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/MC/MCAsmStreamer.cpp')
-rw-r--r--llvm/lib/MC/MCAsmStreamer.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index 7cc0bcdaaf0..589716bfe8c 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -225,7 +225,8 @@ public:
StringRef FileName) override;
MCSymbol *getDwarfLineTableSymbol(unsigned CUID) override;
- bool EmitCVFileDirective(unsigned FileNo, StringRef Filename) override;
+ bool EmitCVFileDirective(unsigned FileNo, StringRef Filename,
+ StringRef Checksum, unsigned ChecksumKind) override;
bool EmitCVFuncIdDirective(unsigned FuncId) override;
bool EmitCVInlineSiteIdDirective(unsigned FunctionId, unsigned IAFunc,
unsigned IAFile, unsigned IALine,
@@ -245,6 +246,7 @@ public:
StringRef FixedSizePortion) override;
void EmitCVStringTableDirective() override;
void EmitCVFileChecksumsDirective() override;
+ void EmitCVFileChecksumOffsetDirective(unsigned FileNo) override;
void EmitIdent(StringRef IdentString) override;
void EmitCFISections(bool EH, bool Debug) override;
@@ -1120,13 +1122,25 @@ MCSymbol *MCAsmStreamer::getDwarfLineTableSymbol(unsigned CUID) {
return MCStreamer::getDwarfLineTableSymbol(0);
}
-bool MCAsmStreamer::EmitCVFileDirective(unsigned FileNo, StringRef Filename) {
- if (!getContext().getCVContext().addFile(FileNo, Filename))
+bool MCAsmStreamer::EmitCVFileDirective(unsigned FileNo, StringRef Filename,
+ StringRef Checksum,
+ unsigned ChecksumKind) {
+ if (!getContext().getCVContext().addFile(*this, FileNo, Filename, Checksum,
+ ChecksumKind))
return false;
OS << "\t.cv_file\t" << FileNo << ' ';
-
PrintQuotedString(Filename, OS);
+
+ if (!ChecksumKind) {
+ EmitEOL();
+ return true;
+ }
+
+ OS << ' ';
+ PrintQuotedString(Checksum, OS);
+ OS << ' ' << ChecksumKind;
+
EmitEOL();
return true;
}
@@ -1228,6 +1242,11 @@ void MCAsmStreamer::EmitCVFileChecksumsDirective() {
EmitEOL();
}
+void MCAsmStreamer::EmitCVFileChecksumOffsetDirective(unsigned FileNo) {
+ OS << "\t.cv_filechecksumoffset\t" << FileNo;
+ EmitEOL();
+}
+
void MCAsmStreamer::EmitIdent(StringRef IdentString) {
assert(MAI->hasIdentDirective() && ".ident directive not supported");
OS << "\t.ident\t";
OpenPOWER on IntegriCloud