Index: polly/trunk/lib/Analysis/PolyhedralInfo.cpp =================================================================== --- polly/trunk/lib/Analysis/PolyhedralInfo.cpp +++ polly/trunk/lib/Analysis/PolyhedralInfo.cpp @@ -126,25 +126,24 @@ DEBUG(dbgs() << "Relative loop depth:\t" << CurrDim << "\n"); assert(CurrDim >= 0 && "Loop in region should have at least depth one"); - for (auto *BB : L->blocks()) { - auto *SS = S->getStmtFor(BB); - if (!SS) - continue; - - unsigned int MaxDim = SS->getNumIterators(); - DEBUG(dbgs() << "Maximum depth of Stmt:\t" << MaxDim << "\n"); - auto *ScheduleMap = SS->getSchedule(); - assert(ScheduleMap && - "Schedules that contain extension nodes require special handling."); - - ScheduleMap = isl_map_project_out(ScheduleMap, isl_dim_out, CurrDim + 1, - MaxDim - CurrDim - 1); - ScheduleMap = - isl_map_set_tuple_id(ScheduleMap, isl_dim_in, SS->getDomainId()); - Schedule = - isl_union_map_union(Schedule, isl_union_map_from_map(ScheduleMap)); - } + for (auto &SS : *S) { + if (L->contains(SS.getSurroundingLoop())) { + unsigned int MaxDim = SS.getNumIterators(); + DEBUG(dbgs() << "Maximum depth of Stmt:\t" << MaxDim << "\n"); + auto *ScheduleMap = SS.getSchedule(); + assert( + ScheduleMap && + "Schedules that contain extension nodes require special handling."); + + ScheduleMap = isl_map_project_out(ScheduleMap, isl_dim_out, CurrDim + 1, + MaxDim - CurrDim - 1); + ScheduleMap = + isl_map_set_tuple_id(ScheduleMap, isl_dim_in, SS.getDomainId()); + Schedule = + isl_union_map_union(Schedule, isl_union_map_from_map(ScheduleMap)); + } + } Schedule = isl_union_map_coalesce(Schedule); return Schedule; }