Changes in directory llvm/include/llvm:
Constants.h updated: 1.121 -> 1.122 Instructions.h updated: 1.50 -> 1.51 --- Log message: Revise APIs for creating constantexpr GEPs to not require the use of vectors. This allows us to eliminate many temporary vectors, and their associated malloc/free pairs. --- Diffs of the changes: (+24 -6) Constants.h | 16 ++++++++++++---- Instructions.h | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) Index: llvm/include/llvm/Constants.h diff -u llvm/include/llvm/Constants.h:1.121 llvm/include/llvm/Constants.h:1.122 --- llvm/include/llvm/Constants.h:1.121 Sat Jan 20 18:29:25 2007 +++ llvm/include/llvm/Constants.h Tue Jan 30 22:39:29 2007 @@ -447,7 +447,7 @@ static Constant *getSelectTy(const Type *Ty, Constant *C1, Constant *C2, Constant *C3); static Constant *getGetElementPtrTy(const Type *Ty, Constant *C, - const std::vector<Value*> &IdxList); + Value* const *Idxs, unsigned NumIdxs); static Constant *getExtractElementTy(const Type *Ty, Constant *Val, Constant *Idx); static Constant *getInsertElementTy(const Type *Ty, Constant *Val, @@ -577,10 +577,18 @@ /// all elements must be Constant's. /// static Constant *getGetElementPtr(Constant *C, - const std::vector<Constant*> &IdxList); + Constant* const *IdxList, unsigned NumIdx); static Constant *getGetElementPtr(Constant *C, - const std::vector<Value*> &IdxList); - + Value* const *IdxList, unsigned NumIdx); + static Constant *getGetElementPtr(Constant *C, + const std::vector<Constant*> &IdxList) { + return getGetElementPtr(C, &IdxList[0], IdxList.size()); + } + static Constant *getGetElementPtr(Constant *C, + const std::vector<Value*> &IdxList) { + return getGetElementPtr(C, &IdxList[0], IdxList.size()); + } + static Constant *getExtractElement(Constant *Vec, Constant *Idx); static Constant *getInsertElement(Constant *Vec, Constant *Elt,Constant *Idx); static Constant *getShuffleVector(Constant *V1, Constant *V2, Constant *Mask); Index: llvm/include/llvm/Instructions.h diff -u llvm/include/llvm/Instructions.h:1.50 llvm/include/llvm/Instructions.h:1.51 --- llvm/include/llvm/Instructions.h:1.50 Sun Jan 14 13:41:24 2007 +++ llvm/include/llvm/Instructions.h Tue Jan 30 22:39:29 2007 @@ -348,7 +348,11 @@ const std::string &Name = "", Instruction *InsertBefore =0); GetElementPtrInst(Value *Ptr, const std::vector<Value*> &Idx, const std::string &Name, BasicBlock *InsertAtEnd); - + GetElementPtrInst(Value *Ptr, Value* const *Idx, unsigned NumIdx, + const std::string &Name = "", Instruction *InsertBefore =0); + GetElementPtrInst(Value *Ptr, Value* const *Idx, unsigned NumIdx, + const std::string &Name, BasicBlock *InsertAtEnd); + /// Constructors - These two constructors are convenience methods because one /// and two index getelementptr instructions are so common. GetElementPtrInst(Value *Ptr, Value *Idx, @@ -375,8 +379,14 @@ /// pointer type. /// static const Type *getIndexedType(const Type *Ptr, - const std::vector<Value*> &Indices, + Value* const *Idx, unsigned NumIdx, bool AllowStructLeaf = false); + + static const Type *getIndexedType(const Type *Ptr, + const std::vector<Value*> &Indices, + bool AllowStructLeaf = false) { + return getIndexedType(Ptr, &Indices[0], Indices.size(), AllowStructLeaf); + } static const Type *getIndexedType(const Type *Ptr, Value *Idx0, Value *Idx1, bool AllowStructLeaf = false); static const Type *getIndexedType(const Type *Ptr, Value *Idx); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits