1! { dg-do compile }
2! Verify that the compiler accepts the various legal combinations of
3! using construct names.
4!
5! The correct behavior of EXIT and CYCLE is already established in
6! the various DO related testcases, they're included here for
7! completeness.
8       dimension a(5)
9       i = 0
10       ! construct name is optional on else clauses
11       ia: if (i > 0) then
12          i = 1
13       else
14          i = 2
15       end if ia
16       ib: if (i < 0) then
17          i = 3
18       else ib
19          i = 4
20       end if ib
21       ic: if (i < 0) then
22          i = 5
23       else if (i == 0) then ic
24          i = 6
25       else if (i == 1) then
26          i =7
27       else if (i == 2) then ic
28          i = 8
29       end if ic
30
31       fa: forall (i=1:5, a(i) > 0)
32          a(i) = 9
33       end forall fa
34
35       wa: where (a > 0)
36          a = -a
37       elsewhere
38          wb: where (a == 0)
39             a = a + 1.
40          elsewhere wb
41             a = 2*a
42          end where wb
43       end where wa
44
45       j = 1
46       sa: select case (i)
47          case (1)
48             i = 2
49          case (2) sa
50             i = 3
51          case default sa
52             sb: select case (j)
53                case (1) sb
54                   i = j
55                case default
56                   j = i
57             end select sb
58       end select sa
59
60       da: do i=1,10
61          cycle da
62          cycle
63          exit da
64          exit
65          db: do
66             cycle da
67             cycle db
68             cycle
69             exit da
70             exit db
71             exit
72             j = i+1
73          end do db
74          dc: do while (j>0)
75             j = j-1
76          end do dc
77       end do da
78end
79