SPARC: Register null target streamer

Fixes null dereference in emitFunctionBodyStart for 64-bit
This commit is contained in:
Matt Arsenault 2022-10-29 12:52:24 -07:00 committed by Matt Arsenault
parent 1179bdf300
commit 48732d3541
3 changed files with 10 additions and 2 deletions

View File

@ -84,6 +84,10 @@ static MCTargetStreamer *createTargetAsmStreamer(MCStreamer &S,
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 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSparcTargetMC() {
// Register the asm streamer.
TargetRegistry::RegisterAsmTargetStreamer(*T, createTargetAsmStreamer);
// Register the null streamer.
TargetRegistry::RegisterNullTargetStreamer(*T, createNullTargetStreamer);
// Register the MCInstPrinter
TargetRegistry::RegisterMCInstPrinter(*T, createSparcMCInstPrinter);
}

View File

@ -22,9 +22,9 @@ class SparcTargetStreamer : public MCTargetStreamer {
public:
SparcTargetStreamer(MCStreamer &S);
/// Emit ".register <reg>, #ignore".
virtual void emitSparcRegisterIgnore(unsigned reg) = 0;
virtual void emitSparcRegisterIgnore(unsigned reg){};
/// Emit ".register <reg>, #scratch".
virtual void emitSparcRegisterScratch(unsigned reg) = 0;
virtual void emitSparcRegisterScratch(unsigned reg){};
};
// This part is for ascii assembly output

View File

@ -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