[flang-commits] [flang] [flang][OpenMP] Check DEFAULT(NONE) on metadirective loop variants (PR #210172)

Abid Qadeer via flang-commits flang-commits at lists.llvm.org
Fri Jul 24 02:14:08 PDT 2026


================
@@ -43,6 +42,157 @@ namespace Fortran::semantics {
 
 using namespace Fortran::semantics::omp;
 
+namespace {
+
+bool HasDefaultNone(const parser::OmpDirectiveSpecification &spec) {
+  using DataSharingAttribute = parser::OmpDefaultClause::DataSharingAttribute;
+  const parser::OmpClause *clause{
+      parser::omp::FindClause(spec, llvm::omp::Clause::OMPC_default)};
+  if (!clause) {
+    return false;
+  }
+  const auto &defaultClause{std::get<parser::OmpClause::Default>(clause->u)};
+  const auto *dsa{std::get_if<DataSharingAttribute>(&defaultClause.v.u)};
+  return dsa && *dsa == DataSharingAttribute::None;
+}
+
+bool HasStaticStorageDuration(const Symbol &symbol) {
+  const Symbol &ultimate{symbol.GetUltimate()};
+  return semantics::IsSaved(ultimate) ||
+      ultimate.test(Symbol::Flag::InCommonBlock);
+}
----------------
abidh wrote:

Thanks. The issue with same-name functions is resolved. In a future PR it would be great to have this share the same logic as the equivalent checks in resolve-directives.cpp and remove the duplication entirely.

https://github.com/llvm/llvm-project/pull/210172


More information about the flang-commits mailing list