XCore: Register null MCTargetStreamer
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Sat, 29 Oct 2022 19:55:57 +0000 (12:55 -0700)
committerMatt Arsenault <arsenm2@gmail.com>
Tue, 1 Nov 2022 18:11:03 +0000 (11:11 -0700)
Fixes null dereference when printing globals

llvm/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp
llvm/lib/Target/XCore/XCoreTargetStreamer.h
llvm/test/CodeGen/XCore/globals.ll

index a782ff4..bc69e18 100644 (file)
@@ -122,6 +122,10 @@ static MCTargetStreamer *createTargetAsmStreamer(MCStreamer &S,
   return new XCoreTargetAsmStreamer(S, OS);
 }
 
+static MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) {
+  return new XCoreTargetStreamer(S);
+}
+
 // Force static initialization.
 extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXCoreTargetMC() {
   // Register the MC asm info.
@@ -145,4 +149,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXCoreTargetMC() {
 
   TargetRegistry::RegisterAsmTargetStreamer(getTheXCoreTarget(),
                                             createTargetAsmStreamer);
+
+  TargetRegistry::RegisterNullTargetStreamer(getTheXCoreTarget(),
+                                             createNullTargetStreamer);
 }
index 3543fc5..373f0d7 100644 (file)
@@ -16,10 +16,10 @@ class XCoreTargetStreamer : public MCTargetStreamer {
 public:
   XCoreTargetStreamer(MCStreamer &S);
   ~XCoreTargetStreamer() override;
-  virtual void emitCCTopData(StringRef Name) = 0;
-  virtual void emitCCTopFunction(StringRef Name) = 0;
-  virtual void emitCCBottomData(StringRef Name) = 0;
-  virtual void emitCCBottomFunction(StringRef Name) = 0;
+  virtual void emitCCTopData(StringRef Name){};
+  virtual void emitCCTopFunction(StringRef Name){};
+  virtual void emitCCBottomData(StringRef Name){};
+  virtual void emitCCBottomFunction(StringRef Name){};
 };
 }
 
index c7eba78..5d626f9 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc < %s -march=xcore -mcpu=xs1b-generic | FileCheck %s
+; RUN: llc -march=xcore -mcpu=xs1b-generic -filetype=null %s
 
 define i32 *@addr_G1() {
 entry: