mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 03:46:46 +00:00

When harvesting and formatting symbols USE'd from other modules, don't emit USE statements to module files for names unless they come from the topmost scope of the module. There was a check to prevent names from derived type scopes from escaping in this way, but it must be made more general to prevent other cases like dummy arguments in interfaces. Fixes https://github.com/llvm/llvm-project/issues/124716.
37 lines
716 B
Fortran
37 lines
716 B
Fortran
! RUN: %python %S/test_modfile.py %s %flang_fc1
|
|
MODULE m1
|
|
INTERFACE
|
|
MODULE SUBROUTINE sub1(N, ARR)
|
|
INTEGER, INTENT(IN) :: N
|
|
INTEGER, DIMENSION(N) :: ARR
|
|
END SUBROUTINE
|
|
END INTERFACE
|
|
END MODULE
|
|
SUBMODULE (m1) m1sub
|
|
CONTAINS
|
|
MODULE SUBROUTINE sub1(N, ARR)
|
|
INTEGER, INTENT(IN) :: N
|
|
INTEGER, DIMENSION(N) :: ARR
|
|
PRINT *, "sub1", N, ARR
|
|
END SUBROUTINE
|
|
END SUBMODULE
|
|
|
|
!Expect: m1.mod
|
|
!module m1
|
|
!interface
|
|
!module subroutine sub1(n,arr)
|
|
!integer(4),intent(in)::n
|
|
!integer(4)::arr(1_8:int(n,kind=8))
|
|
!end
|
|
!end interface
|
|
!end
|
|
|
|
!Expect: m1-m1sub.mod
|
|
!submodule(m1) m1sub
|
|
!contains
|
|
!module subroutine sub1(n,arr)
|
|
!integer(4),intent(in)::n
|
|
!integer(4)::arr(1_8:int(n,kind=8))
|
|
!end
|
|
!end
|