Imported Upstream version 7.9
[platform/upstream/gdb.git] / gdb / testsuite / gdb.fortran / module.f90
1 ! Copyright 2009-2015 Free Software Foundation, Inc.
2
3 ! This program is free software; you can redistribute it and/or modify
4 ! it under the terms of the GNU General Public License as published by
5 ! the Free Software Foundation; either version 3 of the License, or
6 ! (at your option) any later version.
7
8 ! This program is distributed in the hope that it will be useful,
9 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 ! GNU General Public License for more details.
12
13 ! You should have received a copy of the GNU General Public License
14 ! along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 module mod1
17         integer :: var_i = 1
18         integer :: var_const
19         parameter (var_const = 20)
20 end module mod1
21
22 module mod2
23         integer :: var_i = 2
24 end module mod2
25
26 module mod3
27         integer :: mod2 = 3
28         integer :: mod1 = 3
29         integer :: var_i = 3
30 end module mod3
31
32 module modmany
33         integer :: var_a = 10, var_b = 11, var_c = 12, var_i = 14
34 end module modmany
35
36 module moduse
37         integer :: var_x = 30, var_y = 31
38 end module moduse
39
40         subroutine sub1
41         use mod1
42         if (var_i .ne. 1) call abort
43         var_i = var_i                         ! i-is-1
44         end
45
46         subroutine sub2
47         use mod2
48         if (var_i .ne. 2) call abort
49         var_i = var_i                         ! i-is-2
50         end
51
52         subroutine sub3
53         USE mod3
54         var_i = var_i                         ! i-is-3
55         END
56
57         program module
58
59         use modmany, only: var_b, var_d => var_c, var_i
60         use moduse, var_z => var_y
61
62         call sub1
63         call sub2
64         call sub3
65
66         if (var_b .ne. 11) call abort
67         if (var_d .ne. 12) call abort
68         if (var_i .ne. 14) call abort
69         if (var_x .ne. 30) call abort
70         if (var_z .ne. 31) call abort
71         var_b = var_b                         ! a-b-c-d
72 end