GEPOperands[i] =
Constant::getNullValue(GEPOperands[i]->getType());
int64_t Offset =
- getTargetData().getIndexedOffset(BasePtr->getType(), GEPOperands);
+ getTargetData().getIndexedOffset(BasePtr->getType(),
+ &GEPOperands[0],
+ GEPOperands.size());
if (Offset >= (int64_t)V2Size || Offset <= -(int64_t)V1Size)
return NoAlias;
// Okay, now get the offset. This is the relative offset for the full
// instruction.
const TargetData &TD = getTargetData();
- int64_t Offset1 = TD.getIndexedOffset(GEPPointerTy, GEP1Ops);
+ int64_t Offset1 = TD.getIndexedOffset(GEPPointerTy, &GEP1Ops[0],
+ GEP1Ops.size());
// Now crop off any constants from the end...
GEP1Ops.resize(MinOperands);
- int64_t Offset2 = TD.getIndexedOffset(GEPPointerTy, GEP1Ops);
+ int64_t Offset2 = TD.getIndexedOffset(GEPPointerTy, &GEP1Ops[0],
+ GEP1Ops.size());
// If the tail provided a bit enough offset, return noalias!
if ((uint64_t)(Offset2-Offset1) >= SizeMax)
}
if (GEPPointerTy->getElementType()->isSized()) {
- int64_t Offset1 = getTargetData().getIndexedOffset(GEPPointerTy, GEP1Ops);
- int64_t Offset2 = getTargetData().getIndexedOffset(GEPPointerTy, GEP2Ops);
+ int64_t Offset1 =
+ getTargetData().getIndexedOffset(GEPPointerTy,&GEP1Ops[0],GEP1Ops.size());
+ int64_t Offset2 =
+ getTargetData().getIndexedOffset(GEPPointerTy,&GEP2Ops[0],GEP2Ops.size());
assert(Offset1<Offset2 && "There is at least one different constant here!");
if ((uint64_t)(Offset2-Offset1) >= SizeMax) {
case Instruction::GetElementPtr: {
// Compute the index
Result = getConstantValue(CE->getOperand(0));
- std::vector<Value*> Indexes(CE->op_begin()+1, CE->op_end());
+ SmallVector<Value*, 8> Indices(CE->op_begin()+1, CE->op_end());
uint64_t Offset =
- TD->getIndexedOffset(CE->getOperand(0)->getType(), Indexes);
+ TD->getIndexedOffset(CE->getOperand(0)->getType(),
+ &Indices[0], Indices.size());
if (getTargetData()->getPointerSize() == 4)
Result.Int32Val += Offset;