forked from OSchip/llvm-project
parent
bc4ef90802
commit
083d3d3cb3
|
@ -97,12 +97,11 @@ struct DOTGraphTraits<ScopDetection *> : public DOTGraphTraits<RegionNode *> {
|
|||
static std::string escapeString(std::string String) {
|
||||
std::string Escaped;
|
||||
|
||||
for (std::string::iterator SI = String.begin(), SE = String.end(); SI != SE;
|
||||
++SI) {
|
||||
if (*SI == '"')
|
||||
for (const auto &C : String) {
|
||||
if (C == '"')
|
||||
Escaped += '\\';
|
||||
|
||||
Escaped += *SI;
|
||||
Escaped += C;
|
||||
}
|
||||
return Escaped;
|
||||
}
|
||||
|
|
|
@ -556,22 +556,18 @@ void ScopStmt::buildScattering(SmallVectorImpl<unsigned> &Scatter) {
|
|||
}
|
||||
|
||||
void ScopStmt::buildAccesses(TempScop &tempScop, const Region &CurRegion) {
|
||||
const AccFuncSetType *AccFuncs = tempScop.getAccessFunctions(BB);
|
||||
|
||||
for (AccFuncSetType::const_iterator I = AccFuncs->begin(),
|
||||
E = AccFuncs->end();
|
||||
I != E; ++I) {
|
||||
MemAccs.push_back(new MemoryAccess(I->first, I->second, this));
|
||||
for (auto &&Access : *tempScop.getAccessFunctions(BB)) {
|
||||
MemAccs.push_back(new MemoryAccess(Access.first, Access.second, this));
|
||||
|
||||
// We do not track locations for scalar memory accesses at the moment.
|
||||
//
|
||||
// We do not have a use for this information at the moment. If we need this
|
||||
// at some point, the "instruction -> access" mapping needs to be enhanced
|
||||
// as a single instruction could then possibly perform multiple accesses.
|
||||
if (!I->first.isScalar()) {
|
||||
assert(!InstructionToAccess.count(I->second) &&
|
||||
if (!Access.first.isScalar()) {
|
||||
assert(!InstructionToAccess.count(Access.second) &&
|
||||
"Unexpected 1-to-N mapping on instruction to access map!");
|
||||
InstructionToAccess[I->second] = MemAccs.back();
|
||||
InstructionToAccess[Access.second] = MemAccs.back();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -650,10 +646,8 @@ __isl_give isl_set *ScopStmt::addConditionsToDomain(__isl_take isl_set *Domain,
|
|||
do {
|
||||
if (BranchingBB != CurrentRegion->getEntry()) {
|
||||
if (const BBCond *Condition = tempScop.getBBCond(BranchingBB))
|
||||
for (BBCond::const_iterator CI = Condition->begin(),
|
||||
CE = Condition->end();
|
||||
CI != CE; ++CI) {
|
||||
isl_set *ConditionSet = buildConditionSet(*CI);
|
||||
for (const auto &C : *Condition) {
|
||||
isl_set *ConditionSet = buildConditionSet(C);
|
||||
Domain = isl_set_intersect(Domain, ConditionSet);
|
||||
}
|
||||
}
|
||||
|
@ -894,9 +888,8 @@ void ScopStmt::print(raw_ostream &OS) const {
|
|||
} else
|
||||
OS.indent(16) << "n/a\n";
|
||||
|
||||
for (MemoryAccessVec::const_iterator I = MemAccs.begin(), E = MemAccs.end();
|
||||
I != E; ++I)
|
||||
(*I)->print(OS);
|
||||
for (MemoryAccess *Access : MemAccs)
|
||||
Access->print(OS);
|
||||
}
|
||||
|
||||
void ScopStmt::dump() const { print(dbgs()); }
|
||||
|
@ -911,11 +904,7 @@ void Scop::setContext(__isl_take isl_set *NewContext) {
|
|||
}
|
||||
|
||||
void Scop::addParams(std::vector<const SCEV *> NewParameters) {
|
||||
for (std::vector<const SCEV *>::iterator PI = NewParameters.begin(),
|
||||
PE = NewParameters.end();
|
||||
PI != PE; ++PI) {
|
||||
const SCEV *Parameter = *PI;
|
||||
|
||||
for (const SCEV *Parameter : NewParameters) {
|
||||
if (ParameterIds.find(Parameter) != ParameterIds.end())
|
||||
continue;
|
||||
|
||||
|
@ -983,18 +972,17 @@ void Scop::realignParams() {
|
|||
// Add all parameters into a common model.
|
||||
isl_space *Space = isl_space_params_alloc(IslCtx, ParameterIds.size());
|
||||
|
||||
for (ParamIdType::iterator PI = ParameterIds.begin(), PE = ParameterIds.end();
|
||||
PI != PE; ++PI) {
|
||||
const SCEV *Parameter = PI->first;
|
||||
for (const auto &ParamID : ParameterIds) {
|
||||
const SCEV *Parameter = ParamID.first;
|
||||
isl_id *id = getIdForParam(Parameter);
|
||||
Space = isl_space_set_dim_id(Space, isl_dim_param, PI->second, id);
|
||||
Space = isl_space_set_dim_id(Space, isl_dim_param, ParamID.second, id);
|
||||
}
|
||||
|
||||
// Align the parameters of all data structures to the model.
|
||||
Context = isl_set_align_params(Context, Space);
|
||||
|
||||
for (iterator I = begin(), E = end(); I != E; ++I)
|
||||
(*I)->realignParams();
|
||||
for (ScopStmt *Stmt : *this)
|
||||
Stmt->realignParams();
|
||||
}
|
||||
|
||||
Scop::Scop(TempScop &tempScop, LoopInfo &LI, ScalarEvolution &ScalarEvolution,
|
||||
|
@ -1024,8 +1012,8 @@ Scop::~Scop() {
|
|||
isl_set_free(AssumedContext);
|
||||
|
||||
// Free the statements;
|
||||
for (iterator I = begin(), E = end(); I != E; ++I)
|
||||
delete *I;
|
||||
for (ScopStmt *Stmt : *this)
|
||||
delete Stmt;
|
||||
}
|
||||
|
||||
std::string Scop::getContextStr() const { return stringFromIslObj(Context); }
|
||||
|
@ -1066,12 +1054,8 @@ void Scop::printContext(raw_ostream &OS) const {
|
|||
|
||||
OS.indent(4) << getContextStr() << "\n";
|
||||
|
||||
for (ParamVecType::const_iterator PI = Parameters.begin(),
|
||||
PE = Parameters.end();
|
||||
PI != PE; ++PI) {
|
||||
const SCEV *Parameter = *PI;
|
||||
for (const SCEV *Parameter : Parameters) {
|
||||
int Dim = ParameterIds.find(Parameter)->second;
|
||||
|
||||
OS.indent(4) << "p" << Dim << ": " << *Parameter << "\n";
|
||||
}
|
||||
}
|
||||
|
@ -1079,8 +1063,8 @@ void Scop::printContext(raw_ostream &OS) const {
|
|||
void Scop::printStatements(raw_ostream &OS) const {
|
||||
OS << "Statements {\n";
|
||||
|
||||
for (const_iterator SI = begin(), SE = end(); SI != SE; ++SI)
|
||||
OS.indent(4) << (**SI);
|
||||
for (ScopStmt *Stmt : *this)
|
||||
OS.indent(4) << *Stmt;
|
||||
|
||||
OS.indent(4) << "}\n";
|
||||
}
|
||||
|
|
|
@ -536,14 +536,8 @@ public:
|
|||
const BasicBlock *BB = S->getBasicBlock();
|
||||
|
||||
// Check all the operands of instructions in the basic block.
|
||||
for (BasicBlock::const_iterator BI = BB->begin(), BE = BB->end(); BI != BE;
|
||||
++BI) {
|
||||
const Instruction &Inst = *BI;
|
||||
for (Instruction::const_op_iterator II = Inst.op_begin(),
|
||||
IE = Inst.op_end();
|
||||
II != IE; ++II) {
|
||||
Value *SrcVal = *II;
|
||||
|
||||
for (const Instruction &Inst : *BB) {
|
||||
for (Value *SrcVal : Inst.operands()) {
|
||||
if (Instruction *OpInst = dyn_cast<Instruction>(SrcVal))
|
||||
if (S->getParent()->getRegion().contains(OpInst))
|
||||
continue;
|
||||
|
|
|
@ -37,9 +37,9 @@ BasicBlock *polly::executeScopConditionally(Scop &S, Pass *PassInfo) {
|
|||
std::string OldName = OldBlock->getName();
|
||||
|
||||
// Update ScopInfo.
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI)
|
||||
if ((*SI)->getBasicBlock() == OldBlock) {
|
||||
(*SI)->setBasicBlock(NewBlock);
|
||||
for (ScopStmt *Stmt : S)
|
||||
if (Stmt->getBasicBlock() == OldBlock) {
|
||||
Stmt->setBasicBlock(NewBlock);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -94,9 +94,9 @@ void polly::simplifyRegion(Scop *S, Pass *P) {
|
|||
BasicBlock *OldEntry = R->getEntry();
|
||||
BasicBlock *NewEntry = SplitBlock(OldEntry, OldEntry->begin(), P);
|
||||
|
||||
for (Scop::iterator SI = S->begin(), SE = S->end(); SI != SE; ++SI)
|
||||
if ((*SI)->getBasicBlock() == OldEntry) {
|
||||
(*SI)->setBasicBlock(NewEntry);
|
||||
for (ScopStmt *Stmt : *S)
|
||||
if (Stmt->getBasicBlock() == OldEntry) {
|
||||
Stmt->setBasicBlock(NewEntry);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -107,8 +107,8 @@ void polly::simplifyRegion(Scop *S, Pass *P) {
|
|||
if (!R->getExitingBlock()) {
|
||||
BasicBlock *NewExit = createSingleExitEdge(R, P);
|
||||
|
||||
for (Region::const_iterator RI = R->begin(), RE = R->end(); RI != RE; ++RI)
|
||||
(*RI)->replaceExitRecursive(NewExit);
|
||||
for (auto &&SubRegion : *R)
|
||||
SubRegion->replaceExitRecursive(NewExit);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -246,17 +246,15 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R,
|
|||
bool IndependentBlocks::createIndependentBlocks(BasicBlock *BB,
|
||||
const Region *R) {
|
||||
std::vector<Instruction *> WorkList;
|
||||
for (BasicBlock::iterator II = BB->begin(), IE = BB->end(); II != IE; ++II)
|
||||
if (!isSafeToMove(II) && !canSynthesize(II, LI, SE, R))
|
||||
WorkList.push_back(II);
|
||||
for (Instruction &Inst : *BB)
|
||||
if (!isSafeToMove(&Inst) && !canSynthesize(&Inst, LI, SE, R))
|
||||
WorkList.push_back(&Inst);
|
||||
|
||||
ReplacedMapType ReplacedMap;
|
||||
Instruction *InsertPos = BB->getFirstNonPHIOrDbg();
|
||||
|
||||
for (std::vector<Instruction *>::iterator I = WorkList.begin(),
|
||||
E = WorkList.end();
|
||||
I != E; ++I)
|
||||
moveOperandTree(*I, R, ReplacedMap, InsertPos);
|
||||
for (Instruction *Inst : WorkList)
|
||||
moveOperandTree(Inst, R, ReplacedMap, InsertPos);
|
||||
|
||||
// The BB was changed if we replaced any operand.
|
||||
return !ReplacedMap.empty();
|
||||
|
@ -265,7 +263,7 @@ bool IndependentBlocks::createIndependentBlocks(BasicBlock *BB,
|
|||
bool IndependentBlocks::createIndependentBlocks(const Region *R) {
|
||||
bool Changed = false;
|
||||
|
||||
for (const auto &BB : R->blocks())
|
||||
for (BasicBlock *BB : R->blocks())
|
||||
Changed |= createIndependentBlocks(BB, R);
|
||||
|
||||
return Changed;
|
||||
|
@ -275,10 +273,10 @@ bool IndependentBlocks::eliminateDeadCode(const Region *R) {
|
|||
std::vector<Instruction *> WorkList;
|
||||
|
||||
// Find all trivially dead instructions.
|
||||
for (const auto &BB : R->blocks())
|
||||
for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
|
||||
if (isInstructionTriviallyDead(I))
|
||||
WorkList.push_back(I);
|
||||
for (BasicBlock *BB : R->blocks())
|
||||
for (Instruction &Inst : *BB)
|
||||
if (isInstructionTriviallyDead(&Inst))
|
||||
WorkList.push_back(&Inst);
|
||||
|
||||
if (WorkList.empty())
|
||||
return false;
|
||||
|
@ -332,14 +330,14 @@ bool IndependentBlocks::splitExitBlock(Region *R) {
|
|||
toUpdate.push_back(R);
|
||||
|
||||
while (!toUpdate.empty()) {
|
||||
Region *Reg = toUpdate.back();
|
||||
Region *R = toUpdate.back();
|
||||
toUpdate.pop_back();
|
||||
|
||||
for (const auto &SubR : *Reg)
|
||||
if (SubR->getExit() == ExitBB)
|
||||
toUpdate.push_back(SubR.get());
|
||||
for (auto &&SubRegion : *R)
|
||||
if (SubRegion->getExit() == ExitBB)
|
||||
toUpdate.push_back(SubRegion.get());
|
||||
|
||||
Reg->replaceExit(NewExit);
|
||||
R->replaceExit(NewExit);
|
||||
}
|
||||
|
||||
RI->setRegionFor(NewExit, R->getParent());
|
||||
|
@ -349,7 +347,7 @@ bool IndependentBlocks::splitExitBlock(Region *R) {
|
|||
bool IndependentBlocks::translateScalarToArray(const Region *R) {
|
||||
bool Changed = false;
|
||||
|
||||
for (const auto &BB : R->blocks())
|
||||
for (BasicBlock *BB : R->blocks())
|
||||
Changed |= translateScalarToArray(BB, R);
|
||||
|
||||
return Changed;
|
||||
|
@ -446,19 +444,16 @@ bool IndependentBlocks::translateScalarToArray(BasicBlock *BB,
|
|||
|
||||
bool IndependentBlocks::isIndependentBlock(const Region *R,
|
||||
BasicBlock *BB) const {
|
||||
for (BasicBlock::iterator II = BB->begin(), IE = --BB->end(); II != IE;
|
||||
++II) {
|
||||
Instruction *Inst = &*II;
|
||||
|
||||
if (canSynthesize(Inst, LI, SE, R))
|
||||
for (Instruction &Inst : *BB) {
|
||||
if (canSynthesize(&Inst, LI, SE, R))
|
||||
continue;
|
||||
|
||||
// A value inside the Scop is referenced outside.
|
||||
for (User *U : Inst->users()) {
|
||||
for (User *U : Inst.users()) {
|
||||
if (isEscapeUse(U, R)) {
|
||||
DEBUG(dbgs() << "Instruction not independent:\n");
|
||||
DEBUG(dbgs() << "Instruction used outside the Scop!\n");
|
||||
DEBUG(Inst->print(dbgs()));
|
||||
DEBUG(Inst.print(dbgs()));
|
||||
DEBUG(dbgs() << "\n");
|
||||
return false;
|
||||
}
|
||||
|
@ -467,17 +462,16 @@ bool IndependentBlocks::isIndependentBlock(const Region *R,
|
|||
if (DisableIntraScopScalarToArray)
|
||||
continue;
|
||||
|
||||
for (Instruction::op_iterator OI = Inst->op_begin(), OE = Inst->op_end();
|
||||
OI != OE; ++OI) {
|
||||
if (isEscapeOperand(*OI, BB, R)) {
|
||||
for (Value *Op : Inst.operands()) {
|
||||
if (isEscapeOperand(Op, BB, R)) {
|
||||
DEBUG(dbgs() << "Instruction in function '";
|
||||
BB->getParent()->printAsOperand(dbgs(), false);
|
||||
dbgs() << "' not independent:\n");
|
||||
DEBUG(dbgs() << "Uses invalid operator\n");
|
||||
DEBUG(Inst->print(dbgs()));
|
||||
DEBUG(Inst.print(dbgs()));
|
||||
DEBUG(dbgs() << "\n");
|
||||
DEBUG(dbgs() << "Invalid operator is: ";
|
||||
(*OI)->printAsOperand(dbgs(), false); dbgs() << "\n");
|
||||
Op->printAsOperand(dbgs(), false); dbgs() << "\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -487,7 +481,7 @@ bool IndependentBlocks::isIndependentBlock(const Region *R,
|
|||
}
|
||||
|
||||
bool IndependentBlocks::areAllBlocksIndependent(const Region *R) const {
|
||||
for (const auto &BB : R->blocks())
|
||||
for (BasicBlock *BB : R->blocks())
|
||||
if (!isIndependentBlock(R, BB))
|
||||
return false;
|
||||
|
||||
|
@ -525,8 +519,7 @@ bool IndependentBlocks::runOnFunction(llvm::Function &F) {
|
|||
|
||||
DEBUG(dbgs() << "Run IndepBlock on " << F.getName() << '\n');
|
||||
|
||||
for (ScopDetection::iterator I = SD->begin(), E = SD->end(); I != E; ++I) {
|
||||
const Region *R = *I;
|
||||
for (const Region *R : *SD) {
|
||||
Changed |= createIndependentBlocks(R);
|
||||
Changed |= eliminateDeadCode(R);
|
||||
// This may change the RegionTree.
|
||||
|
@ -536,8 +529,8 @@ bool IndependentBlocks::runOnFunction(llvm::Function &F) {
|
|||
DEBUG(dbgs() << "Before Scalar to Array------->\n");
|
||||
DEBUG(F.dump());
|
||||
|
||||
for (ScopDetection::iterator I = SD->begin(), E = SD->end(); I != E; ++I)
|
||||
Changed |= translateScalarToArray(*I);
|
||||
for (const Region *R : *SD)
|
||||
Changed |= translateScalarToArray(R);
|
||||
|
||||
DEBUG(dbgs() << "After Independent Blocks------------->\n");
|
||||
DEBUG(F.dump());
|
||||
|
@ -548,9 +541,8 @@ bool IndependentBlocks::runOnFunction(llvm::Function &F) {
|
|||
}
|
||||
|
||||
void IndependentBlocks::verifyAnalysis() const {
|
||||
for (ScopDetection::const_iterator I = SD->begin(), E = SD->end(); I != E;
|
||||
++I)
|
||||
verifyScop(*I);
|
||||
for (const Region *R : *SD)
|
||||
verifyScop(R);
|
||||
}
|
||||
|
||||
void IndependentBlocks::verifyScop(const Region *R) const {
|
||||
|
|
|
@ -147,8 +147,7 @@ static int getSingleMap(__isl_take isl_map *map, void *user) {
|
|||
}
|
||||
|
||||
void PlutoOptimizer::extendScattering(Scop &S, unsigned NewDimensions) {
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
ScopStmt *Stmt = *SI;
|
||||
for (ScopStmt *Stmt : S) {
|
||||
unsigned OldDimensions = Stmt->getNumScattering();
|
||||
isl_space *Space;
|
||||
isl_map *Map, *New;
|
||||
|
@ -183,8 +182,7 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
|
|||
ToPlutoNames = isl_union_map_empty(S.getParamSpace());
|
||||
|
||||
int counter = 0;
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
ScopStmt *Stmt = *SI;
|
||||
for (ScopStmt *Stmt : S) {
|
||||
std::string Name = "S_" + convertInt(counter);
|
||||
isl_map *Identity = isl_map_identity(isl_space_map_from_domain_and_range(
|
||||
Stmt->getDomainSpace(), Stmt->getDomainSpace()));
|
||||
|
@ -230,8 +228,7 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
|
|||
Schedule =
|
||||
isl_union_map_apply_domain(Schedule, isl_union_map_reverse(ToPlutoNames));
|
||||
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
ScopStmt *Stmt = *SI;
|
||||
for (ScopStmt *Stmt : S) {
|
||||
isl_set *Domain = Stmt->getDomain();
|
||||
isl_union_map *StmtBand;
|
||||
StmtBand = isl_union_map_intersect_domain(isl_union_map_copy(Schedule),
|
||||
|
@ -246,8 +243,8 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
|
|||
|
||||
unsigned MaxScatDims = 0;
|
||||
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI)
|
||||
MaxScatDims = std::max((*SI)->getNumScattering(), MaxScatDims);
|
||||
for (ScopStmt *Stmt : S)
|
||||
MaxScatDims = std::max(Stmt->getNumScattering(), MaxScatDims);
|
||||
|
||||
extendScattering(S, MaxScatDims);
|
||||
return false;
|
||||
|
|
|
@ -143,11 +143,9 @@ bool Pocc::runTransform(Scop &S) {
|
|||
if (!newScoplib.updateScattering()) {
|
||||
errs() << "Failure when calculating the optimization with "
|
||||
"the following command: ";
|
||||
for (std::vector<const char *>::const_iterator AI = arguments.begin(),
|
||||
AE = arguments.end();
|
||||
AI != AE; ++AI)
|
||||
if (*AI)
|
||||
errs() << " " << *AI;
|
||||
for (const char *Arg : arguments)
|
||||
if (Arg)
|
||||
errs() << " " << Arg;
|
||||
errs() << "\n";
|
||||
return false;
|
||||
} else
|
||||
|
@ -164,8 +162,8 @@ bool Pocc::runTransform(Scop &S) {
|
|||
while (lastLoop) {
|
||||
bool isSingleValued = true;
|
||||
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
isl_map *scat = (*SI)->getScattering();
|
||||
for (ScopStmt *Stmt : S) {
|
||||
isl_map *scat = Stmt->getScattering();
|
||||
isl_map *projected = isl_map_project_out(scat, isl_dim_out, lastLoop,
|
||||
scatterDims - lastLoop);
|
||||
|
||||
|
@ -182,9 +180,9 @@ bool Pocc::runTransform(Scop &S) {
|
|||
}
|
||||
|
||||
// Strip mine the innermost loop.
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
isl_map *scat = (*SI)->getScattering();
|
||||
int scatDims = (*SI)->getNumScattering();
|
||||
for (ScopStmt *Stmt : S) {
|
||||
isl_map *scat = Stmt->getScattering();
|
||||
int scatDims = Stmt->getNumScattering();
|
||||
isl_space *Space = isl_space_alloc(S.getIslCtx(), S.getNumParams(),
|
||||
scatDims, scatDims + 1);
|
||||
isl_basic_map *map = isl_basic_map_universe(isl_space_copy(Space));
|
||||
|
@ -227,7 +225,7 @@ bool Pocc::runTransform(Scop &S) {
|
|||
transform = isl_map_set_tuple_name(transform, isl_dim_in, "scattering");
|
||||
|
||||
scat = isl_map_apply_range(scat, isl_map_copy(transform));
|
||||
(*SI)->setScattering(scat);
|
||||
Stmt->setScattering(scat);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -245,11 +243,9 @@ void Pocc::printScop(raw_ostream &OS) const {
|
|||
|
||||
OS << "Command line: ";
|
||||
|
||||
for (std::vector<const char *>::const_iterator AI = arguments.begin(),
|
||||
AE = arguments.end();
|
||||
AI != AE; ++AI)
|
||||
if (*AI)
|
||||
OS << " " << *AI;
|
||||
for (const char *Arg : arguments)
|
||||
if (Arg)
|
||||
OS << " " << Arg;
|
||||
|
||||
OS << "\n";
|
||||
|
||||
|
|
|
@ -209,8 +209,7 @@ private:
|
|||
char IslScheduleOptimizer::ID = 0;
|
||||
|
||||
void IslScheduleOptimizer::extendScattering(Scop &S, unsigned NewDimensions) {
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
ScopStmt *Stmt = *SI;
|
||||
for (ScopStmt *Stmt : S) {
|
||||
unsigned OldDimensions = Stmt->getNumScattering();
|
||||
isl_space *Space;
|
||||
isl_map *Map, *New;
|
||||
|
@ -562,8 +561,7 @@ bool IslScheduleOptimizer::runOnScop(Scop &S) {
|
|||
|
||||
isl_union_map *ScheduleMap = getScheduleMap(Schedule);
|
||||
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
|
||||
ScopStmt *Stmt = *SI;
|
||||
for (ScopStmt *Stmt : S) {
|
||||
isl_map *StmtSchedule;
|
||||
isl_set *Domain = Stmt->getDomain();
|
||||
isl_union_map *StmtBand;
|
||||
|
@ -585,8 +583,8 @@ bool IslScheduleOptimizer::runOnScop(Scop &S) {
|
|||
|
||||
unsigned MaxScatDims = 0;
|
||||
|
||||
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI)
|
||||
MaxScatDims = std::max((*SI)->getNumScattering(), MaxScatDims);
|
||||
for (ScopStmt *Stmt : S)
|
||||
MaxScatDims = std::max(Stmt->getNumScattering(), MaxScatDims);
|
||||
|
||||
extendScattering(S, MaxScatDims);
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue