[flang-commits] [flang] [flang] Ensure USE-associated objects can be in NAMELIST (PR #82846)

Peter Klausler via flang-commits flang-commits at lists.llvm.org
Fri Feb 23 15:56:24 PST 2024


https://github.com/klausler created https://github.com/llvm/llvm-project/pull/82846

The name resolution for NAMELIST objects didn't allow for symbols that are not ObjectEntityDetails symbols.

Fixes https://github.com/llvm/llvm-project/issues/82574.

>From e2a66d132c8f1befc84f2bbadd71606669e098b0 Mon Sep 17 00:00:00 2001
From: Peter Klausler <pklausler at nvidia.com>
Date: Fri, 23 Feb 2024 15:54:10 -0800
Subject: [PATCH] [flang] Ensure USE-associated objects can be in NAMELIST

The name resolution for NAMELIST objects didn't allow for
symbols that are not ObjectEntityDetails symbols.

Fixes https://github.com/llvm/llvm-project/issues/82574.
---
 flang/lib/Semantics/resolve-names.cpp | 2 +-
 flang/test/Semantics/namelist01.f90   | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index 36deab969456d0..0cbe0b492fa44a 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -6061,7 +6061,7 @@ void DeclarationVisitor::FinishNamelists() {
             if (!symbol) {
               symbol = &MakeSymbol(name, ObjectEntityDetails{});
               ApplyImplicitRules(*symbol);
-            } else if (!ConvertToObjectEntity(*symbol)) {
+            } else if (!ConvertToObjectEntity(symbol->GetUltimate())) {
               SayWithDecl(name, *symbol, "'%s' is not a variable"_err_en_US);
               context().SetError(*groupSymbol);
             }
diff --git a/flang/test/Semantics/namelist01.f90 b/flang/test/Semantics/namelist01.f90
index b14bf04ac91f90..b93d4b25550e33 100644
--- a/flang/test/Semantics/namelist01.f90
+++ b/flang/test/Semantics/namelist01.f90
@@ -11,6 +11,7 @@ subroutine C8103a(x)
   integer :: x
   !ERROR: 'dupname' is already declared in this scoping unit
   namelist /dupName/ x, x
+  namelist /nl/ uniquename ! ok
 end subroutine C8103a
 
 subroutine C8103b(y)



More information about the flang-commits mailing list