| ! RUN: %flang_fc1 -fdebug-dump-symbols %s 2>&1 | FileCheck %s |
| |
| !CHECK: Module scope: m1 |
| !CHECK: i, PUBLIC size={{[0-9]+}} offset={{[0-9]+}}: ObjectEntity type: REAL({{[0-9]+}}) init:{{.+}} |
| !CHECK: init, PUBLIC (Subroutine): Subprogram () |
| !CHECK: o, PUBLIC (CrayPointee) size={{[0-9]+}} offset={{[0-9]+}}: ObjectEntity type: REAL({{[0-9]+}}) |
| !CHECK: ptr, PUBLIC (CrayPointer) size={{[0-9]+}} offset={{[0-9]+}}: ObjectEntity type: INTEGER({{[0-9]+}}) |
| module m1 |
| implicit none |
| real:: o |
| real:: i = 42.0 |
| pointer (ptr, o) |
| contains |
| !CHECK: Subprogram scope: init |
| subroutine init |
| implicit none |
| ptr=loc(i) |
| print *, "init : o= ", o |
| end subroutine init |
| end module m1 |
| |
| !CHECK: Module scope: m2 |
| !CHECK: i, PUBLIC: Use from i in m1 |
| !CHECK: i2, PUBLIC size={{[0-9]+}} offset={{[0-9]+}}: ObjectEntity type: REAL({{[0-9]+}}) init:{{.+}} |
| !CHECK: init, PUBLIC (Subroutine): Use from init in m1 |
| !CHECK: o, PUBLIC (CrayPointee): Use from o in m1 |
| !CHECK: ptr, PUBLIC (CrayPointer): Use from ptr in m1 |
| !CHECK: reset, PUBLIC (Subroutine): Subprogram () |
| module m2 |
| use m1 |
| implicit none |
| real:: i2 = 777.0 |
| contains |
| !CHECK: Subprogram scope: reset |
| !CHECK: o2 (CrayPointee) size={{[0-9]+}} offset={{[0-9]+}}: ObjectEntity type: REAL({{[0-9]+}}) |
| !CHECK: ptr (CrayPointer) size={{[0-9]+}} offset={{[0-9]+}}: ObjectEntity type: INTEGER({{[0-9]+}}) |
| subroutine reset |
| real::o2 |
| pointer (ptr, o2) |
| ptr=loc(i2) |
| print *, "reset : o= ", o, " o2 = ", o2 |
| o2 = 666.0 |
| end subroutine reset |
| end module m2 |
| |
| !CHECK: MainProgram scope: MAIN |
| !CHECK: i: Use from i in m2 |
| !CHECK: i2: Use from i2 in m2 |
| !CHECK: init (Subroutine): Use from init in m2 |
| !CHECK: o (CrayPointee): Use from o in m2 |
| !CHECK: ptr (CrayPointer): Use from ptr in m2 |
| !CHECK: reset (Subroutine): Use from reset in m2 |
| program main |
| use m2 |
| implicit none |
| call init |
| call reset |
| write(6,*) "main : o = ", o |
| if (o == 42.0) then |
| print *, "pass" |
| else |
| print *, "fail" |
| end if |
| end program main |