@@ -3194,26 +3194,6 @@ class FirConverter : public Fortran::lower::AbstractConverter {
31943194 bool collapseForce = false ;
31953195 uint64_t collapseDepth = 1 ;
31963196 uint64_t loopCount = 1 ;
3197- auto parseCollapse = [&](const Fortran::parser::AccClauseList &cl)
3198- -> std::pair<bool , uint64_t > {
3199- bool force = false ;
3200- uint64_t depth = 1 ;
3201- for (const Fortran::parser::AccClause &clause : cl.v ) {
3202- if (const auto *collapseClause =
3203- std::get_if<Fortran::parser::AccClause::Collapse>(&clause.u )) {
3204- const Fortran::parser::AccCollapseArg &arg = collapseClause->v ;
3205- force = std::get<bool >(arg.t );
3206- const auto &intExpr =
3207- std::get<Fortran::parser::ScalarIntConstantExpr>(arg.t );
3208- if (const auto *expr = Fortran::semantics::GetExpr (intExpr)) {
3209- if (auto v = Fortran::evaluate::ToInt64 (*expr))
3210- depth = *v;
3211- }
3212- break ;
3213- }
3214- }
3215- return {force, depth};
3216- };
32173197
32183198 if (accLoop || accCombined) {
32193199 if (accLoop) {
@@ -3222,17 +3202,17 @@ class FirConverter : public Fortran::lower::AbstractConverter {
32223202 const Fortran::parser::AccClauseList &clauseList =
32233203 std::get<Fortran::parser::AccClauseList>(beginLoopDir.t );
32243204 loopCount = Fortran::lower::getLoopCountForCollapseAndTile (clauseList);
3225- collapseDepth = Fortran::lower::getLoopCountForCollapse (clauseList);
3226- std::tie (collapseForce, std::ignore) = parseCollapse (clauseList);
3205+ std::tie (collapseDepth, collapseForce) =
3206+ Fortran::lower::getCollapseSizeAndForce (clauseList);
32273207 } else if (accCombined) {
32283208 const Fortran::parser::AccBeginCombinedDirective &beginCombinedDir =
32293209 std::get<Fortran::parser::AccBeginCombinedDirective>(
32303210 accCombined->t );
32313211 const Fortran::parser::AccClauseList &clauseList =
32323212 std::get<Fortran::parser::AccClauseList>(beginCombinedDir.t );
32333213 loopCount = Fortran::lower::getLoopCountForCollapseAndTile (clauseList);
3234- collapseDepth = Fortran::lower::getLoopCountForCollapse (clauseList);
3235- std::tie (collapseForce, std::ignore) = parseCollapse (clauseList);
3214+ std::tie (collapseDepth, collapseForce) =
3215+ Fortran::lower::getCollapseSizeAndForce (clauseList);
32363216 }
32373217
32383218 if (curEval->lowerAsStructured ()) {
0 commit comments