xref: /llvm-project/flang/test/Lower/module-and-internal-proc.f90 (revision 06f775a82f6f562f8de75053f62c9c0dbeaa67d2)
1! Test that module data access are lowered correctly in the different
2! procedure contexts.
3! RUN: bbc -emit-fir %s -o - | FileCheck %s
4
5module parent
6  integer :: i
7contains
8! Test simple access to the module data
9! CHECK-LABEL: func @_QMparentPtest1
10subroutine test1()
11  ! CHECK: fir.address_of(@_QMparentEi) : !fir.ref<i32>
12  print *, i
13end subroutine
14
15! Test access to the module data inside an internal procedure where the
16! host is defined inside the module.
17subroutine test2()
18  call test2internal()
19  contains
20  ! CHECK-LABEL: func private @_QMparentFtest2Ptest2internal()
21  subroutine test2internal()
22    ! CHECK: fir.address_of(@_QMparentEi) : !fir.ref<i32>
23    print *, i
24  end subroutine
25end subroutine
26end module
27
28! Test access to the module data inside an internal procedure where the
29! host is using the module.
30subroutine test3()
31  use parent
32  call test3internal()
33  contains
34  ! CHECK-LABEL: func private @_QFtest3Ptest3internal()
35  subroutine test3internal()
36    ! CHECK: fir.address_of(@_QMparentEi) : !fir.ref<i32>
37    print *, i
38  end subroutine
39end subroutine
40