diff options
Diffstat (limited to 'llvm/lib/Target/PowerPC')
7 files changed, 38 insertions, 23 deletions
diff --git a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp index 8b3eac2e691..0d7a6375ced 100644 --- a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp +++ b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp @@ -1980,9 +1980,9 @@ bool PPCAsmParser::ParseDirectiveLocalEntry(SMLoc L) { /// Force static initialization. extern "C" void LLVMInitializePowerPCAsmParser() { - RegisterMCAsmParser<PPCAsmParser> A(ThePPC32Target); - RegisterMCAsmParser<PPCAsmParser> B(ThePPC64Target); - RegisterMCAsmParser<PPCAsmParser> C(ThePPC64LETarget); + RegisterMCAsmParser<PPCAsmParser> A(getThePPC32Target()); + RegisterMCAsmParser<PPCAsmParser> B(getThePPC64Target()); + RegisterMCAsmParser<PPCAsmParser> C(getThePPC64LETarget()); } #define GET_REGISTER_MATCHER diff --git a/llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp b/llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp index c5eafcf2898..12ffbfdeacc 100644 --- a/llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp +++ b/llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp @@ -51,11 +51,11 @@ static MCDisassembler *createPPCLEDisassembler(const Target &T, extern "C" void LLVMInitializePowerPCDisassembler() { // Register the disassembler for each target. - TargetRegistry::RegisterMCDisassembler(ThePPC32Target, + TargetRegistry::RegisterMCDisassembler(getThePPC32Target(), createPPCDisassembler); - TargetRegistry::RegisterMCDisassembler(ThePPC64Target, + TargetRegistry::RegisterMCDisassembler(getThePPC64Target(), createPPCDisassembler); - TargetRegistry::RegisterMCDisassembler(ThePPC64LETarget, + TargetRegistry::RegisterMCDisassembler(getThePPC64LETarget(), createPPCLEDisassembler); } diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp index c9074448fe4..bbd10e5b260 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp @@ -228,7 +228,8 @@ static MCInstPrinter *createPPCMCInstPrinter(const Triple &T, } extern "C" void LLVMInitializePowerPCTargetMC() { - for (Target *T : {&ThePPC32Target, &ThePPC64Target, &ThePPC64LETarget}) { + for (Target *T : + {&getThePPC32Target(), &getThePPC64Target(), &getThePPC64LETarget()}) { // Register the MC asm info. RegisterMCAsmInfoFn C(*T, createPPCMCAsmInfo); diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h index ee35b45c689..0989e0c8e26 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h @@ -35,9 +35,9 @@ class StringRef; class raw_pwrite_stream; class raw_ostream; -extern Target ThePPC32Target; -extern Target ThePPC64Target; -extern Target ThePPC64LETarget; +Target &getThePPC32Target(); +Target &getThePPC64Target(); +Target &getThePPC64LETarget(); MCCodeEmitter *createPPCMCCodeEmitter(const MCInstrInfo &MCII, const MCRegisterInfo &MRI, diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index 1e864034d52..c347cfddc6d 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -1447,7 +1447,10 @@ createPPCAsmPrinterPass(TargetMachine &tm, // Force static initialization. extern "C" void LLVMInitializePowerPCAsmPrinter() { - TargetRegistry::RegisterAsmPrinter(ThePPC32Target, createPPCAsmPrinterPass); - TargetRegistry::RegisterAsmPrinter(ThePPC64Target, createPPCAsmPrinterPass); - TargetRegistry::RegisterAsmPrinter(ThePPC64LETarget, createPPCAsmPrinterPass); + TargetRegistry::RegisterAsmPrinter(getThePPC32Target(), + createPPCAsmPrinterPass); + TargetRegistry::RegisterAsmPrinter(getThePPC64Target(), + createPPCAsmPrinterPass); + TargetRegistry::RegisterAsmPrinter(getThePPC64LETarget(), + createPPCAsmPrinterPass); } diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp index 9b78739558c..81d125f4e38 100644 --- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -74,9 +74,9 @@ EnableMachineCombinerPass("ppc-machine-combiner", extern "C" void LLVMInitializePowerPCTarget() { // Register the targets - RegisterTargetMachine<PPC32TargetMachine> A(ThePPC32Target); - RegisterTargetMachine<PPC64TargetMachine> B(ThePPC64Target); - RegisterTargetMachine<PPC64TargetMachine> C(ThePPC64LETarget); + RegisterTargetMachine<PPC32TargetMachine> A(getThePPC32Target()); + RegisterTargetMachine<PPC64TargetMachine> B(getThePPC64Target()); + RegisterTargetMachine<PPC64TargetMachine> C(getThePPC64LETarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); initializePPCBoolRetToIntPass(PR); diff --git a/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp b/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp index 5b2fe19837e..a637dd11f81 100644 --- a/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp +++ b/llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp @@ -12,15 +12,26 @@ #include "llvm/Support/TargetRegistry.h" using namespace llvm; -Target llvm::ThePPC32Target, llvm::ThePPC64Target, llvm::ThePPC64LETarget; +Target &llvm::getThePPC32Target() { + static Target ThePPC32Target; + return ThePPC32Target; +} +Target &llvm::getThePPC64Target() { + static Target ThePPC64Target; + return ThePPC64Target; +} +Target &llvm::getThePPC64LETarget() { + static Target ThePPC64LETarget; + return ThePPC64LETarget; +} extern "C" void LLVMInitializePowerPCTargetInfo() { - RegisterTarget<Triple::ppc, /*HasJIT=*/true> - X(ThePPC32Target, "ppc32", "PowerPC 32"); + RegisterTarget<Triple::ppc, /*HasJIT=*/true> X(getThePPC32Target(), "ppc32", + "PowerPC 32"); - RegisterTarget<Triple::ppc64, /*HasJIT=*/true> - Y(ThePPC64Target, "ppc64", "PowerPC 64"); + RegisterTarget<Triple::ppc64, /*HasJIT=*/true> Y(getThePPC64Target(), "ppc64", + "PowerPC 64"); - RegisterTarget<Triple::ppc64le, /*HasJIT=*/true> - Z(ThePPC64LETarget, "ppc64le", "PowerPC 64 LE"); + RegisterTarget<Triple::ppc64le, /*HasJIT=*/true> Z( + getThePPC64LETarget(), "ppc64le", "PowerPC 64 LE"); } |