}
std::string Scop::getContextStr() const { return stringFromIslObj(Context); }
+
std::string Scop::getAssumedContextStr() const {
return stringFromIslObj(AssumedContext);
}
+
std::string Scop::getBoundaryContextStr() const {
return stringFromIslObj(BoundaryContext);
}
ElemBytes, IsAffine, AccessValue, Subscripts, Sizes,
ScopArrayInfo::MK_Array);
}
+
void ScopInfo::ensureValueWrite(Instruction *Inst) {
ScopStmt *Stmt = scop->getStmtForBasicBlock(Inst->getParent());
true, Inst, ArrayRef<const SCEV *>(),
ArrayRef<const SCEV *>(), ScopArrayInfo::MK_Value);
}
+
void ScopInfo::ensureValueRead(Value *V, BasicBlock *UserBB) {
// There cannot be an "access" for literal constants. BasicBlock references
if (ValueInst)
ensureValueWrite(ValueInst);
}
+
void ScopInfo::ensurePHIWrite(PHINode *PHI, BasicBlock *IncomingBlock,
Value *IncomingValue, bool IsExitBlock) {
ScopStmt *IncomingStmt = scop->getStmtForBasicBlock(IncomingBlock);
assert(Acc);
Acc->addIncoming(IncomingBlock, IncomingValue);
}
+
void ScopInfo::addPHIReadAccess(PHINode *PHI) {
addMemoryAccess(PHI->getParent(), PHI, MemoryAccess::READ, PHI, 1, true, PHI,
ArrayRef<const SCEV *>(), ArrayRef<const SCEV *>(),