mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 22:06:06 +00:00
[flang] Don't complain about implicitly-typed dummy arguments inherited into an IMPLICIT NONE submodule
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. Differential Revision: https://reviews.llvm.org/D157335
This commit is contained in:
parent
d325c5d00b
commit
078b1c42f6
@ -917,6 +917,7 @@ void MapSubprogramToNewSymbols(const Symbol &oldSymbol, Symbol &newSymbol,
|
||||
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;
|
||||
}
|
||||
|
27
flang/test/Semantics/modproc02.f90
Normal file
27
flang/test/Semantics/modproc02.f90
Normal file
@ -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)
|
Loading…
x
Reference in New Issue
Block a user