Index: llvm/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.cpp =================================================================== --- llvm/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.cpp +++ llvm/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.cpp @@ -84,6 +84,10 @@ return new SparcTargetAsmStreamer(S, OS); } +static MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) { + return new SparcTargetStreamer(S); +} + static MCInstPrinter *createSparcMCInstPrinter(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, @@ -122,6 +126,9 @@ // Register the asm streamer. TargetRegistry::RegisterAsmTargetStreamer(*T, createTargetAsmStreamer); + // Register the null streamer. + TargetRegistry::RegisterNullTargetStreamer(*T, createNullTargetStreamer); + // Register the MCInstPrinter TargetRegistry::RegisterMCInstPrinter(*T, createSparcMCInstPrinter); } Index: llvm/lib/Target/Sparc/MCTargetDesc/SparcTargetStreamer.h =================================================================== --- llvm/lib/Target/Sparc/MCTargetDesc/SparcTargetStreamer.h +++ llvm/lib/Target/Sparc/MCTargetDesc/SparcTargetStreamer.h @@ -22,9 +22,9 @@ public: SparcTargetStreamer(MCStreamer &S); /// Emit ".register , #ignore". - virtual void emitSparcRegisterIgnore(unsigned reg) = 0; + virtual void emitSparcRegisterIgnore(unsigned reg){}; /// Emit ".register , #scratch". - virtual void emitSparcRegisterScratch(unsigned reg) = 0; + virtual void emitSparcRegisterScratch(unsigned reg){}; }; // This part is for ascii assembly output Index: llvm/test/CodeGen/SPARC/64bit.ll =================================================================== --- llvm/test/CodeGen/SPARC/64bit.ll +++ llvm/test/CodeGen/SPARC/64bit.ll @@ -1,5 +1,6 @@ ; RUN: llc < %s -march=sparcv9 -mattr=+popc -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s ; RUN: llc < %s -march=sparcv9 -mattr=+popc | FileCheck %s -check-prefix=OPT +; RUN: llc %s -march=sparcv9 -mattr=+popc -filetype=null ; CHECK-LABEL: ret2: ; CHECK: mov %i1, %i0