annotate gcc/testsuite/gfortran.dg/finalize_17.f90 @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +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/37336
kono
parents:
diff changeset
4 !
kono
parents:
diff changeset
5 ! Test for finalization of nonallocatable variables
kono
parents:
diff changeset
6 !
kono
parents:
diff changeset
7 module m
kono
parents:
diff changeset
8 implicit none
kono
parents:
diff changeset
9 type t
kono
parents:
diff changeset
10 integer :: i
kono
parents:
diff changeset
11 contains
kono
parents:
diff changeset
12 final :: finit
kono
parents:
diff changeset
13 end type t
kono
parents:
diff changeset
14 integer, save :: called_final = -1
kono
parents:
diff changeset
15 contains
kono
parents:
diff changeset
16 impure elemental subroutine finit(x)
kono
parents:
diff changeset
17 type(t), intent(in) :: x
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
18 if (called_final == -1) STOP 1
111
kono
parents:
diff changeset
19 called_final = called_final + 1
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
20 if (called_final /= x%i) STOP 2
111
kono
parents:
diff changeset
21 end subroutine finit
kono
parents:
diff changeset
22 end module m
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 use m
kono
parents:
diff changeset
25 implicit none
kono
parents:
diff changeset
26 type(t) :: x2, y2(2)
kono
parents:
diff changeset
27 block
kono
parents:
diff changeset
28 type(t) :: xx, yy(2)
kono
parents:
diff changeset
29 type(t), save :: x3, y3(2)
kono
parents:
diff changeset
30 yy%i = [1, 2]
kono
parents:
diff changeset
31 xx%i = 3
kono
parents:
diff changeset
32 y3%i = [-4, -5]
kono
parents:
diff changeset
33 x3%i = -6
kono
parents:
diff changeset
34 called_final = 0
kono
parents:
diff changeset
35 end block
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
36 if (called_final /= 3) STOP 1
111
kono
parents:
diff changeset
37 called_final = -1
kono
parents:
diff changeset
38 y2%i = [-7, -8]
kono
parents:
diff changeset
39 x2%i = -9
kono
parents:
diff changeset
40 end