/** opaque reference to a code generator */
typedef struct LTOCodeGenerator* lto_code_gen_t;
-typedef struct LTOContext* lto_context_t;
-
#ifdef __cplusplus
extern "C" {
#endif
* 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);
/**
* 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);
/**
* 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);
/**
#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"
}
-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),
public:
static const char* getVersionString();
- LTOCodeGenerator(llvm::LLVMContext& Context);
+ LTOCodeGenerator();
~LTOCodeGenerator();
bool addModule(class LTOModule*, std::string& errMsg);
bool LTOModule::isTargetMatch(MemoryBuffer* buffer, const char* triplePrefix)
{
OwningPtr<ModuleProvider> mp(getBitcodeModuleProvider(buffer,
- *new LLVMContext()));
+ getGlobalContext()));
// on success, mp owns buffer and both are deleted at end of this method
if ( !mp ) {
delete buffer;
}
LTOModule* LTOModule::makeLTOModule(const char* path,
- LLVMContext& Context,
std::string& errMsg)
{
OwningPtr<MemoryBuffer> 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.
LTOModule* LTOModule::makeLTOModule(const void* mem, size_t length,
- LLVMContext& Context,
std::string& errMsg)
{
OwningPtr<MemoryBuffer> 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
}
LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer,
- LLVMContext& Context,
std::string& errMsg)
{
// parse bitcode buffer
- OwningPtr<Module> m(ParseBitcodeFile(buffer, Context, &errMsg));
+ OwningPtr<Module> m(ParseBitcodeFile(buffer, getGlobalContext(), &errMsg));
if ( !m )
return NULL;
// find machine architecture for this module
class GlobalValue;
class Value;
class Function;
- class LLVMContext;
}
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();
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);
// 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);
}
// 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);
}
// 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();
}