annotate gcc/testsuite/gfortran.dg/optional_absent_2.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 !
kono
parents:
diff changeset
3 ! PR fortran/51758
kono
parents:
diff changeset
4 !
kono
parents:
diff changeset
5 ! Contributed by Mikael Morin
kono
parents:
diff changeset
6 !
kono
parents:
diff changeset
7 ! Check whether passing NULL() to an elemental procedure works,
kono
parents:
diff changeset
8 ! where NULL() denotes an absent optional argument.
kono
parents:
diff changeset
9 !
kono
parents:
diff changeset
10 program p
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 integer :: a(2)
kono
parents:
diff changeset
13 integer :: b
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 a = 0
kono
parents:
diff changeset
16 a = foo((/ 1, 1 /), null())
kono
parents:
diff changeset
17 ! print *, a
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
18 if (any(a /= 2)) STOP 1
111
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 a = 0
kono
parents:
diff changeset
21 a = bar((/ 1, 1 /), null())
kono
parents:
diff changeset
22 ! print *, a
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
23 if (any(a /= 2)) STOP 2
111
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 b = 0
kono
parents:
diff changeset
26 b = bar(1, null())
kono
parents:
diff changeset
27 ! print *, b
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
28 if (b /= 2) STOP 3
111
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 contains
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 function foo(a, b)
kono
parents:
diff changeset
33 integer :: a(:)
kono
parents:
diff changeset
34 integer, optional :: b(:)
kono
parents:
diff changeset
35 integer :: foo(size(a))
kono
parents:
diff changeset
36
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
37 if (present(b)) STOP 4
111
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 foo = 2
kono
parents:
diff changeset
40 end function foo
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 elemental function bar(a, b)
kono
parents:
diff changeset
43 integer, intent(in) :: a
kono
parents:
diff changeset
44 integer, intent(in), optional :: b
kono
parents:
diff changeset
45 integer :: bar
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 bar = 2
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 if (present(b)) bar = 1
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 end function bar
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 end program p