diff options
author | Owen Anderson <resistor@mac.com> | 2009-07-08 01:26:06 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2009-07-08 01:26:06 +0000 |
commit | 3d29df3e8a203b167d8071ea6f805b21db18a5af (patch) | |
tree | 04e35fb85689b9621ea6ec76db47849335a87c5c /include/llvm | |
parent | 8b8d31e3ec8c491a893307069ac123728c84782c (diff) | |
download | llvm-3d29df3e8a203b167d8071ea6f805b21db18a5af.tar.gz llvm-3d29df3e8a203b167d8071ea6f805b21db18a5af.tar.bz2 llvm-3d29df3e8a203b167d8071ea6f805b21db18a5af.tar.xz |
Push LLVMContext through GlobalVariables and IRBuilder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74985 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/GlobalVariable.h | 7 | ||||
-rw-r--r-- | include/llvm/Support/IRBuilder.h | 42 |
2 files changed, 29 insertions, 20 deletions
diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h index ae64ccf614..a6505ad9cb 100644 --- a/include/llvm/GlobalVariable.h +++ b/include/llvm/GlobalVariable.h @@ -26,6 +26,7 @@ namespace llvm { +class LLVMContext; class Module; class Constant; template<typename ValueSubClass, typename ItemParentClass> @@ -49,13 +50,15 @@ public: } /// GlobalVariable ctor - If a parent module is specified, the global is /// automatically inserted into the end of the specified modules global list. - GlobalVariable(const Type *Ty, bool isConstant, LinkageTypes Linkage, + GlobalVariable(LLVMContext &Context, const Type *Ty, + bool isConstant, LinkageTypes Linkage, Constant *Initializer = 0, const std::string &Name = "", Module *Parent = 0, bool ThreadLocal = false, unsigned AddressSpace = 0); /// GlobalVariable ctor - This creates a global and inserts it before the /// specified other global. - GlobalVariable(const Type *Ty, bool isConstant, LinkageTypes Linkage, + GlobalVariable(LLVMContext &Context, const Type *Ty, + bool isConstant, LinkageTypes Linkage, Constant *Initializer, const std::string &Name, GlobalVariable *InsertBefore, bool ThreadLocal = false, unsigned AddressSpace = 0); diff --git a/include/llvm/Support/IRBuilder.h b/include/llvm/Support/IRBuilder.h index ed6a3f19ef..f05ee86148 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,16 @@ 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(); } - explicit IRBuilder(BasicBlock *TheBB, const T& F = T()) - : Folder(F) { SetInsertPoint(TheBB); } - IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F = T()) - : Folder(F) { SetInsertPoint(TheBB, IP); } + IRBuilder(const T& F = T(), LLVMContext &C = getGlobalContext()) : + Folder(F), Context(C) { ClearInsertionPoint(); } + explicit IRBuilder(BasicBlock *TheBB, const T& F = T(), + LLVMContext &C = getGlobalContext()) : + Folder(F), Context(C) { SetInsertPoint(TheBB); } + IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F = T(), + LLVMContext &C = getGlobalContext()) + : Folder(F), Context(C) { SetInsertPoint(TheBB, IP); } /// getFolder - Get the constant folder being used. const T& getFolder() { return Folder; } @@ -125,7 +130,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 +354,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 +364,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 +374,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 +384,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,8 +397,9 @@ public: return CreateConstGEP2_32(Ptr, 0, Idx, Name); } Value *CreateGlobalString(const char *Str = "", const char *Name = "") { - Constant *StrConstant = ConstantArray::get(Str, true); - GlobalVariable *gv = new GlobalVariable(StrConstant->getType(), + Constant *StrConstant = Context.getConstantArray(Str, true); + GlobalVariable *gv = new GlobalVariable(Context, + StrConstant->getType(), true, GlobalValue::InternalLinkage, StrConstant, @@ -405,7 +411,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); } @@ -697,13 +703,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); } @@ -718,7 +724,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); } }; |