[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