diff options
author | Mehdi Amini <mehdi.amini@apple.com> | 2016-10-09 23:00:34 +0000 |
---|---|---|
committer | Mehdi Amini <mehdi.amini@apple.com> | 2016-10-09 23:00:34 +0000 |
commit | ae5f5d3d3cdcd8a061cb67e9a30303242891b2a2 (patch) | |
tree | 5bf59aa0724e0e2658f8357d041e69718b1fc97d /lib/Target/MSP430 | |
parent | dfd800898f3219443b768049cbabcda74493aaeb (diff) |
Move the global variables representing each Target behind accessor function
This avoids "static initialization order fiasco"
Differential Revision: https://reviews.llvm.org/D25412
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283702 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/MSP430')
-rw-r--r-- | lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp | 11 | ||||
-rw-r--r-- | lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h | 2 | ||||
-rw-r--r-- | lib/Target/MSP430/MSP430AsmPrinter.cpp | 2 | ||||
-rw-r--r-- | lib/Target/MSP430/MSP430TargetMachine.cpp | 2 | ||||
-rw-r--r-- | lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp | 11 |
5 files changed, 16 insertions, 12 deletions
diff --git a/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp b/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp index b3631caca95..8c715500f38 100644 --- a/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp +++ b/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp @@ -59,20 +59,21 @@ static MCInstPrinter *createMSP430MCInstPrinter(const Triple &T, extern "C" void LLVMInitializeMSP430TargetMC() { // Register the MC asm info. - RegisterMCAsmInfo<MSP430MCAsmInfo> X(TheMSP430Target); + RegisterMCAsmInfo<MSP430MCAsmInfo> X(getTheMSP430Target()); // Register the MC instruction info. - TargetRegistry::RegisterMCInstrInfo(TheMSP430Target, createMSP430MCInstrInfo); + TargetRegistry::RegisterMCInstrInfo(getTheMSP430Target(), + createMSP430MCInstrInfo); // Register the MC register info. - TargetRegistry::RegisterMCRegInfo(TheMSP430Target, + TargetRegistry::RegisterMCRegInfo(getTheMSP430Target(), createMSP430MCRegisterInfo); // Register the MC subtarget info. - TargetRegistry::RegisterMCSubtargetInfo(TheMSP430Target, + TargetRegistry::RegisterMCSubtargetInfo(getTheMSP430Target(), createMSP430MCSubtargetInfo); // Register the MCInstPrinter. - TargetRegistry::RegisterMCInstPrinter(TheMSP430Target, + TargetRegistry::RegisterMCInstPrinter(getTheMSP430Target(), createMSP430MCInstPrinter); } diff --git a/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h b/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h index 241f1d6f9c0..b901c5f0979 100644 --- a/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h +++ b/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h @@ -19,7 +19,7 @@ namespace llvm { class Target; -extern Target TheMSP430Target; +Target &getTheMSP430Target(); } // End llvm namespace diff --git a/lib/Target/MSP430/MSP430AsmPrinter.cpp b/lib/Target/MSP430/MSP430AsmPrinter.cpp index fe1ce7bb8bd..abf062fe86a 100644 --- a/lib/Target/MSP430/MSP430AsmPrinter.cpp +++ b/lib/Target/MSP430/MSP430AsmPrinter.cpp @@ -155,5 +155,5 @@ void MSP430AsmPrinter::EmitInstruction(const MachineInstr *MI) { // Force static initialization. extern "C" void LLVMInitializeMSP430AsmPrinter() { - RegisterAsmPrinter<MSP430AsmPrinter> X(TheMSP430Target); + RegisterAsmPrinter<MSP430AsmPrinter> X(getTheMSP430Target()); } diff --git a/lib/Target/MSP430/MSP430TargetMachine.cpp b/lib/Target/MSP430/MSP430TargetMachine.cpp index b2e698ca554..bebe5fa35ad 100644 --- a/lib/Target/MSP430/MSP430TargetMachine.cpp +++ b/lib/Target/MSP430/MSP430TargetMachine.cpp @@ -23,7 +23,7 @@ using namespace llvm; extern "C" void LLVMInitializeMSP430Target() { // Register the target. - RegisterTargetMachine<MSP430TargetMachine> X(TheMSP430Target); + RegisterTargetMachine<MSP430TargetMachine> X(getTheMSP430Target()); } static Reloc::Model getEffectiveRelocModel(Optional<Reloc::Model> RM) { diff --git a/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp b/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp index 0d71d04ebe2..62f52a19367 100644 --- a/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp +++ b/lib/Target/MSP430/TargetInfo/MSP430TargetInfo.cpp @@ -12,9 +12,12 @@ #include "llvm/Support/TargetRegistry.h" using namespace llvm; -Target llvm::TheMSP430Target; +Target &llvm::getTheMSP430Target() { + static Target TheMSP430Target; + return TheMSP430Target; +} -extern "C" void LLVMInitializeMSP430TargetInfo() { - RegisterTarget<Triple::msp430> - X(TheMSP430Target, "msp430", "MSP430 [experimental]"); +extern "C" void LLVMInitializeMSP430TargetInfo() { + RegisterTarget<Triple::msp430> X(getTheMSP430Target(), "msp430", + "MSP430 [experimental]"); } |