Peter Klausler 56c468474d
[flang] Suppress USEs of non-USE'able names in module files (#124980)
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.
2025-01-31 10:54:48 -08:00

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