mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-04 17:56:53 +00:00
[opaque pointer types] [NFC] gep_type_{begin,end} now take source element type and address space.
Reviewers: mjacob, dblaikie Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D16436 llvm-svn: 258474
This commit is contained in:
parent
db4009626d
commit
636d36b9c9
@ -423,7 +423,7 @@ public:
|
||||
// Assumes the address space is 0 when Ptr is nullptr.
|
||||
unsigned AS =
|
||||
(Ptr == nullptr ? 0 : Ptr->getType()->getPointerAddressSpace());
|
||||
auto GTI = gep_type_begin(PointerType::get(PointeeType, AS), Operands);
|
||||
auto GTI = gep_type_begin(PointeeType, AS, Operands);
|
||||
for (auto I = Operands.begin(); I != Operands.end(); ++I, ++GTI) {
|
||||
// We assume that the cost of Scalar GEP with constant index and the
|
||||
// cost of Vector GEP with splat constant index are the same.
|
||||
|
@ -33,12 +33,6 @@ namespace llvm {
|
||||
generic_gep_type_iterator() {}
|
||||
public:
|
||||
|
||||
static generic_gep_type_iterator begin(Type *Ty, ItTy It) {
|
||||
generic_gep_type_iterator I;
|
||||
I.CurTy.setPointer(Ty);
|
||||
I.OpIt = It;
|
||||
return I;
|
||||
}
|
||||
static generic_gep_type_iterator begin(Type *Ty, unsigned AddrSpace,
|
||||
ItTy It) {
|
||||
generic_gep_type_iterator I;
|
||||
@ -125,13 +119,13 @@ namespace llvm {
|
||||
|
||||
template<typename T>
|
||||
inline generic_gep_type_iterator<const T *>
|
||||
gep_type_begin(Type *Op0, ArrayRef<T> A) {
|
||||
return generic_gep_type_iterator<const T *>::begin(Op0, A.begin());
|
||||
gep_type_begin(Type *Op0, unsigned AS, ArrayRef<T> A) {
|
||||
return generic_gep_type_iterator<const T *>::begin(Op0, AS, A.begin());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline generic_gep_type_iterator<const T *>
|
||||
gep_type_end(Type * /*Op0*/, ArrayRef<T> A) {
|
||||
gep_type_end(Type * /*Op0*/, unsigned /*AS*/, ArrayRef<T> A) {
|
||||
return generic_gep_type_iterator<const T *>::end(A.end());
|
||||
}
|
||||
} // end namespace llvm
|
||||
|
@ -729,8 +729,11 @@ uint64_t DataLayout::getIndexedOffset(Type *ptrTy,
|
||||
assert(Ty->isPointerTy() && "Illegal argument for getIndexedOffset()");
|
||||
uint64_t Result = 0;
|
||||
|
||||
// We can use 0 as the address space as we don't need
|
||||
// to get pointer types back from gep_type_iterator.
|
||||
unsigned AS = 0;
|
||||
generic_gep_type_iterator<Value* const*>
|
||||
TI = gep_type_begin(ptrTy, Indices);
|
||||
TI = gep_type_begin(ptrTy->getPointerElementType(), AS, Indices);
|
||||
for (unsigned CurIDX = 0, EndIDX = Indices.size(); CurIDX != EndIDX;
|
||||
++CurIDX, ++TI) {
|
||||
if (StructType *STy = dyn_cast<StructType>(*TI)) {
|
||||
|
Loading…
Reference in New Issue
Block a user