Break circular dependency between FIR dialect and utilities
[llvm-project.git] / flang / test / Semantics / label15.f90
blob58b9184b893737f6579c99b8ea8d09721a27bf93
1 ! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
3 !CHECK-NOT: error:
4 module mm
5 interface
6 module subroutine m(n)
7 end
8 end interface
9 end module mm
11 program p
12 use mm
13 20 print*, 'p'
14 21 call p1
15 22 call p2
16 23 f0 = f(0); print '(f5.1)', f0
17 24 f1 = f(1); print '(f5.1)', f1
18 25 call s(0); call s(1)
19 26 call m(0); call m(1)
20 27 if (.false.) goto 29
21 28 print*, 'px'
22 contains
23 subroutine p1
24 print*, 'p1'
25 goto 29
26 29 end subroutine p1
27 subroutine p2
28 print*, 'p2'
29 goto 29
30 29 end subroutine p2
31 29 end
33 function f(n)
34 print*, 'f'
35 31 call f1
36 32 call f2
37 f = 30.
38 if (n == 0) goto 39
39 f = f + 3.
40 print*, 'fx'
41 contains
42 subroutine f1
43 print*, 'f1'
44 goto 39
45 39 end subroutine f1
46 subroutine f2
47 print*, 'f2'
48 goto 39
49 39 end subroutine f2
50 39 end
52 subroutine s(n)
53 print*, 's'
54 41 call s1
55 42 call s2
56 43 call s3
57 if (n == 0) goto 49
58 print*, 'sx'
59 contains
60 subroutine s1
61 print*, 's1'
62 goto 49
63 49 end subroutine s1
64 subroutine s2
65 print*, 's2'
66 goto 49
67 49 end subroutine s2
68 subroutine s3
69 print*, 's3'
70 goto 49
71 49 end subroutine s3
72 49 end
74 submodule(mm) mm1
75 contains
76 module procedure m
77 print*, 'm'
78 50 call m1
79 51 call m2
80 if (n == 0) goto 59
81 print*, 'mx'
82 contains
83 subroutine m1
84 print*, 'm1'
85 goto 59
86 59 end subroutine m1
87 subroutine m2
88 print*, 'm2'
89 goto 59
90 59 end subroutine m2
91 59 end procedure m
92 end submodule mm1