Files
clang-p2996/flang/test/Semantics/symbol02.f90
Tim Keith 38272f45fe [flang] Create HostAssoc symbols for uplevel references
To make it easier for lowering to identify which symbols from the host
are captured by internal subprograms, create HostAssocDetails for them.

In particular, if a symbol is referenced and it is contained in a
subprogram or main program that is not the same as the containing
program unit of the reference, a HostAssocDetails symbol is created
in the current scope.

Differential Revision: https://reviews.llvm.org/D84889
2020-07-30 07:12:26 -07:00

54 lines
1.0 KiB
Fortran

! RUN: %S/test_symbols.sh %s %t %f18
! Test host association in module subroutine and internal subroutine.
!DEF: /m Module
module m
!DEF: /m/t PUBLIC DerivedType
type :: t
end type
!REF: /m/t
!DEF: /m/x PUBLIC ObjectEntity TYPE(t)
type(t) :: x
interface
!DEF: /m/s3 MODULE, PUBLIC (Subroutine) Subprogram
!DEF: /m/s3/y ObjectEntity TYPE(t)
module subroutine s3(y)
!REF: /m/t
!REF: /m/s3/y
type(t) :: y
end subroutine
end interface
contains
!DEF: /m/s PUBLIC (Subroutine) Subprogram
subroutine s
!REF: /m/t
!DEF: /m/s/y ObjectEntity TYPE(t)
type(t) :: y
!REF: /m/s/y
!REF: /m/x
y = x
!DEF: /m/s/s (Subroutine) HostAssoc
call s
contains
!DEF: /m/s/s2 (Subroutine) Subprogram
subroutine s2
!REF: /m/x
!REF: /m/s/y
!REF: /m/t
!REF: /m/s/s
import, only: x, y, t, s
!REF: /m/t
!DEF: /m/s/s2/z ObjectEntity TYPE(t)
type(t) :: z
!REF: /m/s/s2/z
!REF: /m/x
z = x
!REF: /m/s/s2/z
!DEF: /m/s/s2/y HostAssoc TYPE(t)
z = y
!REF: /m/s/s
call s
end subroutine
end subroutine
end module