1! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
2
3!CHECK-NOT: error:
4module mm
5   interface
6      module subroutine m(n)
7      end
8   end interface
9end module mm
10
11program p
12   use mm
1320 print*, 'p'
1421 call p1
1522 call p2
1623 f0 = f(0); print '(f5.1)', f0
1724 f1 = f(1); print '(f5.1)', f1
1825 call s(0); call s(1)
1926 call m(0); call m(1)
2027 if (.false.) goto 29
2128 print*, 'px'
22contains
23   subroutine p1
24      print*, 'p1'
25      goto 29
2629 end subroutine p1
27   subroutine p2
28      print*, 'p2'
29      goto 29
3029 end subroutine p2
3129 end
32
33function f(n)
34   print*, 'f'
3531 call f1
3632 call f2
37   f = 30.
38   if (n == 0) goto 39
39   f = f + 3.
40   print*, 'fx'
41contains
42   subroutine f1
43      print*, 'f1'
44      goto 39
4539 end subroutine f1
46   subroutine f2
47      print*, 'f2'
48      goto 39
4939 end subroutine f2
5039 end
51
52subroutine s(n)
53   print*, 's'
5441 call s1
5542 call s2
5643 call s3
57   if (n == 0) goto 49
58   print*, 'sx'
59contains
60   subroutine s1
61      print*, 's1'
62      goto 49
6349 end subroutine s1
64   subroutine s2
65      print*, 's2'
66      goto 49
6749 end subroutine s2
68   subroutine s3
69      print*, 's3'
70      goto 49
7149 end subroutine s3
7249 end
73
74submodule(mm) mm1
75contains
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
92end submodule mm1
93