[flang-commits] [PATCH] D157335: [flang] Don't complain about implicitly-typed dummy arguments inherited into an IMPLICIT NONE submodule
Peter Klausler via Phabricator via flang-commits
flang-commits at lists.llvm.org
Mon Aug 7 14:52:25 PDT 2023
klausler created this revision.
klausler added a reviewer: PeteSteinfeld.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a reviewer: sscalpone.
Herald added a project: All.
klausler requested review of this revision.
When a module procedure's interface is defined in an ancestor (sub)module
with an implicitly typed dummy argument, don't emit a bogus error in
the separate module procedure later if its submodule has IMPLICIT NONE.
Fixes llvm-test-suite/Fortran/gfortran/regression/submodule_26.f90.
https://reviews.llvm.org/D157335
Files:
flang/lib/Semantics/resolve-names-utils.cpp
flang/test/Semantics/modproc02.f90
Index: flang/test/Semantics/modproc02.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/modproc02.f90
@@ -0,0 +1,27 @@
+!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s
+module m
+ interface
+ module subroutine s(x) ! implicitly typed
+ end
+ end interface
+end
+
+submodule (m) sm
+ implicit none
+ contains
+ !Ensure no error here due to IMPLICIT NONE
+ module procedure s
+ end
+end
+
+!CHECK: Module scope: m size=0 alignment=1 sourceRange=63 bytes
+!CHECK: s, MODULE, PUBLIC (Subroutine): Subprogram isInterface (REAL(4) x)
+!CHECK: sm: Module (m)
+!CHECK: Subprogram scope: s size=4 alignment=4 sourceRange=26 bytes
+!CHECK: s (Subroutine): HostAssoc
+!CHECK: x (Implicit) size=4 offset=0: ObjectEntity dummy type: REAL(4)
+!CHECK: Module scope: sm size=0 alignment=1 sourceRange=65 bytes
+!CHECK: s, MODULE, PUBLIC (Subroutine): Subprogram (REAL(4) x) moduleInterface: s, MODULE, PUBLIC (Subroutine): Subprogram isInterface (REAL(4) x)
+!CHECK: Subprogram scope: s size=4 alignment=4 sourceRange=22 bytes
+!CHECK: s: HostAssoc
+!CHECK: x size=4 offset=0: ObjectEntity dummy type: REAL(4)
Index: flang/lib/Semantics/resolve-names-utils.cpp
===================================================================
--- flang/lib/Semantics/resolve-names-utils.cpp
+++ flang/lib/Semantics/resolve-names-utils.cpp
@@ -917,6 +917,7 @@
if (!dummyArg) {
newDetails.add_alternateReturn();
} else if (Symbol *copy{newScope.CopySymbol(*dummyArg)}) {
+ copy->set(Symbol::Flag::Implicit, false);
newDetails.add_dummyArg(*copy);
mappings->symbolMap[dummyArg] = copy;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D157335.547957.patch
Type: text/x-patch
Size: 1724 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20230807/2888540c/attachment-0001.bin>
More information about the flang-commits
mailing list