Index: llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp =================================================================== --- llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp +++ llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp @@ -63,6 +63,10 @@ static MCTargetStreamer *createTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &, MCInstPrinter *, bool) { + return new NVPTXAsmTargetStreamer(S); +} + +static MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) { return new NVPTXTargetStreamer(S); } @@ -86,5 +90,8 @@ // Register the MCTargetStreamer. TargetRegistry::RegisterAsmTargetStreamer(*T, createTargetAsmStreamer); + + // Register the MCTargetStreamer. + TargetRegistry::RegisterNullTargetStreamer(*T, createNullTargetStreamer); } } Index: llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXTargetStreamer.h =================================================================== --- llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXTargetStreamer.h +++ llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXTargetStreamer.h @@ -50,6 +50,12 @@ void emitRawBytes(StringRef Data) override; }; +class NVPTXAsmTargetStreamer : public NVPTXTargetStreamer { +public: + NVPTXAsmTargetStreamer(MCStreamer &S); + ~NVPTXAsmTargetStreamer() override; +}; + } // end namespace llvm #endif Index: llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXTargetStreamer.cpp =================================================================== --- llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXTargetStreamer.cpp +++ llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXTargetStreamer.cpp @@ -21,9 +21,12 @@ // NVPTXTargetStreamer Implemenation // NVPTXTargetStreamer::NVPTXTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {} - NVPTXTargetStreamer::~NVPTXTargetStreamer() = default; +NVPTXAsmTargetStreamer::NVPTXAsmTargetStreamer(MCStreamer &S) + : NVPTXTargetStreamer(S) {} +NVPTXAsmTargetStreamer::~NVPTXAsmTargetStreamer() = default; + void NVPTXTargetStreamer::outputDwarfFileDirectives() { for (const std::string &S : DwarfFiles) getStreamer().emitRawText(S); Index: llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp =================================================================== --- llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -895,19 +895,18 @@ clearAnnotationCache(&M); - if (auto *TS = static_cast( - OutStreamer->getTargetStreamer())) { - // Close the last emitted section - if (HasDebugInfo) { - TS->closeLastSection(); - // Emit empty .debug_loc section for better support of the empty files. - OutStreamer->emitRawText("\t.section\t.debug_loc\t{\t}"); - } - - // Output last DWARF .file directives, if any. - TS->outputDwarfFileDirectives(); + auto *TS = + static_cast(OutStreamer->getTargetStreamer()); + // Close the last emitted section + if (HasDebugInfo) { + TS->closeLastSection(); + // Emit empty .debug_loc section for better support of the empty files. + OutStreamer->emitRawText("\t.section\t.debug_loc\t{\t}"); } + // Output last DWARF .file directives, if any. + TS->outputDwarfFileDirectives(); + return ret; //bool Result = AsmPrinter::doFinalization(M);