[flang-commits] [flang] [flang] Fix COMMON block lookup for ACC (PR #158325)

Eugene Epshteyn via flang-commits flang-commits at lists.llvm.org
Tue Sep 16 03:25:14 PDT 2025


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

>From ba6266c1934654a9f3cd43b7212cf332b17ccf98 Mon Sep 17 00:00:00 2001
From: Eugene Epshteyn <eepshteyn at nvidia.com>
Date: Fri, 12 Sep 2025 12:35:25 -0400
Subject: [PATCH 1/2] [flang] Fix COMMON block lookup for ACC

Do COMMON block lookups for ACC similarly to how OpenMP does it
(see 5198923c70bb5b91b07e15ce141339d778322635).
---
 flang/lib/Semantics/resolve-directives.cpp | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp
index 16b895d8259dd..eb74da5916420 100644
--- a/flang/lib/Semantics/resolve-directives.cpp
+++ b/flang/lib/Semantics/resolve-directives.cpp
@@ -1649,17 +1649,13 @@ void AccAttributeVisitor::Post(const parser::Name &name) {
 
 Symbol *AccAttributeVisitor::ResolveAccCommonBlockName(
     const parser::Name *name) {
-  if (auto *prev{name
-              ? GetContext().scope.parent().FindCommonBlock(name->source)
-              : nullptr}) {
-    name->symbol = prev;
-    return prev;
+  if (!name) {
+    return nullptr;
   }
-  // Check if the Common Block is declared in the current scope
-  if (auto *commonBlockSymbol{
-          name ? GetContext().scope.FindCommonBlock(name->source) : nullptr}) {
-    name->symbol = commonBlockSymbol;
-    return commonBlockSymbol;
+  if (auto *cb{GetProgramUnitOrBlockConstructContaining(GetContext().scope)
+                   .FindCommonBlock(name->source)}) {
+    name->symbol = cb;
+    return cb;
   }
   return nullptr;
 }

>From 81a7b384d32ed42e0475f8be94af4c0be91cb757 Mon Sep 17 00:00:00 2001
From: Eugene Epshteyn <eepshteyn at nvidia.com>
Date: Fri, 12 Sep 2025 12:38:02 -0400
Subject: [PATCH 2/2] clang-format

---
 flang/lib/Semantics/resolve-directives.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp
index eb74da5916420..a6eecd18867da 100644
--- a/flang/lib/Semantics/resolve-directives.cpp
+++ b/flang/lib/Semantics/resolve-directives.cpp
@@ -1653,7 +1653,7 @@ Symbol *AccAttributeVisitor::ResolveAccCommonBlockName(
     return nullptr;
   }
   if (auto *cb{GetProgramUnitOrBlockConstructContaining(GetContext().scope)
-                   .FindCommonBlock(name->source)}) {
+              .FindCommonBlock(name->source)}) {
     name->symbol = cb;
     return cb;
   }



More information about the flang-commits mailing list