diff options
-rw-r--r-- | docs/tutorial/LangImpl3.html | 5 | ||||
-rw-r--r-- | docs/tutorial/LangImpl4.html | 5 | ||||
-rw-r--r-- | docs/tutorial/LangImpl5.html | 5 | ||||
-rw-r--r-- | docs/tutorial/LangImpl6.html | 5 | ||||
-rw-r--r-- | docs/tutorial/LangImpl7.html | 5 | ||||
-rw-r--r-- | examples/Kaleidoscope/toy.cpp | 2 | ||||
-rw-r--r-- | include/llvm/Analysis/ScalarEvolutionExpander.h | 3 | ||||
-rw-r--r-- | include/llvm/Support/IRBuilder.h | 39 | ||||
-rw-r--r-- | lib/CodeGen/IntrinsicLowering.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/ShadowStackGC.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Scalar/SimplifyLibCalls.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/Core.cpp | 2 |
12 files changed, 47 insertions, 32 deletions
diff --git a/docs/tutorial/LangImpl3.html b/docs/tutorial/LangImpl3.html index faf11d0..5028a63 100644 --- a/docs/tutorial/LangImpl3.html +++ b/docs/tutorial/LangImpl3.html @@ -115,7 +115,7 @@ undeclared parameter):</p> Value *ErrorV(const char *Str) { Error(Str); return 0; } static Module *TheModule; -static IRBuilder<> Builder; +static IRBuilder<> Builder(getGlobalContext()); static std::map<std::string, Value*> NamedValues; </pre> </div> @@ -682,6 +682,7 @@ our makefile/command line about which options to use:</p> // See example below. #include "llvm/DerivedTypes.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/Analysis/Verifier.h" #include "llvm/Support/IRBuilder.h" @@ -1216,7 +1217,7 @@ double putchard(double X) { //===----------------------------------------------------------------------===// int main() { - TheModule = new Module("my cool jit"); + TheModule = new Module("my cool jit", getGlobalContext()); // Install standard binary operators. // 1 is lowest precedence. diff --git a/docs/tutorial/LangImpl4.html b/docs/tutorial/LangImpl4.html index 9a3bfd2..f08665d 100644 --- a/docs/tutorial/LangImpl4.html +++ b/docs/tutorial/LangImpl4.html @@ -512,6 +512,7 @@ at runtime.</p> <pre> #include "llvm/DerivedTypes.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -861,7 +862,7 @@ static PrototypeAST *ParseExtern() { //===----------------------------------------------------------------------===// static Module *TheModule; -static IRBuilder<> Builder; +static IRBuilder<> Builder(getGlobalContext()); static std::map<std::string, Value*> NamedValues; static FunctionPassManager *TheFPM; @@ -1074,7 +1075,7 @@ int main() { getNextToken(); // Make the module, which holds all the code. - TheModule = new Module("my cool jit"); + TheModule = new Module("my cool jit", getGlobalContext()); // Create the JIT. TheExecutionEngine = ExecutionEngine::create(TheModule); diff --git a/docs/tutorial/LangImpl5.html b/docs/tutorial/LangImpl5.html index bf96b46..bb4b407 100644 --- a/docs/tutorial/LangImpl5.html +++ b/docs/tutorial/LangImpl5.html @@ -901,6 +901,7 @@ if/then/else and for expressions.. To build this example, use: <pre> #include "llvm/DerivedTypes.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -1352,7 +1353,7 @@ static PrototypeAST *ParseExtern() { //===----------------------------------------------------------------------===// static Module *TheModule; -static IRBuilder<> Builder; +static IRBuilder<> Builder(getGlobalContext()); static std::map<std::string, Value*> NamedValues; static FunctionPassManager *TheFPM; @@ -1708,7 +1709,7 @@ int main() { getNextToken(); // Make the module, which holds all the code. - TheModule = new Module("my cool jit"); + TheModule = new Module("my cool jit", getGlobalContext()); // Create the JIT. TheExecutionEngine = ExecutionEngine::create(TheModule); diff --git a/docs/tutorial/LangImpl6.html b/docs/tutorial/LangImpl6.html index 44ad15b..c6d9ce1 100644 --- a/docs/tutorial/LangImpl6.html +++ b/docs/tutorial/LangImpl6.html @@ -821,6 +821,7 @@ if/then/else and for expressions.. To build this example, use: <pre> #include "llvm/DerivedTypes.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -1357,7 +1358,7 @@ static PrototypeAST *ParseExtern() { //===----------------------------------------------------------------------===// static Module *TheModule; -static IRBuilder<> Builder; +static IRBuilder<> Builder(getGlobalContext()); static std::map<std::string, Value*> NamedValues; static FunctionPassManager *TheFPM; @@ -1747,7 +1748,7 @@ int main() { getNextToken(); // Make the module, which holds all the code. - TheModule = new Module("my cool jit"); + TheModule = new Module("my cool jit", getGlobalContext()); // Create the JIT. TheExecutionEngine = ExecutionEngine::create(TheModule); diff --git a/docs/tutorial/LangImpl7.html b/docs/tutorial/LangImpl7.html index f560648..71bb397 100644 --- a/docs/tutorial/LangImpl7.html +++ b/docs/tutorial/LangImpl7.html @@ -1003,6 +1003,7 @@ variables and var/in support. To build this example, use: <pre> #include "llvm/DerivedTypes.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -1605,7 +1606,7 @@ static PrototypeAST *ParseExtern() { //===----------------------------------------------------------------------===// static Module *TheModule; -static IRBuilder<> Builder; +static IRBuilder<> Builder(getGlobalContext()); static std::map<std::string, AllocaInst*> NamedValues; static FunctionPassManager *TheFPM; @@ -2099,7 +2100,7 @@ int main() { getNextToken(); // Make the module, which holds all the code. - TheModule = new Module("my cool jit"); + TheModule = new Module("my cool jit", getGlobalContext()); // Create the JIT. TheExecutionEngine = ExecutionEngine::create(TheModule); diff --git a/examples/Kaleidoscope/toy.cpp b/examples/Kaleidoscope/toy.cpp index 612cfa5..3893aea 100644 --- a/examples/Kaleidoscope/toy.cpp +++ b/examples/Kaleidoscope/toy.cpp @@ -604,7 +604,7 @@ static PrototypeAST *ParseExtern() { //===----------------------------------------------------------------------===// static Module *TheModule; -static IRBuilder<> Builder; +static IRBuilder<> Builder(getGlobalContext()); static std::map<std::string, AllocaInst*> NamedValues; static FunctionPassManager *TheFPM; diff --git a/include/llvm/Analysis/ScalarEvolutionExpander.h b/include/llvm/Analysis/ScalarEvolutionExpander.h index 2c8bcd7..a591efd 100644 --- a/include/llvm/Analysis/ScalarEvolutionExpander.h +++ b/include/llvm/Analysis/ScalarEvolutionExpander.h @@ -37,7 +37,8 @@ namespace llvm { friend struct SCEVVisitor<SCEVExpander, Value*>; public: explicit SCEVExpander(ScalarEvolution &se) - : SE(se), Builder(TargetFolder(se.TD, se.getContext())) {} + : SE(se), Builder(*se.getContext(), + TargetFolder(se.TD, se.getContext())) {} /// clear - Erase the contents of the InsertedExpressions map so that users /// trying to expand the same expression into multiple BasicBlocks or diff --git a/include/llvm/Support/IRBuilder.h b/include/llvm/Support/IRBuilder.h index 0f4e471..5069ead 100644 --- a/include/llvm/Support/IRBuilder.h +++ b/include/llvm/Support/IRBuilder.h @@ -20,6 +20,7 @@ #include "llvm/GlobalAlias.h" #include "llvm/GlobalVariable.h" #include "llvm/Function.h" +#include "llvm/LLVMContext.h" #include "llvm/Support/ConstantFolder.h" namespace llvm { @@ -42,12 +43,20 @@ template <bool preserveNames=true, typename T = ConstantFolder> class IRBuilder{ BasicBlock *BB; BasicBlock::iterator InsertPt; T Folder; + LLVMContext &Context; public: - IRBuilder(const T& F = T()) : Folder(F) { ClearInsertionPoint(); } + IRBuilder(LLVMContext &C, const T& F = T()) : + Folder(F), Context(C) { ClearInsertionPoint(); } + explicit IRBuilder(BasicBlock *TheBB, const T& F = T()) - : Folder(F) { SetInsertPoint(TheBB); } + : Folder(F), Context(*TheBB->getParent()->getContext()) { + SetInsertPoint(TheBB); + } + IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F = T()) - : Folder(F) { SetInsertPoint(TheBB, IP); } + : Folder(F), Context(*TheBB->getParent()->getContext()) { + SetInsertPoint(TheBB, IP); + } /// getFolder - Get the constant folder being used. const T& getFolder() { return Folder; } @@ -125,7 +134,7 @@ public: /// ReturnInst *CreateAggregateRet(Value * const* retVals, unsigned N) { const Type *RetType = BB->getParent()->getReturnType(); - Value *V = UndefValue::get(RetType); + Value *V = Context.getUndef(RetType); for (unsigned i = 0; i != N; ++i) V = CreateInsertValue(V, retVals[i], i, "mrv"); return Insert(ReturnInst::Create(V)); @@ -349,7 +358,7 @@ public: return Insert(GetElementPtrInst::Create(Ptr, Idx), Name); } Value *CreateConstGEP1_32(Value *Ptr, unsigned Idx0, const char *Name = "") { - Value *Idx = ConstantInt::get(Type::Int32Ty, Idx0); + Value *Idx = Context.getConstantInt(Type::Int32Ty, Idx0); if (Constant *PC = dyn_cast<Constant>(Ptr)) return Folder.CreateGetElementPtr(PC, &Idx, 1); @@ -359,8 +368,8 @@ public: Value *CreateConstGEP2_32(Value *Ptr, unsigned Idx0, unsigned Idx1, const char *Name = "") { Value *Idxs[] = { - ConstantInt::get(Type::Int32Ty, Idx0), - ConstantInt::get(Type::Int32Ty, Idx1) + Context.getConstantInt(Type::Int32Ty, Idx0), + Context.getConstantInt(Type::Int32Ty, Idx1) }; if (Constant *PC = dyn_cast<Constant>(Ptr)) @@ -369,7 +378,7 @@ public: return Insert(GetElementPtrInst::Create(Ptr, Idxs, Idxs+2), Name); } Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const char *Name = "") { - Value *Idx = ConstantInt::get(Type::Int64Ty, Idx0); + Value *Idx = Context.getConstantInt(Type::Int64Ty, Idx0); if (Constant *PC = dyn_cast<Constant>(Ptr)) return Folder.CreateGetElementPtr(PC, &Idx, 1); @@ -379,8 +388,8 @@ public: Value *CreateConstGEP2_64(Value *Ptr, uint64_t Idx0, uint64_t Idx1, const char *Name = "") { Value *Idxs[] = { - ConstantInt::get(Type::Int64Ty, Idx0), - ConstantInt::get(Type::Int64Ty, Idx1) + Context.getConstantInt(Type::Int64Ty, Idx0), + Context.getConstantInt(Type::Int64Ty, Idx1) }; if (Constant *PC = dyn_cast<Constant>(Ptr)) @@ -392,7 +401,7 @@ public: return CreateConstGEP2_32(Ptr, 0, Idx, Name); } Value *CreateGlobalString(const char *Str = "", const char *Name = "") { - Constant *StrConstant = ConstantArray::get(Str, true); + Constant *StrConstant = Context.getConstantArray(Str, true); GlobalVariable *gv = new GlobalVariable(*BB->getParent()->getParent(), StrConstant->getType(), true, @@ -406,7 +415,7 @@ public: } Value *CreateGlobalStringPtr(const char *Str = "", const char *Name = "") { Value *gv = CreateGlobalString(Str, Name); - Value *zero = ConstantInt::get(Type::Int32Ty, 0); + Value *zero = Context.getConstantInt(Type::Int32Ty, 0); Value *Args[] = { zero, zero }; return CreateGEP(gv, Args, Args+2, Name); } @@ -683,13 +692,13 @@ public: /// CreateIsNull - Return an i1 value testing if \arg Arg is null. Value *CreateIsNull(Value *Arg, const char *Name = "") { - return CreateICmpEQ(Arg, Constant::getNullValue(Arg->getType()), + return CreateICmpEQ(Arg, Context.getNullValue(Arg->getType()), Name); } /// CreateIsNotNull - Return an i1 value testing if \arg Arg is not null. Value *CreateIsNotNull(Value *Arg, const char *Name = "") { - return CreateICmpNE(Arg, Constant::getNullValue(Arg->getType()), + return CreateICmpNE(Arg, Context.getNullValue(Arg->getType()), Name); } @@ -704,7 +713,7 @@ public: Value *RHS_int = CreatePtrToInt(RHS, Type::Int64Ty); Value *Difference = CreateSub(LHS_int, RHS_int); return CreateSDiv(Difference, - ConstantExpr::getSizeOf(ArgType->getElementType()), + Context.getConstantExprSizeOf(ArgType->getElementType()), Name); } }; diff --git a/lib/CodeGen/IntrinsicLowering.cpp b/lib/CodeGen/IntrinsicLowering.cpp index 052334a..64a5c9e 100644 --- a/lib/CodeGen/IntrinsicLowering.cpp +++ b/lib/CodeGen/IntrinsicLowering.cpp @@ -301,7 +301,7 @@ static Value *LowerCTLZ(Value *V, Instruction *IP) { /// the bits are returned in inverse order. /// @brief Lowering of llvm.part.select intrinsic. static Instruction *LowerPartSelect(CallInst *CI) { - IRBuilder<> Builder; + IRBuilder<> Builder(*CI->getParent()->getContext()); // Make sure we're dealing with a part select intrinsic here Function *F = CI->getCalledFunction(); @@ -472,7 +472,7 @@ static Instruction *LowerPartSelect(CallInst *CI) { /// greater than %High then the inverse set of bits are replaced. /// @brief Lowering of llvm.bit.part.set intrinsic. static Instruction *LowerPartSet(CallInst *CI) { - IRBuilder<> Builder; + IRBuilder<> Builder(*CI->getParent()->getContext()); // Make sure we're dealing with a part select intrinsic here Function *F = CI->getCalledFunction(); diff --git a/lib/CodeGen/ShadowStackGC.cpp b/lib/CodeGen/ShadowStackGC.cpp index 10d0109..6ba1243 100644 --- a/lib/CodeGen/ShadowStackGC.cpp +++ b/lib/CodeGen/ShadowStackGC.cpp @@ -93,7 +93,7 @@ namespace { public: EscapeEnumerator(Function &F, const char *N = "cleanup") - : F(F), CleanupBBName(N), State(0) {} + : F(F), CleanupBBName(N), State(0), Builder(*F.getContext()) {} IRBuilder<> *Next() { switch (State) { diff --git a/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/lib/Transforms/Scalar/SimplifyLibCalls.cpp index 80ef96a..a2f9a82 100644 --- a/lib/Transforms/Scalar/SimplifyLibCalls.cpp +++ b/lib/Transforms/Scalar/SimplifyLibCalls.cpp @@ -1639,7 +1639,7 @@ bool SimplifyLibCalls::runOnFunction(Function &F) { const TargetData &TD = getAnalysis<TargetData>(); - IRBuilder<> Builder; + IRBuilder<> Builder(*Context); bool Changed = false; for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) { diff --git a/lib/VMCore/Core.cpp b/lib/VMCore/Core.cpp index 54773c3..0e3d7e8 100644 --- a/lib/VMCore/Core.cpp +++ b/lib/VMCore/Core.cpp @@ -1132,7 +1132,7 @@ LLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index) { /*===-- Instruction builders ----------------------------------------------===*/ LLVMBuilderRef LLVMCreateBuilder(void) { - return wrap(new IRBuilder<>()); + return wrap(new IRBuilder<>(getGlobalContext())); } void LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, |