SmallVector<const SCEV *, 4> Subscripts, Sizes;
explicit IRAccess(TypeKind Type, Value *BaseAddress, const SCEV *Offset,
+ unsigned elemBytes, bool Affine)
+ : BaseAddress(BaseAddress), Offset(Offset), ElemBytes(elemBytes),
+ Type(Type), IsAffine(Affine) {}
+
+ explicit IRAccess(TypeKind Type, Value *BaseAddress, const SCEV *Offset,
unsigned elemBytes, bool Affine,
SmallVector<const SCEV *, 4> Subscripts,
SmallVector<const SCEV *, 4> Sizes)
assert(!isa<PHINode>(UI) && "Non synthesizable PHINode found in a SCoP!");
- SmallVector<const SCEV *, 4> Subscripts, Sizes;
-
// Use the def instruction as base address of the IRAccess, so that it will
// become the name of the scalar access in the polyhedral form.
- IRAccess ScalarAccess(IRAccess::READ, Inst, ZeroOffset, 1, true, Subscripts,
- Sizes);
+ IRAccess ScalarAccess(IRAccess::READ, Inst, ZeroOffset, 1, true);
AccFuncMap[UseParent].push_back(std::make_pair(ScalarAccess, UI));
}
assert(BasePointer && "Could not find base pointer");
AccessFunction = SE->getMinusSCEV(AccessFunction, BasePointer);
- SmallVector<const SCEV *, 4> Subscripts, Sizes;
MemAcc *Acc = InsnToMemAcc[Inst];
if (PollyDelinearize && Acc)
Acc->DelinearizedSubscripts, Acc->Shape->DelinearizedSizes);
bool IsAffine = isAffineExpr(R, AccessFunction, *SE, BasePointer->getValue());
+
+ SmallVector<const SCEV *, 4> Subscripts, Sizes;
Subscripts.push_back(AccessFunction);
+ Sizes.push_back(SE->getConstant(ZeroOffset->getType(), Size));
+
if (!IsAffine && Type == IRAccess::MUST_WRITE)
Type = IRAccess::MAY_WRITE;
- Sizes.push_back(SE->getConstant(ZeroOffset->getType(), Size));
return IRAccess(Type, BasePointer->getValue(), AccessFunction, Size, IsAffine,
Subscripts, Sizes);
}
if (!isa<StoreInst>(Inst) && buildScalarDependences(Inst, &R)) {
// If the Instruction is used outside the statement, we need to build the
// write access.
- SmallVector<const SCEV *, 4> Subscripts, Sizes;
- IRAccess ScalarAccess(IRAccess::MUST_WRITE, Inst, ZeroOffset, 1, true,
- Subscripts, Sizes);
+ IRAccess ScalarAccess(IRAccess::MUST_WRITE, Inst, ZeroOffset, 1, true);
Functions.push_back(std::make_pair(ScalarAccess, Inst));
}
}