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 | f42454b94b035cd4ad65c8470bb56e761f79b86e (patch) | |
| tree | dc8386dc823263161a0fadf2cf1de1227927a2e7 /llvm/lib/Target/Lanai | |
| parent | 69125397170c6ee553725b8bfb562fe38d3ffefe (diff) | |
| download | bcm5719-llvm-f42454b94b035cd4ad65c8470bb56e761f79b86e.tar.gz bcm5719-llvm-f42454b94b035cd4ad65c8470bb56e761f79b86e.zip | |
Move the global variables representing each Target behind accessor function
This avoids "static initialization order fiasco"
Differential Revision: https://reviews.llvm.org/D25412
llvm-svn: 283702
Diffstat (limited to 'llvm/lib/Target/Lanai')
| -rw-r--r-- | llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/Lanai.h | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/LanaiTargetMachine.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp | 23 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp | 9 |
8 files changed, 28 insertions, 19 deletions
diff --git a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp index bad187cf047..25e58692406 100644 --- a/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp +++ b/llvm/lib/Target/Lanai/AsmParser/LanaiAsmParser.cpp @@ -1207,7 +1207,7 @@ bool LanaiAsmParser::ParseInstruction(ParseInstructionInfo & /*Info*/, } // namespace extern "C" void LLVMInitializeLanaiAsmParser() { - RegisterMCAsmParser<LanaiAsmParser> x(TheLanaiTarget); + RegisterMCAsmParser<LanaiAsmParser> x(getTheLanaiTarget()); } } // namespace llvm diff --git a/llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp b/llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp index 744441bc90d..c93ac60e896 100644 --- a/llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp +++ b/llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp @@ -27,7 +27,7 @@ using namespace llvm; typedef MCDisassembler::DecodeStatus DecodeStatus; namespace llvm { -extern Target TheLanaiTarget; +Target &getTheLanaiTarget(); } static MCDisassembler *createLanaiDisassembler(const Target & /*T*/, @@ -38,7 +38,7 @@ static MCDisassembler *createLanaiDisassembler(const Target & /*T*/, extern "C" void LLVMInitializeLanaiDisassembler() { // Register the disassembler - TargetRegistry::RegisterMCDisassembler(TheLanaiTarget, + TargetRegistry::RegisterMCDisassembler(getTheLanaiTarget(), createLanaiDisassembler); } diff --git a/llvm/lib/Target/Lanai/Lanai.h b/llvm/lib/Target/Lanai/Lanai.h index 47bd498c579..c1fdf793305 100644 --- a/llvm/lib/Target/Lanai/Lanai.h +++ b/llvm/lib/Target/Lanai/Lanai.h @@ -45,7 +45,7 @@ FunctionPass *createLanaiMemAluCombinerPass(); // operations. FunctionPass *createLanaiSetflagAluCombinerPass(); -extern Target TheLanaiTarget; +Target &getTheLanaiTarget(); } // namespace llvm #endif // LLVM_LIB_TARGET_LANAI_LANAI_H diff --git a/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp b/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp index 97f2e99a429..607b2a97b29 100644 --- a/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp +++ b/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp @@ -239,5 +239,5 @@ bool LanaiAsmPrinter::isBlockOnlyReachableByFallthrough( // Force static initialization. extern "C" void LLVMInitializeLanaiAsmPrinter() { - RegisterAsmPrinter<LanaiAsmPrinter> X(TheLanaiTarget); + RegisterAsmPrinter<LanaiAsmPrinter> X(getTheLanaiTarget()); } diff --git a/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp b/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp index b1f4b496eb9..2a9bc25d7fa 100644 --- a/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp +++ b/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp @@ -32,7 +32,8 @@ void initializeLanaiMemAluCombinerPass(PassRegistry &); extern "C" void LLVMInitializeLanaiTarget() { // Register the target. - RegisterTargetMachine<LanaiTargetMachine> registered_target(TheLanaiTarget); + RegisterTargetMachine<LanaiTargetMachine> registered_target( + getTheLanaiTarget()); } static std::string computeDataLayout() { diff --git a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp index 04bedfb7fba..f53bfed7fa6 100644 --- a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp +++ b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp @@ -113,37 +113,40 @@ static MCInstrAnalysis *createLanaiInstrAnalysis(const MCInstrInfo *Info) { extern "C" void LLVMInitializeLanaiTargetMC() { // Register the MC asm info. - RegisterMCAsmInfo<LanaiMCAsmInfo> X(TheLanaiTarget); + RegisterMCAsmInfo<LanaiMCAsmInfo> X(getTheLanaiTarget()); // Register the MC instruction info. - TargetRegistry::RegisterMCInstrInfo(TheLanaiTarget, createLanaiMCInstrInfo); + TargetRegistry::RegisterMCInstrInfo(getTheLanaiTarget(), + createLanaiMCInstrInfo); // Register the MC register info. - TargetRegistry::RegisterMCRegInfo(TheLanaiTarget, createLanaiMCRegisterInfo); + TargetRegistry::RegisterMCRegInfo(getTheLanaiTarget(), + createLanaiMCRegisterInfo); // Register the MC subtarget info. - TargetRegistry::RegisterMCSubtargetInfo(TheLanaiTarget, + TargetRegistry::RegisterMCSubtargetInfo(getTheLanaiTarget(), createLanaiMCSubtargetInfo); // Register the MC code emitter - TargetRegistry::RegisterMCCodeEmitter(TheLanaiTarget, + TargetRegistry::RegisterMCCodeEmitter(getTheLanaiTarget(), llvm::createLanaiMCCodeEmitter); // Register the ASM Backend - TargetRegistry::RegisterMCAsmBackend(TheLanaiTarget, createLanaiAsmBackend); + TargetRegistry::RegisterMCAsmBackend(getTheLanaiTarget(), + createLanaiAsmBackend); // Register the MCInstPrinter. - TargetRegistry::RegisterMCInstPrinter(TheLanaiTarget, + TargetRegistry::RegisterMCInstPrinter(getTheLanaiTarget(), createLanaiMCInstPrinter); // Register the ELF streamer. - TargetRegistry::RegisterELFStreamer(TheLanaiTarget, createMCStreamer); + TargetRegistry::RegisterELFStreamer(getTheLanaiTarget(), createMCStreamer); // Register the MC relocation info. - TargetRegistry::RegisterMCRelocationInfo(TheLanaiTarget, + TargetRegistry::RegisterMCRelocationInfo(getTheLanaiTarget(), createLanaiElfRelocation); // Register the MC instruction analyzer. - TargetRegistry::RegisterMCInstrAnalysis(TheLanaiTarget, + TargetRegistry::RegisterMCInstrAnalysis(getTheLanaiTarget(), createLanaiInstrAnalysis); } diff --git a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h index 4f8ba14e2eb..8adaf4cea42 100644 --- a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h +++ b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h @@ -32,7 +32,7 @@ class Triple; class StringRef; class raw_pwrite_stream; -extern Target TheLanaiTarget; +Target &getTheLanaiTarget(); MCCodeEmitter *createLanaiMCCodeEmitter(const MCInstrInfo &MCII, const MCRegisterInfo &MRI, diff --git a/llvm/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp b/llvm/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp index bd615d6ad3a..e377db1d49d 100644 --- a/llvm/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp +++ b/llvm/lib/Target/Lanai/TargetInfo/LanaiTargetInfo.cpp @@ -13,8 +13,13 @@ using namespace llvm; -Target llvm::TheLanaiTarget; +namespace llvm { +Target &getTheLanaiTarget() { + static Target TheLanaiTarget; + return TheLanaiTarget; +} +} // namespace llvm extern "C" void LLVMInitializeLanaiTargetInfo() { - RegisterTarget<Triple::lanai> X(TheLanaiTarget, "lanai", "Lanai"); + RegisterTarget<Triple::lanai> X(getTheLanaiTarget(), "lanai", "Lanai"); } |

