mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-28 15:33:16 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33691 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0c61584d05
commit
fb11053815
@ -447,7 +447,7 @@ protected:
|
||||
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 @@ public:
|
||||
/// 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);
|
||||
|
@ -348,7 +348,11 @@ public:
|
||||
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 @@ public:
|
||||
/// 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);
|
||||
|
Loading…
Reference in New Issue
Block a user