Index: polly/trunk/include/polly/ScopInfo.h =================================================================== --- polly/trunk/include/polly/ScopInfo.h +++ polly/trunk/include/polly/ScopInfo.h @@ -2678,14 +2678,14 @@ /// to be executed last, only that the incoming value is available in it. ScopStmt *getLastStmtFor(BasicBlock *BB) const; - /// Return the ScopStmt that represents the Region @p R, or nullptr if + /// Return the ScopStmts that represents the Region @p R, or nullptr if /// it is not represented by any statement in this Scop. - ScopStmt *getStmtFor(Region *R) const; + ArrayRef getStmtListFor(Region *R) const; - /// Return the ScopStmt that represents @p RN; can return nullptr if + /// Return the ScopStmts that represents @p RN; can return nullptr if /// the RegionNode is not within the SCoP or has been removed due to /// simplifications. - ScopStmt *getStmtFor(RegionNode *RN) const; + ArrayRef getStmtListFor(RegionNode *RN) const; /// Return the ScopStmt an instruction belongs to, or nullptr if it /// does not belong to any statement in this Scop. Index: polly/trunk/lib/Analysis/ScopInfo.cpp =================================================================== --- polly/trunk/lib/Analysis/ScopInfo.cpp +++ polly/trunk/lib/Analysis/ScopInfo.cpp @@ -4935,7 +4935,7 @@ auto &LoopData = LoopStack.back(); LoopData.NumBlocksProcessed += getNumBlocksInRegionNode(RN); - if (auto *Stmt = getStmtFor(RN)) { + for (auto *Stmt : getStmtListFor(RN)) { auto *UDomain = isl_union_set_from_set(Stmt->getDomain()); auto *StmtSchedule = isl_schedule_from_domain(UDomain); LoopData.Schedule = combineInSequence(LoopData.Schedule, StmtSchedule); @@ -4995,16 +4995,14 @@ return nullptr; } -ScopStmt *Scop::getStmtFor(RegionNode *RN) const { +ArrayRef Scop::getStmtListFor(RegionNode *RN) const { if (RN->isSubRegion()) - return getStmtFor(RN->getNodeAs()); - return getStmtFor(RN->getNodeAs()); + return getStmtListFor(RN->getNodeAs()); + return getStmtListFor(RN->getNodeAs()); } -ScopStmt *Scop::getStmtFor(Region *R) const { - ScopStmt *Stmt = getStmtFor(R->getEntry()); - assert(!Stmt || Stmt->getRegion() == R); - return Stmt; +ArrayRef Scop::getStmtListFor(Region *R) const { + return getStmtListFor(R->getEntry()); } int Scop::getRelativeLoopDepth(const Loop *L) const {