annotate gcc/testsuite/gfortran.dg/submodule_10.f08 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do compile }
kono
parents:
diff changeset
2 ! { dg-require-visibility "" }
kono
parents:
diff changeset
3 !
kono
parents:
diff changeset
4 ! Checks that PRIVATE enities are visible to submodules.
kono
parents:
diff changeset
5 !
kono
parents:
diff changeset
6 ! Contributed by Salvatore Filippone <salvatore.filippone@uniroma2.it>
kono
parents:
diff changeset
7 !
kono
parents:
diff changeset
8 module const_mod
kono
parents:
diff changeset
9 integer, parameter :: ndig=8
kono
parents:
diff changeset
10 integer, parameter :: ipk_ = selected_int_kind(ndig)
kono
parents:
diff changeset
11 integer, parameter :: longndig=12
kono
parents:
diff changeset
12 integer, parameter :: long_int_k_ = selected_int_kind(longndig)
kono
parents:
diff changeset
13 integer, parameter :: mpik_ = kind(1)
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 integer(ipk_), parameter, public :: success_=0
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 end module const_mod
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 module error_mod
kono
parents:
diff changeset
21 use const_mod
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 integer(ipk_), parameter, public :: act_ret_=0
kono
parents:
diff changeset
24 integer(ipk_), parameter, public :: act_print_=1
kono
parents:
diff changeset
25 integer(ipk_), parameter, public :: act_abort_=2
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 integer(ipk_), parameter, public :: no_err_ = 0
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 public error, errcomm, get_numerr, &
kono
parents:
diff changeset
30 & error_handler, &
kono
parents:
diff changeset
31 & ser_error_handler, par_error_handler
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 interface error_handler
kono
parents:
diff changeset
35 module subroutine ser_error_handler(err_act)
kono
parents:
diff changeset
36 integer(ipk_), intent(inout) :: err_act
kono
parents:
diff changeset
37 end subroutine ser_error_handler
kono
parents:
diff changeset
38 module subroutine par_error_handler(ictxt,err_act)
kono
parents:
diff changeset
39 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
40 integer(ipk_), intent(in) :: err_act
kono
parents:
diff changeset
41 end subroutine par_error_handler
kono
parents:
diff changeset
42 end interface
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 interface error
kono
parents:
diff changeset
45 module subroutine serror()
kono
parents:
diff changeset
46 end subroutine serror
kono
parents:
diff changeset
47 module subroutine perror(ictxt,abrt)
kono
parents:
diff changeset
48 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
49 logical, intent(in), optional :: abrt
kono
parents:
diff changeset
50 end subroutine perror
kono
parents:
diff changeset
51 end interface
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 interface error_print_stack
kono
parents:
diff changeset
55 module subroutine par_error_print_stack(ictxt)
kono
parents:
diff changeset
56 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
57 end subroutine par_error_print_stack
kono
parents:
diff changeset
58 module subroutine ser_error_print_stack()
kono
parents:
diff changeset
59 end subroutine ser_error_print_stack
kono
parents:
diff changeset
60 end interface
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 interface errcomm
kono
parents:
diff changeset
63 module subroutine errcomm(ictxt, err)
kono
parents:
diff changeset
64 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
65 integer(ipk_), intent(inout):: err
kono
parents:
diff changeset
66 end subroutine errcomm
kono
parents:
diff changeset
67 end interface errcomm
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 private
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 type errstack_node
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 integer(ipk_) :: err_code=0
kono
parents:
diff changeset
75 character(len=20) :: routine=''
kono
parents:
diff changeset
76 integer(ipk_),dimension(5) :: i_err_data=0
kono
parents:
diff changeset
77 character(len=40) :: a_err_data=''
kono
parents:
diff changeset
78 type(errstack_node), pointer :: next
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 end type errstack_node
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 type errstack
kono
parents:
diff changeset
84 type(errstack_node), pointer :: top => null()
kono
parents:
diff changeset
85 integer(ipk_) :: n_elems=0
kono
parents:
diff changeset
86 end type errstack
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 type(errstack), save :: error_stack
kono
parents:
diff changeset
90 integer(ipk_), save :: error_status = no_err_
kono
parents:
diff changeset
91 integer(ipk_), save :: verbosity_level = 1
kono
parents:
diff changeset
92 integer(ipk_), save :: err_action = act_abort_
kono
parents:
diff changeset
93 integer(ipk_), save :: debug_level = 0, debug_unit, serial_debug_level=0
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 contains
kono
parents:
diff changeset
96 end module error_mod
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 submodule (error_mod) error_impl_mod
kono
parents:
diff changeset
99 use const_mod
kono
parents:
diff changeset
100 contains
kono
parents:
diff changeset
101 ! checks whether an error has occurred on one of the processes in the execution pool
kono
parents:
diff changeset
102 subroutine errcomm(ictxt, err)
kono
parents:
diff changeset
103 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
104 integer(ipk_), intent(inout):: err
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 end subroutine errcomm
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 subroutine ser_error_handler(err_act)
kono
parents:
diff changeset
110 implicit none
kono
parents:
diff changeset
111 integer(ipk_), intent(inout) :: err_act
kono
parents:
diff changeset
112
kono
parents:
diff changeset
113 if (err_act /= act_ret_) &
kono
parents:
diff changeset
114 & call error()
kono
parents:
diff changeset
115 if (err_act == act_abort_) stop
kono
parents:
diff changeset
116
kono
parents:
diff changeset
117 return
kono
parents:
diff changeset
118 end subroutine ser_error_handler
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 subroutine par_error_handler(ictxt,err_act)
kono
parents:
diff changeset
121 implicit none
kono
parents:
diff changeset
122 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
123 integer(ipk_), intent(in) :: err_act
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 if (err_act == act_print_) &
kono
parents:
diff changeset
126 & call error(ictxt, abrt=.false.)
kono
parents:
diff changeset
127 if (err_act == act_abort_) &
kono
parents:
diff changeset
128 & call error(ictxt, abrt=.true.)
kono
parents:
diff changeset
129
kono
parents:
diff changeset
130 return
kono
parents:
diff changeset
131
kono
parents:
diff changeset
132 end subroutine par_error_handler
kono
parents:
diff changeset
133
kono
parents:
diff changeset
134 subroutine par_error_print_stack(ictxt)
kono
parents:
diff changeset
135 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
136
kono
parents:
diff changeset
137 call error(ictxt, abrt=.false.)
kono
parents:
diff changeset
138
kono
parents:
diff changeset
139 end subroutine par_error_print_stack
kono
parents:
diff changeset
140
kono
parents:
diff changeset
141 subroutine ser_error_print_stack()
kono
parents:
diff changeset
142
kono
parents:
diff changeset
143 call error()
kono
parents:
diff changeset
144 end subroutine ser_error_print_stack
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 subroutine serror()
kono
parents:
diff changeset
147
kono
parents:
diff changeset
148 implicit none
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 end subroutine serror
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 subroutine perror(ictxt,abrt)
kono
parents:
diff changeset
153 use const_mod
kono
parents:
diff changeset
154 implicit none
kono
parents:
diff changeset
155 integer(mpik_), intent(in) :: ictxt
kono
parents:
diff changeset
156 logical, intent(in), optional :: abrt
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 end subroutine perror
kono
parents:
diff changeset
159
kono
parents:
diff changeset
160 end submodule error_impl_mod
kono
parents:
diff changeset
161
kono
parents:
diff changeset
162 program testlk
kono
parents:
diff changeset
163 use error_mod
kono
parents:
diff changeset
164 implicit none
kono
parents:
diff changeset
165
kono
parents:
diff changeset
166 call error()
kono
parents:
diff changeset
167
kono
parents:
diff changeset
168 stop
kono
parents:
diff changeset
169 end program testlk