Fix bcc initialization and shutdown issues.
Actually call the correct LLVM init functions.
Change-Id: I883ebe70ae0bb4a535a9bc0536a517dab0cb3ebb
diff --git a/lib/Support/Initialization.cpp b/lib/Support/Initialization.cpp
index 3ef4999..e5aa607 100644
--- a/lib/Support/Initialization.cpp
+++ b/lib/Support/Initialization.cpp
@@ -18,6 +18,8 @@
#include <cstdlib>
+#include <llvm/InitializePasses.h>
+#include <llvm/PassRegistry.h>
#include <llvm/Support/ErrorHandling.h>
#include <llvm/Support/TargetSelect.h>
@@ -45,49 +47,26 @@
llvm::remove_fatal_error_handler();
llvm::install_fatal_error_handler(llvm_error_handler, nullptr);
-#if defined(PROVIDE_ARM_CODEGEN)
- LLVMInitializeARMAsmPrinter();
- LLVMInitializeARMAsmParser();
-# if USE_DISASSEMBLER
- LLVMInitializeARMDisassembler();
-# endif
- LLVMInitializeARMTargetMC();
- LLVMInitializeARMTargetInfo();
- LLVMInitializeARMTarget();
-#endif
-#if defined(PROVIDE_MIPS_CODEGEN)
- LLVMInitializeMipsAsmPrinter();
- LLVMInitializeMipsAsmParser();
-# if USE_DISASSEMBLER
- LLVMInitializeMipsDisassembler();
-# endif
- LLVMInitializeMipsTargetMC();
- LLVMInitializeMipsTargetInfo();
- LLVMInitializeMipsTarget();
-#endif
-
-#if defined(PROVIDE_X86_CODEGEN)
- LLVMInitializeX86AsmPrinter();
- LLVMInitializeX86AsmParser();
-# if USE_DISASSEMBLER
- LLVMInitializeX86Disassembler();
-# endif
- LLVMInitializeX86TargetMC();
- LLVMInitializeX86TargetInfo();
- LLVMInitializeX86Target();
-#endif
-
-#if defined(PROVIDE_ARM64_CODEGEN)
- LLVMInitializeAArch64AsmPrinter();
- LLVMInitializeAArch64AsmParser();
-# if USE_DISASSEMBLER
- LLVMInitializeAArch64Disassembler();
-# endif
- LLVMInitializeAArch64TargetMC();
- LLVMInitializeAArch64TargetInfo();
- LLVMInitializeAArch64Target();
-#endif
+ llvm::InitializeAllTargets();
+ llvm::InitializeAllTargetMCs();
+ llvm::InitializeAllAsmPrinters();
+
+ llvm::PassRegistry &Registry = *llvm::PassRegistry::getPassRegistry();
+ llvm::initializeCore(Registry);
+ llvm::initializeDebugIRPass(Registry);
+ llvm::initializeScalarOpts(Registry);
+ llvm::initializeVectorization(Registry);
+ llvm::initializeIPO(Registry);
+ llvm::initializeAnalysis(Registry);
+ llvm::initializeIPA(Registry);
+ llvm::initializeTransformUtils(Registry);
+ llvm::initializeInstCombine(Registry);
+ llvm::initializeInstrumentation(Registry);
+ llvm::initializeTarget(Registry);
+ llvm::initializeCodeGenPreparePass(Registry);
+ llvm::initializeAtomicExpandPass(Registry);
+ llvm::initializeRewriteSymbolsPass(Registry);
is_initialized = true;
diff --git a/tools/bcc/Main.cpp b/tools/bcc/Main.cpp
index 7668b09..f1c15cc 100644
--- a/tools/bcc/Main.cpp
+++ b/tools/bcc/Main.cpp
@@ -25,6 +25,7 @@
#include <llvm/Config/config.h>
#include <llvm/Support/CommandLine.h>
#include <llvm/Support/FileSystem.h>
+#include <llvm/Support/ManagedStatic.h>
#include <llvm/Support/MemoryBuffer.h>
#include <llvm/Support/Path.h>
#include <llvm/Support/PluginLoader.h>
@@ -198,10 +199,12 @@
}
int main(int argc, char **argv) {
+
+ llvm::llvm_shutdown_obj Y;
+ init::Initialize();
llvm::cl::SetVersionPrinter(BCCVersionPrinter);
llvm::cl::ParseCommandLineOptions(argc, argv);
std::string commandLine = bcc::getCommandLine(argc, argv);
- init::Initialize();
BCCContext context;
RSCompilerDriver RSCD;