forked from OSchip/llvm-project
[opaque pointer types] Add element type argument to IRBuilder CreatePreserveStructAccessIndex and CreatePreserveArrayAccessIndex
Summary: These were the only remaining users of the GetElementPtrInst::getGEPReturnType method that gets the element type from the pointer type. Remove that method since its now dead. Reviewers: jyknight, t.p.northover, arsenm Reviewed By: arsenm Subscribers: wdng, arsenm, arphaman, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D69756
This commit is contained in:
parent
ce7d5a6bbe
commit
910718bd03
|
@ -309,7 +309,7 @@ public:
|
|||
const llvm::StructLayout *Layout = DL.getStructLayout(ElTy);
|
||||
auto Offset = CharUnits::fromQuantity(Layout->getElementOffset(Index));
|
||||
|
||||
return Address(CreatePreserveStructAccessIndex(Addr.getPointer(),
|
||||
return Address(CreatePreserveStructAccessIndex(ElTy, Addr.getPointer(),
|
||||
Index, FieldIndex, DbgInfo),
|
||||
Addr.getAlignment().alignmentAtOffset(Offset));
|
||||
}
|
||||
|
|
|
@ -3438,7 +3438,8 @@ static Address emitArraySubscriptGEP(CodeGenFunction &CGF, Address addr,
|
|||
llvm::DIType *DbgInfo = nullptr;
|
||||
if (arrayType)
|
||||
DbgInfo = CGF.getDebugInfo()->getOrCreateStandaloneType(*arrayType, loc);
|
||||
eltPtr = CGF.Builder.CreatePreserveArrayAccessIndex(addr.getPointer(),
|
||||
eltPtr = CGF.Builder.CreatePreserveArrayAccessIndex(addr.getElementType(),
|
||||
addr.getPointer(),
|
||||
indices.size() - 1,
|
||||
idx, DbgInfo);
|
||||
}
|
||||
|
|
|
@ -2521,8 +2521,9 @@ public:
|
|||
return V;
|
||||
}
|
||||
|
||||
Value *CreatePreserveArrayAccessIndex(Value *Base, unsigned Dimension,
|
||||
unsigned LastIndex, MDNode *DbgInfo) {
|
||||
Value *CreatePreserveArrayAccessIndex(Type *ElTy, Value *Base,
|
||||
unsigned Dimension, unsigned LastIndex,
|
||||
MDNode *DbgInfo) {
|
||||
assert(isa<PointerType>(Base->getType()) &&
|
||||
"Invalid Base ptr type for preserve.array.access.index.");
|
||||
auto *BaseType = Base->getType();
|
||||
|
@ -2535,7 +2536,7 @@ public:
|
|||
IdxList.push_back(LastIndexV);
|
||||
|
||||
Type *ResultType =
|
||||
GetElementPtrInst::getGEPReturnType(Base, IdxList);
|
||||
GetElementPtrInst::getGEPReturnType(ElTy, Base, IdxList);
|
||||
|
||||
Module *M = BB->getParent()->getParent();
|
||||
Function *FnPreserveArrayAccessIndex = Intrinsic::getDeclaration(
|
||||
|
@ -2569,8 +2570,9 @@ public:
|
|||
return Fn;
|
||||
}
|
||||
|
||||
Value *CreatePreserveStructAccessIndex(Value *Base, unsigned Index,
|
||||
unsigned FieldIndex, MDNode *DbgInfo) {
|
||||
Value *CreatePreserveStructAccessIndex(Type *ElTy, Value *Base,
|
||||
unsigned Index, unsigned FieldIndex,
|
||||
MDNode *DbgInfo) {
|
||||
assert(isa<PointerType>(Base->getType()) &&
|
||||
"Invalid Base ptr type for preserve.struct.access.index.");
|
||||
auto *BaseType = Base->getType();
|
||||
|
@ -2578,7 +2580,7 @@ public:
|
|||
Value *GEPIndex = getInt32(Index);
|
||||
Constant *Zero = ConstantInt::get(Type::getInt32Ty(Context), 0);
|
||||
Type *ResultType =
|
||||
GetElementPtrInst::getGEPReturnType(Base, {Zero, GEPIndex});
|
||||
GetElementPtrInst::getGEPReturnType(ElTy, Base, {Zero, GEPIndex});
|
||||
|
||||
Module *M = BB->getParent()->getParent();
|
||||
Function *FnPreserveStructAccessIndex = Intrinsic::getDeclaration(
|
||||
|
|
|
@ -1039,11 +1039,6 @@ public:
|
|||
|
||||
/// Returns the pointer type returned by the GEP
|
||||
/// instruction, which may be a vector of pointers.
|
||||
static Type *getGEPReturnType(Value *Ptr, ArrayRef<Value *> IdxList) {
|
||||
return getGEPReturnType(
|
||||
cast<PointerType>(Ptr->getType()->getScalarType())->getElementType(),
|
||||
Ptr, IdxList);
|
||||
}
|
||||
static Type *getGEPReturnType(Type *ElTy, Value *Ptr,
|
||||
ArrayRef<Value *> IdxList) {
|
||||
Type *PtrTy = PointerType::get(checkGEPType(getIndexedType(ElTy, IdxList)),
|
||||
|
|
Loading…
Reference in New Issue