[flang-commits] [flang] [flang][OpenACC] Fix false DEFAULT(NONE) error for named DO loop construct names (PR #189204)

Eugene Epshteyn via flang-commits flang-commits at lists.llvm.org
Sat Mar 28 21:19:03 PDT 2026


https://github.com/eugeneepshteyn updated https://github.com/llvm/llvm-project/pull/189204

>From 3d010ae096dd37324432676b19de3eda55a1e130 Mon Sep 17 00:00:00 2001
From: Eugene Epshteyn <eepshteyn at nvidia.com>
Date: Sat, 28 Mar 2026 22:28:46 -0400
Subject: [PATCH] [flang][OpenACC] Fix false DEFAULT(NONE) error for named DO
 loop construct names

In OpenACC semantic checking filter out symbols with MiscDetails, which include
construct names, scope names, complex part designators, type parameter inquiries,
etc.
---
 flang/lib/Semantics/resolve-directives.cpp    | 2 +-
 flang/test/Semantics/OpenACC/acc-parallel.f90 | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp
index d5cfcabc319ab..fb241d2606b47 100644
--- a/flang/lib/Semantics/resolve-directives.cpp
+++ b/flang/lib/Semantics/resolve-directives.cpp
@@ -1833,7 +1833,7 @@ void AccAttributeVisitor::Post(const parser::Name &name) {
     const Symbol &symbol{name.symbol->GetUltimate()};
     if (!symbol.owner().IsDerivedType() && !symbol.has<ProcEntityDetails>() &&
         !symbol.has<SubprogramDetails>() && !IsObjectWithVisibleDSA(symbol) &&
-        !symbol.has<AssocEntityDetails>()) {
+        !symbol.has<AssocEntityDetails>() && !symbol.has<MiscDetails>()) {
       if (Symbol * found{currScope().FindSymbol(name.source)}) {
         if (&symbol != found) {
           // adjust the symbol within the region
diff --git a/flang/test/Semantics/OpenACC/acc-parallel.f90 b/flang/test/Semantics/OpenACC/acc-parallel.f90
index b3120e63ff6a1..a5a8890b63ff4 100644
--- a/flang/test/Semantics/OpenACC/acc-parallel.f90
+++ b/flang/test/Semantics/OpenACC/acc-parallel.f90
@@ -221,4 +221,11 @@ subroutine acc_parallel_default_none
   end do
   !$acc end parallel
   !$acc end data
+
+  ! Named DO loop construct name should not be flagged by default(none).
+  !$acc parallel loop firstprivate(l) copyin(a) default(none)
+  outer: do i = 1, l
+    a(1,i) = 1
+  end do outer
+  !$acc end parallel
 end subroutine acc_parallel_default_none



More information about the flang-commits mailing list