| ! RUN: %python %S/test_symbols.py %s %flang_fc1 |
| ! Test the executable part skimming for apparent calls, to ensure that |
| ! symbols in nested scopes (BLOCK, &c.) properly shadow host symbols. |
| !DEF: /m Module |
| module m |
| end module |
| !DEF: /subr (Subroutine) Subprogram |
| !DEF: /subr/da INTENT(IN) ObjectEntity CLASS(*) |
| !DEF: /subr/ar INTENT(IN) ObjectEntity REAL(4) |
| subroutine subr (da, ar) |
| !REF: /subr/da |
| class(*), intent(in) :: da(:) |
| !REF: /subr/ar |
| real, intent(in) :: ar(..) |
| !DEF: /subr/s2 ObjectEntity REAL(4) |
| !DEF: /subr/s4 ObjectEntity REAL(4) |
| !DEF: /subr/s6 ObjectEntity REAL(4) |
| !DEF: /subr/s7 (Function) ProcEntity REAL(4) |
| !DEF: /subr/s8 ObjectEntity REAL(4) |
| real s2, s4, s6, s7, s8 |
| !DEF: /s1 EXTERNAL (Function, Implicit) ProcEntity REAL(4) |
| print *, s1(1) |
| block |
| !DEF: /subr/BlockConstruct1/s2 ObjectEntity INTEGER(4) |
| !DEF: /subr/BlockConstruct1/s5 (Function) ProcEntity INTEGER(4) |
| integer s2(10), s5 |
| !DEF: /subr/BlockConstruct1/s4 DerivedType |
| type :: s4 |
| !DEF: /subr/BlockConstruct1/s4/n ObjectEntity INTEGER(4) |
| integer :: n |
| end type |
| !REF: /subr/BlockConstruct1/s2 |
| print *, s2(1) |
| !DEF: /s3 EXTERNAL (Function, Implicit) ProcEntity REAL(4) |
| print *, s3(1) |
| !REF: /subr/BlockConstruct1/s4 |
| print *, s4(1) |
| !REF: /subr/BlockConstruct1/s5 |
| print *, s5(1) |
| end block |
| block |
| import, none |
| !DEF: /s2 EXTERNAL (Function, Implicit) ProcEntity REAL(4) |
| print *, s2(1) |
| end block |
| block |
| !REF: /subr/s6 |
| import, only: s6 |
| !DEF: /s8 EXTERNAL (Function, Implicit) ProcEntity REAL(4) |
| print *, s8(1) |
| end block |
| block |
| !REF: /m |
| use :: m |
| !REF: /subr/s7 |
| print *, s7(1) |
| end block |
| !DEF: /subr/OtherConstruct1/s2 AssocEntity REAL(4) |
| associate (s2 => [1.]) |
| !REF: /subr/OtherConstruct1/s2 |
| print *, s2(1) |
| end associate |
| !REF: /subr/da |
| select type (s2 => da) |
| type is (real) |
| !DEF: /subr/OtherConstruct2/s2 AssocEntity REAL(4) |
| print *, s2(1) |
| end select |
| !REF: /subr/ar |
| select rank (s2 => ar) |
| rank (1) |
| !DEF: /subr/OtherConstruct3/s2 AssocEntity REAL(4) |
| print *, s2(1) |
| end select |
| end subroutine |