diff --git a/llvm/lib/Target/M68k/M68kAsmPrinter.cpp b/llvm/lib/Target/M68k/M68kAsmPrinter.cpp --- a/llvm/lib/Target/M68k/M68kAsmPrinter.cpp +++ b/llvm/lib/Target/M68k/M68kAsmPrinter.cpp @@ -18,6 +18,7 @@ #include "M68k.h" #include "M68kMachineFunction.h" +#include "TargetInfo/M68kTargetInfo.h" #include "llvm/Support/TargetRegistry.h" @@ -65,5 +66,5 @@ void M68kAsmPrinter::emitEndOfAsmFile(Module &M) {} extern "C" void LLVMInitializeM68kAsmPrinter() { - RegisterAsmPrinter X(TheM68kTarget); + RegisterAsmPrinter X(getTheM68kTarget()); } diff --git a/llvm/lib/Target/M68k/M68kTargetMachine.cpp b/llvm/lib/Target/M68k/M68kTargetMachine.cpp --- a/llvm/lib/Target/M68k/M68kTargetMachine.cpp +++ b/llvm/lib/Target/M68k/M68kTargetMachine.cpp @@ -13,6 +13,7 @@ #include "M68kTargetMachine.h" #include "M68k.h" +#include "TargetInfo/M68kTargetInfo.h" #include "M68kSubtarget.h" #include "M68kTargetObjectFile.h" @@ -28,7 +29,7 @@ #define DEBUG_TYPE "m68k" extern "C" void LLVMInitializeM68kTarget() { - RegisterTargetMachine X(TheM68kTarget); + RegisterTargetMachine X(getTheM68kTarget()); } namespace { diff --git a/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.h b/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.h --- a/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.h +++ b/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.h @@ -33,8 +33,6 @@ class raw_ostream; class raw_pwrite_stream; -extern Target TheM68kTarget; - MCAsmBackend *createM68kAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options); diff --git a/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.cpp b/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.cpp --- a/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.cpp +++ b/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.cpp @@ -12,10 +12,9 @@ //===----------------------------------------------------------------------===// #include "M68kMCTargetDesc.h" - -#include "M68kMCAsmInfo.h" - #include "M68kInstPrinter.h" +#include "M68kMCAsmInfo.h" +#include "TargetInfo/M68kTargetInfo.h" #include "llvm/MC/MCELFStreamer.h" #include "llvm/MC/MCInstPrinter.h" @@ -108,7 +107,7 @@ } extern "C" void LLVMInitializeM68kTargetMC() { - Target &T = TheM68kTarget; + Target &T = getTheM68kTarget(); // Register the MC asm info. RegisterMCAsmInfoFn X(T, createM68kMCAsmInfo); diff --git a/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.h b/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.h new file mode 100644 --- /dev/null +++ b/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.h @@ -0,0 +1,18 @@ +//===-- M68kTargetInfo.h - M68k Target Implementation -----------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIB_TARGET_M68K_TARGETINFO_M68KTARGETINFO_H +#define LLVM_LIB_TARGET_M68K_TARGETINFO_M68KTARGETINFO_H + +namespace llvm { +class Target; + +Target &getTheM68kTarget(); +} // namespace llvm + +#endif // LLVM_LIB_TARGET_M68K_TARGETINFO_M68KTARGETINFO_H diff --git a/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.cpp b/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.cpp --- a/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.cpp +++ b/llvm/lib/Target/M68k/TargetInfo/M68kTargetInfo.cpp @@ -10,14 +10,18 @@ /// This file contains M68k target initializer. /// //===----------------------------------------------------------------------===// -#include "MCTargetDesc/M68kMCTargetDesc.h" #include "llvm/Support/TargetRegistry.h" using namespace llvm; -Target llvm::TheM68kTarget; +namespace llvm { +Target &getTheM68kTarget() { + static Target TheM68kTarget; + return TheM68kTarget; +} +} // namespace llvm extern "C" void LLVMInitializeM68kTargetInfo() { RegisterTarget X( - TheM68kTarget, "m68k", "Motorola 68000 family", "M68k"); + getTheM68kTarget(), "m68k", "Motorola 68000 family", "M68k"); }