From 0e7a54672cf346ee7c4aae10822c74f7c74f3fed Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Thu, 2 Jul 2009 00:31:14 +0000 Subject: [PATCH] Maintain the old LTO API, by using the global context. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74678 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm-c/lto.h | 9 +++------ tools/lto/LTOCodeGenerator.cpp | 5 +++-- tools/lto/LTOCodeGenerator.h | 2 +- tools/lto/LTOModule.cpp | 11 ++++------- tools/lto/LTOModule.h | 4 ---- tools/lto/lto.cpp | 15 ++++++--------- 6 files changed, 17 insertions(+), 29 deletions(-) diff --git a/include/llvm-c/lto.h b/include/llvm-c/lto.h index 49b8bfbde96..1ae8c670dd2 100644 --- a/include/llvm-c/lto.h +++ b/include/llvm-c/lto.h @@ -59,8 +59,6 @@ typedef struct LTOModule* lto_module_t; /** opaque reference to a code generator */ typedef struct LTOCodeGenerator* lto_code_gen_t; -typedef struct LTOContext* lto_context_t; - #ifdef __cplusplus extern "C" { #endif @@ -113,7 +111,7 @@ lto_module_is_object_file_in_memory_for_target(const void* mem, size_t length, * Returns NULL on error (check lto_get_error_message() for details). */ extern lto_module_t -lto_module_create(const char* path, LLVMContextRef Ctxt); +lto_module_create(const char* path); /** @@ -121,8 +119,7 @@ lto_module_create(const char* path, LLVMContextRef Ctxt); * Returns NULL on error (check lto_get_error_message() for details). */ extern lto_module_t -lto_module_create_from_memory(const void* mem, size_t length, - LLVMContextRef Ctxt); +lto_module_create_from_memory(const void* mem, size_t length); /** @@ -166,7 +163,7 @@ lto_module_get_symbol_attribute(lto_module_t mod, unsigned int index); * Returns NULL on error (check lto_get_error_message() for details). */ extern lto_code_gen_t -lto_codegen_create(LLVMContextRef Ctxt); +lto_codegen_create(void); /** diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp index 6f5e6bc7713..1a21132ef2f 100644 --- a/tools/lto/LTOCodeGenerator.cpp +++ b/tools/lto/LTOCodeGenerator.cpp @@ -19,6 +19,7 @@ #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" #include "llvm/Linker.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -69,8 +70,8 @@ const char* LTOCodeGenerator::getVersionString() } -LTOCodeGenerator::LTOCodeGenerator(LLVMContext& Context) - : _context(Context), +LTOCodeGenerator::LTOCodeGenerator() + : _context(getGlobalContext()), _linker("LinkTimeOptimizer", "ld-temp.o", _context), _target(NULL), _emitDwarfDebugInfo(false), _scopeRestrictionsDone(false), _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC), diff --git a/tools/lto/LTOCodeGenerator.h b/tools/lto/LTOCodeGenerator.h index 7b0c284d4ef..5548050fda0 100644 --- a/tools/lto/LTOCodeGenerator.h +++ b/tools/lto/LTOCodeGenerator.h @@ -31,7 +31,7 @@ class LTOCodeGenerator { public: static const char* getVersionString(); - LTOCodeGenerator(llvm::LLVMContext& Context); + LTOCodeGenerator(); ~LTOCodeGenerator(); bool addModule(class LTOModule*, std::string& errMsg); diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp index 157928c8944..9c8baef7d6a 100644 --- a/tools/lto/LTOModule.cpp +++ b/tools/lto/LTOModule.cpp @@ -69,7 +69,7 @@ bool LTOModule::isBitcodeFileForTarget(const char* path, bool LTOModule::isTargetMatch(MemoryBuffer* buffer, const char* triplePrefix) { OwningPtr mp(getBitcodeModuleProvider(buffer, - *new LLVMContext())); + getGlobalContext())); // on success, mp owns buffer and both are deleted at end of this method if ( !mp ) { delete buffer; @@ -87,13 +87,12 @@ LTOModule::LTOModule(Module* m, TargetMachine* t) } LTOModule* LTOModule::makeLTOModule(const char* path, - LLVMContext& Context, std::string& errMsg) { OwningPtr buffer(MemoryBuffer::getFile(path, &errMsg)); if ( !buffer ) return NULL; - return makeLTOModule(buffer.get(), Context, errMsg); + return makeLTOModule(buffer.get(), errMsg); } /// makeBuffer - create a MemoryBuffer from a memory range. @@ -113,13 +112,12 @@ MemoryBuffer* LTOModule::makeBuffer(const void* mem, size_t length) LTOModule* LTOModule::makeLTOModule(const void* mem, size_t length, - LLVMContext& Context, std::string& errMsg) { OwningPtr buffer(makeBuffer(mem, length)); if ( !buffer ) return NULL; - return makeLTOModule(buffer.get(), Context, errMsg); + return makeLTOModule(buffer.get(), errMsg); } /// getFeatureString - Return a string listing the features associated with the @@ -142,11 +140,10 @@ std::string getFeatureString(const char *TargetTriple) { } LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer, - LLVMContext& Context, std::string& errMsg) { // parse bitcode buffer - OwningPtr m(ParseBitcodeFile(buffer, Context, &errMsg)); + OwningPtr m(ParseBitcodeFile(buffer, getGlobalContext(), &errMsg)); if ( !m ) return NULL; // find machine architecture for this module diff --git a/tools/lto/LTOModule.h b/tools/lto/LTOModule.h index 367ad1026f0..8fd3915e28c 100644 --- a/tools/lto/LTOModule.h +++ b/tools/lto/LTOModule.h @@ -32,7 +32,6 @@ namespace llvm { class GlobalValue; class Value; class Function; - class LLVMContext; } @@ -52,10 +51,8 @@ public: const char* triplePrefix); static LTOModule* makeLTOModule(const char* path, - llvm::LLVMContext& Context, std::string& errMsg); static LTOModule* makeLTOModule(const void* mem, size_t length, - llvm::LLVMContext& Context, std::string& errMsg); const char* getTargetTriple(); @@ -91,7 +88,6 @@ private: const char* triplePrefix); static LTOModule* makeLTOModule(llvm::MemoryBuffer* buffer, - llvm::LLVMContext& Context, std::string& errMsg); static llvm::MemoryBuffer* makeBuffer(const void* mem, size_t length); diff --git a/tools/lto/lto.cpp b/tools/lto/lto.cpp index 02034bbf846..648279834fa 100644 --- a/tools/lto/lto.cpp +++ b/tools/lto/lto.cpp @@ -86,10 +86,9 @@ bool lto_module_is_object_file_in_memory_for_target(const void* mem, // loads an object file from disk // returns NULL on error (check lto_get_error_message() for details) // -lto_module_t lto_module_create(const char* path, LLVMContextRef Ctxt) +lto_module_t lto_module_create(const char* path) { - return LTOModule::makeLTOModule(path, *llvm::unwrap(Ctxt), - sLastErrorString); + return LTOModule::makeLTOModule(path, sLastErrorString); } @@ -97,11 +96,9 @@ lto_module_t lto_module_create(const char* path, LLVMContextRef Ctxt) // loads an object file from memory // returns NULL on error (check lto_get_error_message() for details) // -lto_module_t lto_module_create_from_memory(const void* mem, size_t length, - LLVMContextRef Ctxt) +lto_module_t lto_module_create_from_memory(const void* mem, size_t length) { - return LTOModule::makeLTOModule(mem, length, *llvm::unwrap(Ctxt), - sLastErrorString); + return LTOModule::makeLTOModule(mem, length, sLastErrorString); } @@ -158,9 +155,9 @@ lto_symbol_attributes lto_module_get_symbol_attribute(lto_module_t mod, // instantiates a code generator // returns NULL if there is an error // -lto_code_gen_t lto_codegen_create(LLVMContextRef ContextRef) +lto_code_gen_t lto_codegen_create(void) { - return new LTOCodeGenerator(*llvm::unwrap(ContextRef)); + return new LTOCodeGenerator(); } -- 2.34.1