diff --git a/flang/lib/Lower/OpenMP.cpp b/flang/lib/Lower/OpenMP.cpp --- a/flang/lib/Lower/OpenMP.cpp +++ b/flang/lib/Lower/OpenMP.cpp @@ -611,6 +611,21 @@ std::get_if(&clause.u)) { // Privatisation and copyin clauses are handled elsewhere. continue; + } else if (std::get_if(&clause.u)) { + // Shared is the default behavior in the IR, so no handling is required. + continue; + } else if (const auto &defaultClause = + std::get_if( + &clause.u)) { + if ((defaultClause->v.v == + Fortran::parser::OmpDefaultClause::Type::Shared) || + (defaultClause->v.v == + Fortran::parser::OmpDefaultClause::Type::None)) { + // Default clause with shared or none do not require any handling since + // Shared is the default behavior in the IR and None is only required + // for semantic checks. + continue; + } } else if (std::get_if(&clause.u)) { // Nothing needs to be done for threads clause. continue;