Hold the LLVMContext by reference rather than by pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74640 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/examples/BrainF/BrainF.cpp b/examples/BrainF/BrainF.cpp
index 0caff13..fa6d667 100644
--- a/examples/BrainF/BrainF.cpp
+++ b/examples/BrainF/BrainF.cpp
@@ -37,7 +37,7 @@
const char *BrainF::testreg = "test";
Module *BrainF::parse(std::istream *in1, int mem, CompileFlags cf,
- LLVMContext* Context) {
+ const LLVMContext& Context) {
in = in1;
memtotal = mem;
comflag = cf;
@@ -48,7 +48,7 @@
return module;
}
-void BrainF::header(LLVMContext* C) {
+void BrainF::header(const LLVMContext& C) {
module = new Module("BrainF", C);
//Function prototypes
diff --git a/examples/BrainF/BrainF.h b/examples/BrainF/BrainF.h
index d0fb1b1..d21d3bb 100644
--- a/examples/BrainF/BrainF.h
+++ b/examples/BrainF/BrainF.h
@@ -39,7 +39,8 @@
/// containing the resulting code.
/// On error, it calls abort.
/// The caller must delete the returned module.
- Module *parse(std::istream *in1, int mem, CompileFlags cf, LLVMContext* C);
+ Module *parse(std::istream *in1, int mem, CompileFlags cf,
+ const LLVMContext& C);
protected:
/// The different symbols in the BrainF language
@@ -65,7 +66,7 @@
static const char *testreg;
/// Put the brainf function preamble and other fixed pieces of code
- void header(LLVMContext* C);
+ void header(const LLVMContext& C);
/// The main loop for parsing. It calls itself recursively
/// to handle the depth of nesting of "[]".
diff --git a/examples/BrainF/BrainFDriver.cpp b/examples/BrainF/BrainFDriver.cpp
index 0868d73..4eaa494 100644
--- a/examples/BrainF/BrainFDriver.cpp
+++ b/examples/BrainF/BrainFDriver.cpp
@@ -126,7 +126,7 @@
//Read the BrainF program
BrainF bf;
- Module *mod = bf.parse(in, 65536, cf, &Context); //64 KiB
+ Module *mod = bf.parse(in, 65536, cf, Context); //64 KiB
if (in != &std::cin) {delete in;}
addMainFunction(mod);
diff --git a/examples/Fibonacci/fibonacci.cpp b/examples/Fibonacci/fibonacci.cpp
index 58c0dcd..c3431fc 100644
--- a/examples/Fibonacci/fibonacci.cpp
+++ b/examples/Fibonacci/fibonacci.cpp
@@ -94,7 +94,7 @@
LLVMContext Context;
// Create some module to put our function into it.
- Module *M = new Module("test", &Context);
+ Module *M = new Module("test", Context);
// We are about to create the "fib" function:
Function *FibF = CreateFibFunction(M);
diff --git a/examples/HowToUseJIT/HowToUseJIT.cpp b/examples/HowToUseJIT/HowToUseJIT.cpp
index f11c3e2..6734547 100644
--- a/examples/HowToUseJIT/HowToUseJIT.cpp
+++ b/examples/HowToUseJIT/HowToUseJIT.cpp
@@ -55,7 +55,7 @@
LLVMContext Context;
// Create some module to put our function into it.
- Module *M = new Module("test", &Context);
+ Module *M = new Module("test", Context);
// Create the add1 function entry and insert this entry into module M. The
// function will have a return type of "int" and take an argument of "int".
diff --git a/examples/Kaleidoscope/toy.cpp b/examples/Kaleidoscope/toy.cpp
index 9ca6035..612cfa5 100644
--- a/examples/Kaleidoscope/toy.cpp
+++ b/examples/Kaleidoscope/toy.cpp
@@ -1099,7 +1099,7 @@
getNextToken();
// Make the module, which holds all the code.
- TheModule = new Module("my cool jit", &Context);
+ TheModule = new Module("my cool jit", Context);
// Create the JIT.
TheExecutionEngine = ExecutionEngine::create(TheModule);
diff --git a/examples/ModuleMaker/ModuleMaker.cpp b/examples/ModuleMaker/ModuleMaker.cpp
index 322835e..59a86d0 100644
--- a/examples/ModuleMaker/ModuleMaker.cpp
+++ b/examples/ModuleMaker/ModuleMaker.cpp
@@ -27,7 +27,7 @@
// Create the "module" or "program" or "translation unit" to hold the
// function
- Module *M = new Module("test", &Context);
+ Module *M = new Module("test", Context);
// Create the main function: first create the type 'int ()'
FunctionType *FT = FunctionType::get(Type::Int32Ty, /*not vararg*/false);
diff --git a/examples/ParallelJIT/ParallelJIT.cpp b/examples/ParallelJIT/ParallelJIT.cpp
index 858cd52..eadd0f5 100644
--- a/examples/ParallelJIT/ParallelJIT.cpp
+++ b/examples/ParallelJIT/ParallelJIT.cpp
@@ -236,7 +236,7 @@
LLVMContext Context;
// Create some module to put our function into it.
- Module *M = new Module("test", &Context);
+ Module *M = new Module("test", Context);
Function* add1F = createAdd1( M );
Function* fibF = CreateFibFunction( M );
diff --git a/include/llvm-c/lto.h b/include/llvm-c/lto.h
index 5d92fc5..d9a2e5c 100644
--- a/include/llvm-c/lto.h
+++ b/include/llvm-c/lto.h
@@ -58,6 +58,7 @@
/** opaque reference to a code generator */
typedef struct LTOCodeGenerator* lto_code_gen_t;
+typedef struct LTOContext* lto_context_t;
#ifdef __cplusplus
extern "C" {
@@ -76,7 +77,6 @@
extern const char*
lto_get_error_message(void);
-
/**
* Checks if a file is a loadable object file.
*/
diff --git a/include/llvm/Assembly/Parser.h b/include/llvm/Assembly/Parser.h
index 2a5bac7..616750a 100644
--- a/include/llvm/Assembly/Parser.h
+++ b/include/llvm/Assembly/Parser.h
@@ -32,7 +32,7 @@
Module *ParseAssemblyFile(
const std::string &Filename, ///< The name of the file to parse
ParseError &Error, ///< If not null, an object to return errors in.
- LLVMContext* Context ///< Context in which to allocate globals info.
+ const LLVMContext& Context ///< Context in which to allocate globals info.
);
/// The function is a secondary interface to the LLVM Assembly Parser. It parses
@@ -45,7 +45,7 @@
const char *AsmString, ///< The string containing assembly
Module *M, ///< A module to add the assembly too.
ParseError &Error, ///< If not null, an object to return errors in.
- LLVMContext* Context
+ const LLVMContext& Context
);
//===------------------------------------------------------------------------===
diff --git a/include/llvm/Bitcode/Archive.h b/include/llvm/Bitcode/Archive.h
index c188df8..85b918e 100644
--- a/include/llvm/Bitcode/Archive.h
+++ b/include/llvm/Bitcode/Archive.h
@@ -280,7 +280,7 @@
/// @brief Create an empty Archive.
static Archive* CreateEmpty(
const sys::Path& Filename,///< Name of the archive to (eventually) create.
- LLVMContext* C ///< Context to use for global information
+ const LLVMContext& C ///< Context to use for global information
);
/// Open an existing archive and load its contents in preparation for
@@ -291,7 +291,7 @@
/// @brief Open and load an archive file
static Archive* OpenAndLoad(
const sys::Path& filePath, ///< The file path to open and load
- LLVMContext* C, ///< The context to use for global information
+ const LLVMContext& C, ///< The context to use for global information
std::string* ErrorMessage ///< An optional error string
);
@@ -313,7 +313,7 @@
/// @brief Open an existing archive and load its symbols.
static Archive* OpenAndLoadSymbols(
const sys::Path& Filename, ///< Name of the archive file to open
- LLVMContext* C, ///< The context to use for global info
+ const LLVMContext& C, ///< The context to use for global info
std::string* ErrorMessage=0 ///< An optional error string
);
@@ -453,7 +453,7 @@
protected:
/// @brief Construct an Archive for \p filename and optionally map it
/// into memory.
- explicit Archive(const sys::Path& filename, LLVMContext* C);
+ explicit Archive(const sys::Path& filename, const LLVMContext& C);
/// @param data The symbol table data to be parsed
/// @param len The length of the symbol table data
@@ -534,7 +534,7 @@
unsigned firstFileOffset; ///< Offset to first normal file.
ModuleMap modules; ///< The modules loaded via symbol lookup.
ArchiveMember* foreignST; ///< This holds the foreign symbol table.
- LLVMContext* Context; ///< This holds global data.
+ const LLVMContext& Context; ///< This holds global data.
/// @}
/// @name Hidden
/// @{
diff --git a/include/llvm/Bitcode/ReaderWriter.h b/include/llvm/Bitcode/ReaderWriter.h
index a781187..3cde47b 100644
--- a/include/llvm/Bitcode/ReaderWriter.h
+++ b/include/llvm/Bitcode/ReaderWriter.h
@@ -32,13 +32,13 @@
/// error, this returns null, *does not* take ownership of Buffer, and fills
/// in *ErrMsg with an error description if ErrMsg is non-null.
ModuleProvider *getBitcodeModuleProvider(MemoryBuffer *Buffer,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::string *ErrMsg = 0);
/// ParseBitcodeFile - Read the specified bitcode file, returning the module.
/// If an error occurs, this returns null and fills in *ErrMsg if it is
/// non-null. This method *never* takes ownership of Buffer.
- Module *ParseBitcodeFile(MemoryBuffer *Buffer, LLVMContext* Context,
+ Module *ParseBitcodeFile(MemoryBuffer *Buffer, const LLVMContext& Context,
std::string *ErrMsg = 0);
/// WriteBitcodeToFile - Write the specified module to the specified output
diff --git a/include/llvm/Debugger/Debugger.h b/include/llvm/Debugger/Debugger.h
index ed04ed5..d003539 100644
--- a/include/llvm/Debugger/Debugger.h
+++ b/include/llvm/Debugger/Debugger.h
@@ -96,7 +96,7 @@
/// the PATH for the specified program, loading it when found. If the
/// specified program cannot be found, an exception is thrown to indicate
/// the error.
- void loadProgram(const std::string &Path, LLVMContext* Context);
+ void loadProgram(const std::string &Path, const LLVMContext& Context);
/// unloadProgram - If a program is running, kill it, then unload all traces
/// of the current program. If no program is loaded, this method silently
diff --git a/include/llvm/LLVMContext.h b/include/llvm/LLVMContext.h
index 1d95502..f0c2200 100644
--- a/include/llvm/LLVMContext.h
+++ b/include/llvm/LLVMContext.h
@@ -198,7 +198,7 @@
};
/// FOR BACKWARDS COMPATIBILITY - Returns a global context.
-LLVMContext* getGlobalContext();
+extern const LLVMContext& getGlobalContext();
}
diff --git a/include/llvm/LinkAllVMCore.h b/include/llvm/LinkAllVMCore.h
index 3c4b9c4..e5a5197 100644
--- a/include/llvm/LinkAllVMCore.h
+++ b/include/llvm/LinkAllVMCore.h
@@ -16,6 +16,7 @@
#ifndef LLVM_LINKALLVMCORE_H
#define LLVM_LINKALLVMCORE_H
+#include "llvm/LLVMContext.h"
#include "llvm/Module.h"
#include "llvm/Instructions.h"
#include "llvm/IntrinsicInst.h"
@@ -44,7 +45,7 @@
// to know that getenv() never returns -1, this will do the job.
if (std::getenv("bar") != (char*) -1)
return;
- llvm::Module* M = new llvm::Module("", 0);
+ llvm::Module* M = new llvm::Module("", llvm::getGlobalContext());
(void)new llvm::UnreachableInst();
(void) llvm::createVerifierPass();
(void) new llvm::Mangler(*M,"");
diff --git a/include/llvm/Linker.h b/include/llvm/Linker.h
index 8389dc7..2ab0ed4 100644
--- a/include/llvm/Linker.h
+++ b/include/llvm/Linker.h
@@ -67,7 +67,7 @@
Linker(
const std::string& progname, ///< name of tool running linker
const std::string& modulename, ///< name of linker's end-result module
- LLVMContext* C, ///< Context for global info
+ const LLVMContext& C, ///< Context for global info
unsigned Flags = 0 ///< ControlFlags (one or more |'d together)
);
@@ -285,7 +285,7 @@
/// @name Data
/// @{
private:
- LLVMContext* Context; ///< The context for global information
+ const LLVMContext& Context; ///< The context for global information
Module* Composite; ///< The composite module linked together
std::vector<sys::Path> LibPaths; ///< The library search paths
unsigned Flags; ///< Flags to control optional behavior.
diff --git a/include/llvm/Module.h b/include/llvm/Module.h
index 8370ffb..8efa8e0 100644
--- a/include/llvm/Module.h
+++ b/include/llvm/Module.h
@@ -110,7 +110,7 @@
/// @name Member Variables
/// @{
private:
- LLVMContext* Context; ///< The LLVMContext from which types and
+ const LLVMContext& Context; ///< The LLVMContext from which types and
///< constants are allocated.
GlobalListType GlobalList; ///< The Global Variables in the module
FunctionListType FunctionList; ///< The Functions in the module
@@ -131,7 +131,7 @@
public:
/// The Module constructor. Note that there is no default constructor. You
/// must provide a name for the module upon construction.
- explicit Module(const std::string &ModuleID, LLVMContext* C);
+ explicit Module(const std::string &ModuleID, const LLVMContext& C);
/// The module destructor. This will dropAllReferences.
~Module();
@@ -162,7 +162,7 @@
/// Get the global data context.
/// @returns LLVMContext - a container for LLVM's global information
- LLVMContext* getContext() const { return Context; }
+ const LLVMContext& getContext() const { return Context; }
/// Get any module-scope inline assembly blocks.
/// @returns a string containing the module-scope inline assembly blocks.
diff --git a/lib/Archive/Archive.cpp b/lib/Archive/Archive.cpp
index e6903b6..1a8b25a 100644
--- a/lib/Archive/Archive.cpp
+++ b/lib/Archive/Archive.cpp
@@ -138,7 +138,7 @@
// Archive constructor - this is the only constructor that gets used for the
// Archive class. Everything else (default,copy) is deprecated. This just
// initializes and maps the file into memory, if requested.
-Archive::Archive(const sys::Path& filename, LLVMContext* C)
+Archive::Archive(const sys::Path& filename, const LLVMContext& C)
: archPath(filename), members(), mapfile(0), base(0), symTab(), strtab(),
symTabSize(0), firstFileOffset(0), modules(), foreignST(0), Context(C) {
}
@@ -208,7 +208,7 @@
// Get just the externally visible defined symbols from the bitcode
bool llvm::GetBitcodeSymbols(const sys::Path& fName,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::vector<std::string>& symbols,
std::string* ErrMsg) {
std::auto_ptr<MemoryBuffer> Buffer(
@@ -240,7 +240,7 @@
ModuleProvider*
llvm::GetBitcodeSymbols(const unsigned char *BufPtr, unsigned Length,
const std::string& ModuleID,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::vector<std::string>& symbols,
std::string* ErrMsg) {
// Get the module provider
diff --git a/lib/Archive/ArchiveInternals.h b/lib/Archive/ArchiveInternals.h
index cdd8e35..15f01b3 100644
--- a/lib/Archive/ArchiveInternals.h
+++ b/lib/Archive/ArchiveInternals.h
@@ -73,13 +73,13 @@
// Get just the externally visible defined symbols from the bitcode
bool GetBitcodeSymbols(const sys::Path& fName,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::vector<std::string>& symbols,
std::string* ErrMsg);
ModuleProvider* GetBitcodeSymbols(const unsigned char*Buffer,unsigned Length,
const std::string& ModuleID,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::vector<std::string>& symbols,
std::string* ErrMsg);
}
diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp
index 4e3e281..2393554 100644
--- a/lib/Archive/ArchiveReader.cpp
+++ b/lib/Archive/ArchiveReader.cpp
@@ -327,7 +327,7 @@
// Open and completely load the archive file.
Archive*
-Archive::OpenAndLoad(const sys::Path& file, LLVMContext* C,
+Archive::OpenAndLoad(const sys::Path& file, const LLVMContext& C,
std::string* ErrorMessage) {
std::auto_ptr<Archive> result ( new Archive(file, C));
if (result->mapToMemory(ErrorMessage))
@@ -441,7 +441,8 @@
}
// Open the archive and load just the symbol tables
-Archive* Archive::OpenAndLoadSymbols(const sys::Path& file, LLVMContext* C,
+Archive* Archive::OpenAndLoadSymbols(const sys::Path& file,
+ const LLVMContext& C,
std::string* ErrorMessage) {
std::auto_ptr<Archive> result ( new Archive(file, C) );
if (result->mapToMemory(ErrorMessage))
diff --git a/lib/Archive/ArchiveWriter.cpp b/lib/Archive/ArchiveWriter.cpp
index 641e332..e840354 100644
--- a/lib/Archive/ArchiveWriter.cpp
+++ b/lib/Archive/ArchiveWriter.cpp
@@ -64,7 +64,7 @@
}
// Create an empty archive.
-Archive* Archive::CreateEmpty(const sys::Path& FilePath, LLVMContext* C) {
+Archive* Archive::CreateEmpty(const sys::Path& FilePath, const LLVMContext& C) {
Archive* result = new Archive(FilePath, C);
return result;
}
diff --git a/lib/AsmParser/Parser.cpp b/lib/AsmParser/Parser.cpp
index 7759c70..daf23fe 100644
--- a/lib/AsmParser/Parser.cpp
+++ b/lib/AsmParser/Parser.cpp
@@ -21,7 +21,7 @@
using namespace llvm;
Module *llvm::ParseAssemblyFile(const std::string &Filename, ParseError &Err,
- LLVMContext* Context) {
+ const LLVMContext& Context) {
Err.setFilename(Filename);
std::string ErrorStr;
@@ -39,7 +39,7 @@
}
Module *llvm::ParseAssemblyString(const char *AsmString, Module *M,
- ParseError &Err, LLVMContext* Context) {
+ ParseError &Err, const LLVMContext& Context) {
Err.setFilename("<string>");
OwningPtr<MemoryBuffer>
diff --git a/lib/Bitcode/Reader/BitReader.cpp b/lib/Bitcode/Reader/BitReader.cpp
index 2baf71b..273975a 100644
--- a/lib/Bitcode/Reader/BitReader.cpp
+++ b/lib/Bitcode/Reader/BitReader.cpp
@@ -22,7 +22,7 @@
LLVMModuleRef *OutModule, char **OutMessage) {
std::string Message;
- *OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), unwrap(ContextRef),
+ *OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), *unwrap(ContextRef),
&Message));
if (!*OutModule) {
if (OutMessage)
@@ -42,7 +42,7 @@
char **OutMessage) {
std::string Message;
- *OutMP = wrap(getBitcodeModuleProvider(unwrap(MemBuf), unwrap(ContextRef),
+ *OutMP = wrap(getBitcodeModuleProvider(unwrap(MemBuf), *unwrap(ContextRef),
&Message));
if (!*OutMP) {
if (OutMessage)
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp
index 7cf0324..ce33de0 100644
--- a/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -2090,7 +2090,7 @@
/// getBitcodeModuleProvider - lazy function-at-a-time loading from a file.
///
ModuleProvider *llvm::getBitcodeModuleProvider(MemoryBuffer *Buffer,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::string *ErrMsg) {
BitcodeReader *R = new BitcodeReader(Buffer, Context);
if (R->ParseBitcode()) {
@@ -2107,7 +2107,7 @@
/// ParseBitcodeFile - Read the specified bitcode file, returning the module.
/// If an error occurs, return null and fill in *ErrMsg if non-null.
-Module *llvm::ParseBitcodeFile(MemoryBuffer *Buffer, LLVMContext* Context,
+Module *llvm::ParseBitcodeFile(MemoryBuffer *Buffer, const LLVMContext& Context,
std::string *ErrMsg){
BitcodeReader *R;
R = static_cast<BitcodeReader*>(getBitcodeModuleProvider(Buffer, Context,
diff --git a/lib/Bitcode/Reader/BitcodeReader.h b/lib/Bitcode/Reader/BitcodeReader.h
index 498a34a..dd12375 100644
--- a/lib/Bitcode/Reader/BitcodeReader.h
+++ b/lib/Bitcode/Reader/BitcodeReader.h
@@ -86,7 +86,7 @@
};
class BitcodeReader : public ModuleProvider {
- LLVMContext* Context;
+ const LLVMContext& Context;
MemoryBuffer *Buffer;
BitstreamReader StreamFile;
BitstreamCursor Stream;
@@ -125,7 +125,7 @@
/// stream) and what linkage the original function had.
DenseMap<Function*, std::pair<uint64_t, unsigned> > DeferredFunctionInfo;
public:
- explicit BitcodeReader(MemoryBuffer *buffer, LLVMContext* C)
+ explicit BitcodeReader(MemoryBuffer *buffer, const LLVMContext& C)
: Context(C), Buffer(buffer), ErrorString(0) {
HasReversedFunctionsWithBodies = false;
}
diff --git a/lib/Debugger/Debugger.cpp b/lib/Debugger/Debugger.cpp
index dbfbbed..61d8358 100644
--- a/lib/Debugger/Debugger.cpp
+++ b/lib/Debugger/Debugger.cpp
@@ -46,7 +46,8 @@
}
static Module *
-getMaterializedModuleProvider(const std::string &Filename, LLVMContext* C) {
+getMaterializedModuleProvider(const std::string &Filename,
+ const LLVMContext& C) {
std::auto_ptr<MemoryBuffer> Buffer;
Buffer.reset(MemoryBuffer::getFileOrSTDIN(Filename.c_str()));
if (Buffer.get())
@@ -58,7 +59,7 @@
/// the PATH for the specified program, loading it when found. If the
/// specified program cannot be found, an exception is thrown to indicate the
/// error.
-void Debugger::loadProgram(const std::string &Filename, LLVMContext* C) {
+void Debugger::loadProgram(const std::string &Filename, const LLVMContext& C) {
if ((Program = getMaterializedModuleProvider(Filename, C)) ||
(Program = getMaterializedModuleProvider(Filename+".bc", C)))
return; // Successfully loaded the program.
diff --git a/lib/Linker/Linker.cpp b/lib/Linker/Linker.cpp
index d0d69d0..42d4e72 100644
--- a/lib/Linker/Linker.cpp
+++ b/lib/Linker/Linker.cpp
@@ -20,7 +20,7 @@
using namespace llvm;
Linker::Linker(const std::string& progname, const std::string& modname,
- LLVMContext* C, unsigned flags):
+ const LLVMContext& C, unsigned flags):
Context(C),
Composite(new Module(modname, C)),
LibPaths(),
diff --git a/lib/VMCore/Core.cpp b/lib/VMCore/Core.cpp
index 1c0a8f7..9f92e6f 100644
--- a/lib/VMCore/Core.cpp
+++ b/lib/VMCore/Core.cpp
@@ -53,7 +53,7 @@
/*===-- Operations on modules ---------------------------------------------===*/
LLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID, LLVMContextRef C) {
- return wrap(new Module(ModuleID, unwrap(C)));
+ return wrap(new Module(ModuleID, *unwrap(C)));
}
void LLVMDisposeModule(LLVMModuleRef M) {
diff --git a/lib/VMCore/LLVMContext.cpp b/lib/VMCore/LLVMContext.cpp
index 09c7fcc..d29b758 100644
--- a/lib/VMCore/LLVMContext.cpp
+++ b/lib/VMCore/LLVMContext.cpp
@@ -22,8 +22,8 @@
static ManagedStatic<LLVMContext> GlobalContext;
-LLVMContext* getGlobalContext() {
- return &*GlobalContext;
+const LLVMContext& llvm::getGlobalContext() {
+ return *GlobalContext;
}
LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl()) { }
diff --git a/lib/VMCore/Module.cpp b/lib/VMCore/Module.cpp
index 96a25a5..5ccd7cc 100644
--- a/lib/VMCore/Module.cpp
+++ b/lib/VMCore/Module.cpp
@@ -55,7 +55,7 @@
// Primitive Module methods.
//
-Module::Module(const std::string &MID, LLVMContext* C)
+Module::Module(const std::string &MID, const LLVMContext& C)
: Context(C), ModuleID(MID), DataLayout("") {
ValSymTab = new ValueSymbolTable();
TypeSymTab = new TypeSymbolTable();
diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp
index 340522a..93b09fb 100644
--- a/tools/bugpoint/BugDriver.cpp
+++ b/tools/bugpoint/BugDriver.cpp
@@ -64,7 +64,8 @@
}
BugDriver::BugDriver(const char *toolname, bool as_child, bool find_bugs,
- unsigned timeout, unsigned memlimit, LLVMContext* ctxt)
+ unsigned timeout, unsigned memlimit,
+ const LLVMContext& ctxt)
: Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
Program(0), Interpreter(0), SafeInterpreter(0), gcc(0),
run_as_child(as_child), run_find_bugs(find_bugs), Timeout(timeout),
@@ -74,7 +75,8 @@
/// ParseInputFile - Given a bitcode or assembly input filename, parse and
/// return it, or return null if not possible.
///
-Module *llvm::ParseInputFile(const std::string &Filename, LLVMContext* Ctxt) {
+Module *llvm::ParseInputFile(const std::string &Filename,
+ const LLVMContext& Ctxt) {
std::auto_ptr<MemoryBuffer> Buffer(MemoryBuffer::getFileOrSTDIN(Filename));
Module *Result = 0;
if (Buffer.get())
diff --git a/tools/bugpoint/BugDriver.h b/tools/bugpoint/BugDriver.h
index 4c81cc2..34267d5 100644
--- a/tools/bugpoint/BugDriver.h
+++ b/tools/bugpoint/BugDriver.h
@@ -43,7 +43,7 @@
extern bool BugpointIsInterrupted;
class BugDriver {
- LLVMContext* Context;
+ const LLVMContext& Context;
const std::string ToolName; // Name of bugpoint
std::string ReferenceOutputFile; // Name of `good' output file
Module *Program; // The raw program, linked together
@@ -62,11 +62,11 @@
public:
BugDriver(const char *toolname, bool as_child, bool find_bugs,
- unsigned timeout, unsigned memlimit, LLVMContext* ctxt);
+ unsigned timeout, unsigned memlimit, const LLVMContext& ctxt);
const std::string &getToolName() const { return ToolName; }
- LLVMContext* getContext() { return Context; }
+ const LLVMContext& getContext() { return Context; }
// Set up methods... these methods are used to copy information about the
// command line arguments into instance variables of BugDriver.
@@ -294,7 +294,8 @@
/// ParseInputFile - Given a bitcode or assembly input filename, parse and
/// return it, or return null if not possible.
///
-Module *ParseInputFile(const std::string &InputFilename, LLVMContext* ctxt);
+Module *ParseInputFile(const std::string &InputFilename,
+ const LLVMContext& ctxt);
/// getPassesString - Turn a list of passes into a string which indicates the
diff --git a/tools/bugpoint/bugpoint.cpp b/tools/bugpoint/bugpoint.cpp
index 57007e0..3365b22 100644
--- a/tools/bugpoint/bugpoint.cpp
+++ b/tools/bugpoint/bugpoint.cpp
@@ -76,7 +76,7 @@
sys::SetInterruptFunction(BugpointInterruptFunction);
LLVMContext Context;
- BugDriver D(argv[0], AsChild, FindBugs, TimeoutValue, MemoryLimit, &Context);
+ BugDriver D(argv[0], AsChild, FindBugs, TimeoutValue, MemoryLimit, Context);
if (D.addSources(InputFilenames)) return 1;
D.addPasses(PassList.begin(), PassList.end());
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index d0d88c5..ae03c1e 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -227,7 +227,7 @@
std::auto_ptr<MemoryBuffer> Buffer(
MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage));
if (Buffer.get())
- M.reset(ParseBitcodeFile(Buffer.get(), &Context, &ErrorMessage));
+ M.reset(ParseBitcodeFile(Buffer.get(), Context, &ErrorMessage));
if (M.get() == 0) {
std::cerr << argv[0] << ": bitcode didn't read correctly.\n";
std::cerr << "Reason: " << ErrorMessage << "\n";
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp
index 10b8638..e7c449e 100644
--- a/tools/lli/lli.cpp
+++ b/tools/lli/lli.cpp
@@ -107,7 +107,7 @@
std::string ErrorMsg;
ModuleProvider *MP = NULL;
if (MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(InputFile,&ErrorMsg)){
- MP = getBitcodeModuleProvider(Buffer, &Context, &ErrorMsg);
+ MP = getBitcodeModuleProvider(Buffer, Context, &ErrorMsg);
if (!MP) delete Buffer;
}
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index 960f8e3..fe58db1 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -719,11 +719,11 @@
// Produce a warning if we should and we're creating the archive
if (!Create)
std::cerr << argv[0] << ": creating " << ArchivePath.toString() << "\n";
- TheArchive = Archive::CreateEmpty(ArchivePath, &Context);
+ TheArchive = Archive::CreateEmpty(ArchivePath, Context);
TheArchive->writeToDisk();
} else {
std::string Error;
- TheArchive = Archive::OpenAndLoad(ArchivePath, &Context, &Error);
+ TheArchive = Archive::OpenAndLoad(ArchivePath, Context, &Error);
if (TheArchive == 0) {
std::cerr << argv[0] << ": error loading '" << ArchivePath << "': "
<< Error << "!\n";
diff --git a/tools/llvm-as/llvm-as.cpp b/tools/llvm-as/llvm-as.cpp
index 06798cb..53731b6 100644
--- a/tools/llvm-as/llvm-as.cpp
+++ b/tools/llvm-as/llvm-as.cpp
@@ -65,7 +65,7 @@
try {
// Parse the file now...
ParseError Err;
- std::auto_ptr<Module> M(ParseAssemblyFile(InputFilename, Err, &Context));
+ std::auto_ptr<Module> M(ParseAssemblyFile(InputFilename, Err, Context));
if (M.get() == 0) {
Err.PrintError(argv[0], errs());
return 1;
diff --git a/tools/llvm-db/CLIDebugger.cpp b/tools/llvm-db/CLIDebugger.cpp
index c7aedd1..3caa2e6 100644
--- a/tools/llvm-db/CLIDebugger.cpp
+++ b/tools/llvm-db/CLIDebugger.cpp
@@ -22,7 +22,7 @@
/// CLIDebugger constructor - This initializes the debugger to its default
/// state, and initializes the command table.
///
-CLIDebugger::CLIDebugger(LLVMContext* ctxt)
+CLIDebugger::CLIDebugger(const LLVMContext& ctxt)
: Context(ctxt), TheProgramInfo(0), TheRuntimeInfo(0),
Prompt("(llvm-db) "), ListSize(10) {
// Initialize instance variables
diff --git a/tools/llvm-db/CLIDebugger.h b/tools/llvm-db/CLIDebugger.h
index b1a31a4..a5c73bd 100644
--- a/tools/llvm-db/CLIDebugger.h
+++ b/tools/llvm-db/CLIDebugger.h
@@ -29,7 +29,7 @@
/// CLIDebugger - This class implements the command line interface for the
/// LLVM debugger.
class CLIDebugger {
- LLVMContext* Context;
+ const LLVMContext& Context;
/// Dbg - The low-level LLVM debugger object that we use to do our dirty
/// work.
@@ -82,7 +82,7 @@
const SourceLanguage *CurrentLanguage;
public:
- CLIDebugger(LLVMContext* ctxt);
+ CLIDebugger(const LLVMContext& ctxt);
/// getDebugger - Return the current LLVM debugger implementation being
/// used.
diff --git a/tools/llvm-db/llvm-db.cpp b/tools/llvm-db/llvm-db.cpp
index 62ee325..78dbf71 100644
--- a/tools/llvm-db/llvm-db.cpp
+++ b/tools/llvm-db/llvm-db.cpp
@@ -70,7 +70,7 @@
InputArgs.push_back(InputFile);
// Create the CLI debugger...
- CLIDebugger D(&Context);
+ CLIDebugger D(Context);
// Initialize the debugger with the command line options we read...
Debugger &Dbg = D.getDebugger();
diff --git a/tools/llvm-dis/llvm-dis.cpp b/tools/llvm-dis/llvm-dis.cpp
index 3460f7e..901c8e9 100644
--- a/tools/llvm-dis/llvm-dis.cpp
+++ b/tools/llvm-dis/llvm-dis.cpp
@@ -63,7 +63,7 @@
if (MemoryBuffer *Buffer
= MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage)) {
- M.reset(ParseBitcodeFile(Buffer, &Context, &ErrorMessage));
+ M.reset(ParseBitcodeFile(Buffer, Context, &ErrorMessage));
delete Buffer;
}
diff --git a/tools/llvm-extract/llvm-extract.cpp b/tools/llvm-extract/llvm-extract.cpp
index a977211..af0cf07 100644
--- a/tools/llvm-extract/llvm-extract.cpp
+++ b/tools/llvm-extract/llvm-extract.cpp
@@ -73,7 +73,7 @@
cerr << argv[0] << ": Error reading file '" + InputFilename + "'\n";
return 1;
} else {
- M.reset(ParseBitcodeFile(Buffer, &Context));
+ M.reset(ParseBitcodeFile(Buffer, Context));
}
delete Buffer;
diff --git a/tools/llvm-ld/llvm-ld.cpp b/tools/llvm-ld/llvm-ld.cpp
index 435de0f..2b9d255 100644
--- a/tools/llvm-ld/llvm-ld.cpp
+++ b/tools/llvm-ld/llvm-ld.cpp
@@ -517,7 +517,7 @@
cl::ParseCommandLineOptions(argc, argv, "llvm linker\n");
// Construct a Linker (now that Verbose is set)
- Linker TheLinker(progname, OutputFilename, &Context, Verbose);
+ Linker TheLinker(progname, OutputFilename, Context, Verbose);
// Keep track of the native link items (versus the bitcode items)
Linker::ItemList NativeLinkItems;
diff --git a/tools/llvm-link/llvm-link.cpp b/tools/llvm-link/llvm-link.cpp
index ae5fa40..818df14 100644
--- a/tools/llvm-link/llvm-link.cpp
+++ b/tools/llvm-link/llvm-link.cpp
@@ -49,7 +49,7 @@
// searches the link path for the specified file to try to find it...
//
static inline std::auto_ptr<Module> LoadFile(const std::string &FN,
- LLVMContext* Context) {
+ const LLVMContext& Context) {
sys::Path Filename;
if (!Filename.set(FN)) {
cerr << "Invalid file name: '" << FN << "'\n";
@@ -93,7 +93,7 @@
unsigned BaseArg = 0;
std::string ErrorMessage;
- std::auto_ptr<Module> Composite(LoadFile(InputFilenames[BaseArg], &Context));
+ std::auto_ptr<Module> Composite(LoadFile(InputFilenames[BaseArg], Context));
if (Composite.get() == 0) {
cerr << argv[0] << ": error loading file '"
<< InputFilenames[BaseArg] << "'\n";
@@ -101,7 +101,7 @@
}
for (unsigned i = BaseArg+1; i < InputFilenames.size(); ++i) {
- std::auto_ptr<Module> M(LoadFile(InputFilenames[i], &Context));
+ std::auto_ptr<Module> M(LoadFile(InputFilenames[i], Context));
if (M.get() == 0) {
cerr << argv[0] << ": error loading file '" <<InputFilenames[i]<< "'\n";
return 1;
diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp
index 3f19940..4e01180 100644
--- a/tools/llvm-nm/llvm-nm.cpp
+++ b/tools/llvm-nm/llvm-nm.cpp
@@ -142,7 +142,7 @@
MemoryBuffer::getFileOrSTDIN(Filename, &ErrorMessage));
Module *Result = 0;
if (Buffer.get())
- Result = ParseBitcodeFile(Buffer.get(), &Context, &ErrorMessage);
+ Result = ParseBitcodeFile(Buffer.get(), Context, &ErrorMessage);
if (Result)
DumpSymbolNamesFromModule(Result);
@@ -153,7 +153,7 @@
} else if (aPath.isArchive()) {
std::string ErrMsg;
- Archive* archive = Archive::OpenAndLoad(sys::Path(Filename), &Context,
+ Archive* archive = Archive::OpenAndLoad(sys::Path(Filename), Context,
&ErrorMessage);
if (!archive)
std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n";
diff --git a/tools/llvm-prof/llvm-prof.cpp b/tools/llvm-prof/llvm-prof.cpp
index 104d8794..cab87e7 100644
--- a/tools/llvm-prof/llvm-prof.cpp
+++ b/tools/llvm-prof/llvm-prof.cpp
@@ -127,7 +127,7 @@
Module *M = 0;
if (MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(BitcodeFile,
&ErrorMessage)) {
- M = ParseBitcodeFile(Buffer, &Context, &ErrorMessage);
+ M = ParseBitcodeFile(Buffer, Context, &ErrorMessage);
delete Buffer;
}
if (M == 0) {
diff --git a/tools/llvm-ranlib/llvm-ranlib.cpp b/tools/llvm-ranlib/llvm-ranlib.cpp
index 7b1b413..d9bcc48 100644
--- a/tools/llvm-ranlib/llvm-ranlib.cpp
+++ b/tools/llvm-ranlib/llvm-ranlib.cpp
@@ -75,7 +75,7 @@
std::string err_msg;
std::auto_ptr<Archive>
- AutoArchive(Archive::OpenAndLoad(ArchivePath, &Context, &err_msg));
+ AutoArchive(Archive::OpenAndLoad(ArchivePath, Context, &err_msg));
Archive* TheArchive = AutoArchive.get();
if (!TheArchive)
throw err_msg;
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index 8ae196f..faac33b 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -69,8 +69,8 @@
}
-LTOCodeGenerator::LTOCodeGenerator()
- : _context(new LLVMContext()),
+LTOCodeGenerator::LTOCodeGenerator(const LLVMContext& Context)
+ : _context(Context),
_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 d412626..4603c35 100644
--- a/tools/lto/LTOCodeGenerator.h
+++ b/tools/lto/LTOCodeGenerator.h
@@ -31,7 +31,7 @@
public:
static const char* getVersionString();
- LTOCodeGenerator();
+ LTOCodeGenerator(const llvm::LLVMContext& Context);
~LTOCodeGenerator();
bool addModule(class LTOModule*, std::string& errMsg);
@@ -54,7 +54,7 @@
typedef llvm::StringMap<uint8_t> StringSet;
- llvm::LLVMContext* _context;
+ const llvm::LLVMContext& _context;
llvm::Linker _linker;
llvm::TargetMachine* _target;
bool _emitDwarfDebugInfo;
diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp
index 64e7950..3da095d 100644
--- a/tools/lto/LTOModule.cpp
+++ b/tools/lto/LTOModule.cpp
@@ -69,7 +69,7 @@
bool LTOModule::isTargetMatch(MemoryBuffer* buffer, const char* triplePrefix)
{
OwningPtr<ModuleProvider> mp(getBitcodeModuleProvider(buffer,
- new LLVMContext()));
+ *new LLVMContext()));
// on success, mp owns buffer and both are deleted at end of this method
if ( !mp ) {
delete buffer;
@@ -86,7 +86,8 @@
{
}
-LTOModule* LTOModule::makeLTOModule(const char* path, LLVMContext* Context,
+LTOModule* LTOModule::makeLTOModule(const char* path,
+ const LLVMContext& Context,
std::string& errMsg)
{
OwningPtr<MemoryBuffer> buffer(MemoryBuffer::getFile(path, &errMsg));
@@ -112,7 +113,7 @@
LTOModule* LTOModule::makeLTOModule(const void* mem, size_t length,
- LLVMContext* Context,
+ const LLVMContext& Context,
std::string& errMsg)
{
OwningPtr<MemoryBuffer> buffer(makeBuffer(mem, length));
@@ -140,7 +141,8 @@
return Features.getString();
}
-LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer, LLVMContext* Context,
+LTOModule* LTOModule::makeLTOModule(MemoryBuffer* buffer,
+ const LLVMContext& Context,
std::string& errMsg)
{
// parse bitcode buffer
diff --git a/tools/lto/LTOModule.h b/tools/lto/LTOModule.h
index bfdf6e7..d7b992f 100644
--- a/tools/lto/LTOModule.h
+++ b/tools/lto/LTOModule.h
@@ -52,10 +52,10 @@
const char* triplePrefix);
static LTOModule* makeLTOModule(const char* path,
- llvm::LLVMContext* Context,
+ const llvm::LLVMContext& Context,
std::string& errMsg);
static LTOModule* makeLTOModule(const void* mem, size_t length,
- llvm::LLVMContext* Context,
+ const llvm::LLVMContext& Context,
std::string& errMsg);
const char* getTargetTriple();
@@ -91,7 +91,7 @@
const char* triplePrefix);
static LTOModule* makeLTOModule(llvm::MemoryBuffer* buffer,
- llvm::LLVMContext* Context,
+ const 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 c25f87c..02034bb 100644
--- a/tools/lto/lto.cpp
+++ b/tools/lto/lto.cpp
@@ -88,7 +88,7 @@
//
lto_module_t lto_module_create(const char* path, LLVMContextRef Ctxt)
{
- return LTOModule::makeLTOModule(path, llvm::unwrap(Ctxt),
+ return LTOModule::makeLTOModule(path, *llvm::unwrap(Ctxt),
sLastErrorString);
}
@@ -100,7 +100,7 @@
lto_module_t lto_module_create_from_memory(const void* mem, size_t length,
LLVMContextRef Ctxt)
{
- return LTOModule::makeLTOModule(mem, length, llvm::unwrap(Ctxt),
+ return LTOModule::makeLTOModule(mem, length, *llvm::unwrap(Ctxt),
sLastErrorString);
}
@@ -158,9 +158,9 @@
// instantiates a code generator
// returns NULL if there is an error
//
-lto_code_gen_t lto_codegen_create()
+lto_code_gen_t lto_codegen_create(LLVMContextRef ContextRef)
{
- return new LTOCodeGenerator();
+ return new LTOCodeGenerator(*llvm::unwrap(ContextRef));
}
@@ -265,4 +265,4 @@
lto_codegen_debug_options(lto_code_gen_t cg, const char * opt)
{
cg->setCodeGenDebugOptions(opt);
-}
+}
\ No newline at end of file
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index b469606..6891619 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -327,7 +327,7 @@
std::auto_ptr<Module> M;
if (MemoryBuffer *Buffer
= MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage)) {
- M.reset(ParseBitcodeFile(Buffer, &Context, &ErrorMessage));
+ M.reset(ParseBitcodeFile(Buffer, Context, &ErrorMessage));
delete Buffer;
}
diff --git a/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp b/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp
index 1bcf0ab..1007ae1 100644
--- a/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp
+++ b/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp
@@ -65,7 +65,7 @@
class JITEventListenerTest : public testing::Test {
protected:
JITEventListenerTest()
- : M(new Module("module", new LLVMContext())),
+ : M(new Module("module", *new LLVMContext())),
EE(ExecutionEngine::createJIT(new ExistingModuleProvider(M))) {
}
diff --git a/unittests/VMCore/PassManagerTest.cpp b/unittests/VMCore/PassManagerTest.cpp
index fb26d52..8122e2c 100644
--- a/unittests/VMCore/PassManagerTest.cpp
+++ b/unittests/VMCore/PassManagerTest.cpp
@@ -272,7 +272,7 @@
char OnTheFlyTest::ID=0;
TEST(PassManager, RunOnce) {
- Module M("test-once", new LLVMContext());
+ Module M("test-once", *new LLVMContext());
struct ModuleNDNM *mNDNM = new ModuleNDNM();
struct ModuleDNM *mDNM = new ModuleDNM();
struct ModuleNDM *mNDM = new ModuleNDM();
@@ -296,7 +296,7 @@
}
TEST(PassManager, ReRun) {
- Module M("test-rerun", new LLVMContext());
+ Module M("test-rerun", *new LLVMContext());
struct ModuleNDNM *mNDNM = new ModuleNDNM();
struct ModuleDNM *mDNM = new ModuleDNM();
struct ModuleNDM *mNDM = new ModuleNDM();
@@ -387,7 +387,7 @@
Module* makeLLVMModule() {
// Module Construction
- Module* mod = new Module("test-mem", new LLVMContext());
+ Module* mod = new Module("test-mem", *new LLVMContext());
mod->setDataLayout("e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-"
"i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-"
"a0:0:64-s0:64:64-f80:128:128");