1! RUN: %S/test_symbols.sh %s %t %flang_fc1
2! REQUIRES: shell
3! Explicit and implicit entities in blocks
4
5!DEF: /s1 (Subroutine) Subprogram
6subroutine s1
7 !DEF: /s1/x ObjectEntity INTEGER(4)
8 integer x
9 block
10  !DEF: /s1/Block1/y ObjectEntity INTEGER(4)
11  integer y
12  !REF: /s1/x
13  x = 1
14  !REF: /s1/Block1/y
15  y = 2.0
16 end block
17 block
18  !DEF: /s1/Block2/y ObjectEntity REAL(4)
19  real y
20  !REF: /s1/Block2/y
21  y = 3.0
22 end block
23end subroutine
24
25!DEF: /s2 (Subroutine) Subprogram
26subroutine s2
27 implicit integer(w-x)
28 block
29  !DEF: /s2/x (Implicit) ObjectEntity INTEGER(4)
30  x = 1
31  !DEF: /s2/y (Implicit) ObjectEntity REAL(4)
32  y = 2
33 end block
34contains
35 !DEF: /s2/s (Subroutine) Subprogram
36 subroutine s
37  !DEF: /s2/s/x (Implicit) HostAssoc INTEGER(4)
38  x = 1
39  !DEF: /s2/s/w (Implicit) ObjectEntity INTEGER(4)
40  w = 1
41 end subroutine
42end subroutine
43
44!DEF: /s3 (Subroutine) Subprogram
45subroutine s3
46 !DEF: /s3/j ObjectEntity INTEGER(8)
47 integer(kind=8) j
48 block
49  !DEF: /s3/Block1/t DerivedType
50  type :: t
51   !DEF: /s3/Block1/t/x ObjectEntity REAL(4)
52   !DEF: /s3/Block1/t/ImpliedDos1/ImpliedDos1/i (Implicit) ObjectEntity INTEGER(4)
53   real :: x(10) = [(i, i=1,10)]
54   !DEF: /s3/Block1/t/y ObjectEntity REAL(4)
55   !DEF: /s3/Block1/t/ImpliedDos2/ImpliedDos1/j ObjectEntity INTEGER(8)
56   real :: y(10) = [(j, j=1,10)]
57  end type
58 end block
59end subroutine
60
61!DEF: /s4 (Subroutine) Subprogram
62subroutine s4
63 implicit integer(x)
64 interface
65  !DEF: /s4/s EXTERNAL (Subroutine) Subprogram
66  !DEF: /s4/s/x (Implicit) ObjectEntity REAL(4)
67  !DEF: /s4/s/y (Implicit) ObjectEntity INTEGER(4)
68  subroutine s (x, y)
69   implicit integer(y)
70  end subroutine
71 end interface
72end subroutine
73
74!DEF: /s5 (Subroutine) Subprogram
75subroutine s5
76 block
77  !DEF: /s5/Block1/x (Implicit) ObjectEntity REAL(4)
78  dimension :: x(2)
79  block
80   !DEF: /s5/Block1/Block1/x (Implicit) ObjectEntity REAL(4)
81   dimension :: x(3)
82  end block
83 end block
84 !DEF: /s5/x (Implicit) ObjectEntity REAL(4)
85 x = 1.0
86end subroutine
87
88!DEF: /s6 (Subroutine) Subprogram
89subroutine s6
90  !DEF: /s6/i ObjectEntity INTEGER(4)
91  !DEF: /s6/j ObjectEntity INTEGER(4)
92  !DEF: /s6/k ObjectEntity INTEGER(4)
93  integer i, j, k
94  block
95    !DEF: /s6/Block1/i ASYNCHRONOUS, VOLATILE HostAssoc INTEGER(4)
96    volatile :: i
97    !DEF: /s6/Block1/j ASYNCHRONOUS HostAssoc INTEGER(4)
98    asynchronous :: j
99    !REF: /s6/Block1/i
100    asynchronous :: i
101    !DEF: /s6/Block1/k TARGET (Implicit) ObjectEntity INTEGER(4)
102    target :: k
103  end block
104end subroutine
105
106!DEF: /m7 Module
107module m7
108  !DEF: /m7/i PUBLIC ObjectEntity INTEGER(4)
109  !DEF: /m7/j PUBLIC ObjectEntity INTEGER(4)
110  integer i, j
111end module
112!DEF: /s7 (Subroutine) Subprogram
113subroutine s7
114  !REF: /m7
115  use :: m7
116  !DEF: /s7/j VOLATILE Use INTEGER(4)
117  volatile :: j
118end subroutine
119