mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 02:24:22 +00:00
[opaque pointer type] Change GetElementPtrInst::getIndexedType to take the pointee type
This pushes the use of PointerType::getElementType up into several callers - I'll essentially just have to keep pushing that up the stack until I can eliminate every call to it... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233604 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -932,14 +932,14 @@ aliasSameBasePointerGEPs(const GEPOperator *GEP1, uint64_t V1Size,
|
||||
// Also, check that they all index through arrays.
|
||||
for (unsigned i = 1, e = GEP1->getNumIndices() - 1; i != e; ++i) {
|
||||
if (!isa<ArrayType>(GetElementPtrInst::getIndexedType(
|
||||
GEP1->getPointerOperandType(), IntermediateIndices)))
|
||||
GEP1->getSourceElementType(), IntermediateIndices)))
|
||||
return AliasAnalysis::MayAlias;
|
||||
IntermediateIndices.push_back(GEP1->getOperand(i + 1));
|
||||
}
|
||||
|
||||
StructType *LastIndexedStruct =
|
||||
dyn_cast<StructType>(GetElementPtrInst::getIndexedType(
|
||||
GEP1->getPointerOperandType(), IntermediateIndices));
|
||||
GEP1->getSourceElementType(), IntermediateIndices));
|
||||
|
||||
if (!LastIndexedStruct)
|
||||
return AliasAnalysis::MayAlias;
|
||||
|
@ -681,8 +681,9 @@ static Constant *CastGEPIndices(ArrayRef<Constant *> Ops, Type *ResultTy,
|
||||
for (unsigned i = 1, e = Ops.size(); i != e; ++i) {
|
||||
if ((i == 1 ||
|
||||
!isa<StructType>(GetElementPtrInst::getIndexedType(
|
||||
Ops[0]->getType(),
|
||||
Ops.slice(1, i - 1)))) &&
|
||||
cast<PointerType>(Ops[0]->getType()->getScalarType())
|
||||
->getElementType(),
|
||||
Ops.slice(1, i - 1)))) &&
|
||||
Ops[i]->getType() != IntPtrTy) {
|
||||
Any = true;
|
||||
NewIdxs.push_back(ConstantExpr::getCast(CastInst::getCastOpcode(Ops[i],
|
||||
|
@ -3251,7 +3251,8 @@ static Value *SimplifyGEPInst(ArrayRef<Value *> Ops, const Query &Q, unsigned) {
|
||||
return Ops[0];
|
||||
|
||||
// Compute the (pointer) type returned by the GEP instruction.
|
||||
Type *LastType = GetElementPtrInst::getIndexedType(PtrTy, Ops.slice(1));
|
||||
Type *LastType =
|
||||
GetElementPtrInst::getIndexedType(PtrTy->getElementType(), Ops.slice(1));
|
||||
Type *GEPTy = PointerType::get(LastType, AS);
|
||||
if (VectorType *VT = dyn_cast<VectorType>(Ops[0]->getType()))
|
||||
GEPTy = VectorType::get(GEPTy, VT->getNumElements());
|
||||
|
Reference in New Issue
Block a user