diff options
| -rw-r--r-- | polly/lib/Analysis/ScopGraphPrinter.cpp | 7 | ||||
| -rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 56 | ||||
| -rw-r--r-- | polly/lib/CodeGen/CodeGeneration.cpp | 10 | ||||
| -rw-r--r-- | polly/lib/CodeGen/Utils.cpp | 6 | ||||
| -rw-r--r-- | polly/lib/Support/ScopHelper.cpp | 10 | ||||
| -rw-r--r-- | polly/lib/Transform/IndependentBlocks.cpp | 68 | ||||
| -rw-r--r-- | polly/lib/Transform/Pluto.cpp | 13 | ||||
| -rw-r--r-- | polly/lib/Transform/Pocc.cpp | 28 | ||||
| -rw-r--r-- | polly/lib/Transform/ScheduleOptimizer.cpp | 10 |
9 files changed, 84 insertions, 124 deletions
diff --git a/polly/lib/Analysis/ScopGraphPrinter.cpp b/polly/lib/Analysis/ScopGraphPrinter.cpp index 607fe0c0498..992addeeb40 100644 --- a/polly/lib/Analysis/ScopGraphPrinter.cpp +++ b/polly/lib/Analysis/ScopGraphPrinter.cpp @@ -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; } diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 3951aef239a..abd865670db 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -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"; } diff --git a/polly/lib/CodeGen/CodeGeneration.cpp b/polly/lib/CodeGen/CodeGeneration.cpp index dd1aad9f2a4..9fba08bec87 100644 --- a/polly/lib/CodeGen/CodeGeneration.cpp +++ b/polly/lib/CodeGen/CodeGeneration.cpp @@ -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; diff --git a/polly/lib/CodeGen/Utils.cpp b/polly/lib/CodeGen/Utils.cpp index 3f58852c529..7eaac37f13c 100644 --- a/polly/lib/CodeGen/Utils.cpp +++ b/polly/lib/CodeGen/Utils.cpp @@ -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; } diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp index 182db20ab1d..3e3a5355d25 100644 --- a/polly/lib/Support/ScopHelper.cpp +++ b/polly/lib/Support/ScopHelper.cpp @@ -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); } } diff --git a/polly/lib/Transform/IndependentBlocks.cpp b/polly/lib/Transform/IndependentBlocks.cpp index daf958dec1e..aca71f31833 100644 --- a/polly/lib/Transform/IndependentBlocks.cpp +++ b/polly/lib/Transform/IndependentBlocks.cpp @@ -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 { diff --git a/polly/lib/Transform/Pluto.cpp b/polly/lib/Transform/Pluto.cpp index 9696d589876..4105679ba06 100644 --- a/polly/lib/Transform/Pluto.cpp +++ b/polly/lib/Transform/Pluto.cpp @@ -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; diff --git a/polly/lib/Transform/Pocc.cpp b/polly/lib/Transform/Pocc.cpp index a9d397c40d1..edf9114648e 100644 --- a/polly/lib/Transform/Pocc.cpp +++ b/polly/lib/Transform/Pocc.cpp @@ -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"; diff --git a/polly/lib/Transform/ScheduleOptimizer.cpp b/polly/lib/Transform/ScheduleOptimizer.cpp index 21fa47d2c60..f95a3b49a6a 100644 --- a/polly/lib/Transform/ScheduleOptimizer.cpp +++ b/polly/lib/Transform/ScheduleOptimizer.cpp @@ -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; |

