[PATCH] D16436: [opaque pointer types] [NFC] gep_type_{begin, end} now take source element type and address space.
Eduard Burtescu via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 21 17:25:48 PST 2016
eddyb created this revision.
eddyb added reviewers: mjacob, dblaikie.
eddyb added a subscriber: llvm-commits.
http://reviews.llvm.org/D16436
Files:
include/llvm/Analysis/TargetTransformInfoImpl.h
include/llvm/IR/GetElementPtrTypeIterator.h
lib/IR/DataLayout.cpp
Index: lib/IR/DataLayout.cpp
===================================================================
--- lib/IR/DataLayout.cpp
+++ lib/IR/DataLayout.cpp
@@ -729,8 +729,11 @@
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)) {
Index: include/llvm/IR/GetElementPtrTypeIterator.h
===================================================================
--- include/llvm/IR/GetElementPtrTypeIterator.h
+++ include/llvm/IR/GetElementPtrTypeIterator.h
@@ -33,12 +33,6 @@
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 @@
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
Index: include/llvm/Analysis/TargetTransformInfoImpl.h
===================================================================
--- include/llvm/Analysis/TargetTransformInfoImpl.h
+++ include/llvm/Analysis/TargetTransformInfoImpl.h
@@ -423,7 +423,7 @@
// 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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D16436.45626.patch
Type: text/x-patch
Size: 2729 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160122/2b062a71/attachment.bin>
More information about the llvm-commits
mailing list