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

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


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-openacc

@llvm/pr-subscribers-flang-semantics

Author: Eugene Epshteyn (eugeneepshteyn)

<details>
<summary>Changes</summary>

In OpenACC semantic checking filter out symbols with MiscDetails, which include construct names, scope names, complex part designators, type parameter inquiries, etc.

---
Full diff: https://github.com/llvm/llvm-project/pull/189204.diff


2 Files Affected:

- (modified) flang/lib/Semantics/resolve-directives.cpp (+1-1) 
- (modified) flang/test/Semantics/OpenACC/acc-parallel.f90 (+7) 


``````````diff
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

``````````

</details>


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


More information about the flang-commits mailing list