static MCTargetStreamer *createTargetAsmStreamer(MCStreamer &S,
formatted_raw_ostream &,
MCInstPrinter *, bool) {
+ return new NVPTXAsmTargetStreamer(S);
+}
+
+static MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) {
return new NVPTXTargetStreamer(S);
}
// Register the MCTargetStreamer.
TargetRegistry::RegisterAsmTargetStreamer(*T, createTargetAsmStreamer);
+
+ // Register the MCTargetStreamer.
+ TargetRegistry::RegisterNullTargetStreamer(*T, createNullTargetStreamer);
}
}
// 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);
void emitRawBytes(StringRef Data) override;
};
+class NVPTXAsmTargetStreamer : public NVPTXTargetStreamer {
+public:
+ NVPTXAsmTargetStreamer(MCStreamer &S);
+ ~NVPTXAsmTargetStreamer() override;
+};
+
} // end namespace llvm
#endif
clearAnnotationCache(&M);
- if (auto *TS = static_cast<NVPTXTargetStreamer *>(
- 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<NVPTXTargetStreamer *>(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);