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/NVPTX | |
| 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/NVPTX')
| -rw-r--r-- | llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.h | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTX.h | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp | 14 |
6 files changed, 19 insertions, 13 deletions
diff --git a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp index e356a965a04..12f99274936 100644 --- a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp +++ b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp @@ -60,7 +60,7 @@ static MCInstPrinter *createNVPTXMCInstPrinter(const Triple &T, // Force static initialization. extern "C" void LLVMInitializeNVPTXTargetMC() { - for (Target *T : {&TheNVPTXTarget32, &TheNVPTXTarget64}) { + for (Target *T : {&getTheNVPTXTarget32(), &getTheNVPTXTarget64()}) { // Register the MC asm info. RegisterMCAsmInfo<NVPTXMCAsmInfo> X(*T); diff --git a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.h b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.h index bfd51239840..0c9ad977e7e 100644 --- a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.h +++ b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.h @@ -19,8 +19,8 @@ namespace llvm { class Target; -extern Target TheNVPTXTarget32; -extern Target TheNVPTXTarget64; +Target &getTheNVPTXTarget32(); +Target &getTheNVPTXTarget64(); } // End llvm namespace diff --git a/llvm/lib/Target/NVPTX/NVPTX.h b/llvm/lib/Target/NVPTX/NVPTX.h index a882441275d..c6fd82fd6f9 100644 --- a/llvm/lib/Target/NVPTX/NVPTX.h +++ b/llvm/lib/Target/NVPTX/NVPTX.h @@ -57,8 +57,8 @@ FunctionPass *createNVPTXLowerArgsPass(const NVPTXTargetMachine *TM); BasicBlockPass *createNVPTXLowerAllocaPass(); MachineFunctionPass *createNVPTXPeephole(); -extern Target TheNVPTXTarget32; -extern Target TheNVPTXTarget64; +Target &getTheNVPTXTarget32(); +Target &getTheNVPTXTarget64(); namespace NVPTX { enum DrvInterface { diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp index 5d94d5eefdd..a80e9dbb769 100644 --- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -2380,6 +2380,6 @@ std::string LineReader::readLine(unsigned lineNum) { // Force static initialization. extern "C" void LLVMInitializeNVPTXAsmPrinter() { - RegisterAsmPrinter<NVPTXAsmPrinter> X(TheNVPTXTarget32); - RegisterAsmPrinter<NVPTXAsmPrinter> Y(TheNVPTXTarget64); + RegisterAsmPrinter<NVPTXAsmPrinter> X(getTheNVPTXTarget32()); + RegisterAsmPrinter<NVPTXAsmPrinter> Y(getTheNVPTXTarget64()); } diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp index 05df3e4ccc2..1373a6efea0 100644 --- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp @@ -76,8 +76,8 @@ void initializeNVPTXLowerAllocaPass(PassRegistry &); extern "C" void LLVMInitializeNVPTXTarget() { // Register the target. - RegisterTargetMachine<NVPTXTargetMachine32> X(TheNVPTXTarget32); - RegisterTargetMachine<NVPTXTargetMachine64> Y(TheNVPTXTarget64); + RegisterTargetMachine<NVPTXTargetMachine32> X(getTheNVPTXTarget32()); + RegisterTargetMachine<NVPTXTargetMachine64> Y(getTheNVPTXTarget64()); // FIXME: This pass is really intended to be invoked during IR optimization, // but it's very NVPTX-specific. diff --git a/llvm/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp b/llvm/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp index cc7d4dc5ece..d44876abf72 100644 --- a/llvm/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp +++ b/llvm/lib/Target/NVPTX/TargetInfo/NVPTXTargetInfo.cpp @@ -12,12 +12,18 @@ #include "llvm/Support/TargetRegistry.h" using namespace llvm; -Target llvm::TheNVPTXTarget32; -Target llvm::TheNVPTXTarget64; +Target &llvm::getTheNVPTXTarget32() { + static Target TheNVPTXTarget32; + return TheNVPTXTarget32; +} +Target &llvm::getTheNVPTXTarget64() { + static Target TheNVPTXTarget64; + return TheNVPTXTarget64; +} extern "C" void LLVMInitializeNVPTXTargetInfo() { - RegisterTarget<Triple::nvptx> X(TheNVPTXTarget32, "nvptx", + RegisterTarget<Triple::nvptx> X(getTheNVPTXTarget32(), "nvptx", "NVIDIA PTX 32-bit"); - RegisterTarget<Triple::nvptx64> Y(TheNVPTXTarget64, "nvptx64", + RegisterTarget<Triple::nvptx64> Y(getTheNVPTXTarget64(), "nvptx64", "NVIDIA PTX 64-bit"); } |

