Index: llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp =================================================================== --- llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp +++ llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp @@ -73,6 +73,10 @@ return new VETargetAsmStreamer(S, OS); } +static MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) { + return new VETargetStreamer(S); +} + static MCInstPrinter *createVEMCInstPrinter(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, @@ -108,6 +112,9 @@ // Register the asm streamer. TargetRegistry::RegisterAsmTargetStreamer(*T, createTargetAsmStreamer); + // Register the null streamer. + TargetRegistry::RegisterNullTargetStreamer(*T, createNullTargetStreamer); + // Register the MCInstPrinter TargetRegistry::RegisterMCInstPrinter(*T, createVEMCInstPrinter); } Index: llvm/lib/Target/VE/MCTargetDesc/VETargetStreamer.h =================================================================== --- llvm/lib/Target/VE/MCTargetDesc/VETargetStreamer.h +++ llvm/lib/Target/VE/MCTargetDesc/VETargetStreamer.h @@ -20,9 +20,9 @@ public: VETargetStreamer(MCStreamer &S); /// Emit ".register , #ignore". - virtual void emitVERegisterIgnore(unsigned reg) = 0; + virtual void emitVERegisterIgnore(unsigned reg){}; /// Emit ".register , #scratch". - virtual void emitVERegisterScratch(unsigned reg) = 0; + virtual void emitVERegisterScratch(unsigned reg){}; }; // This part is for ascii assembly output Index: llvm/test/CodeGen/VE/null-mctargetstreamer.ll =================================================================== --- /dev/null +++ llvm/test/CodeGen/VE/null-mctargetstreamer.ll @@ -0,0 +1,5 @@ +; RUN: llc -march=ve -filetype=null %s + +define void @foo() { + ret void +}