annotate gcc/testsuite/gfortran.dg/assumed_size_refs_1.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 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 !==================assumed_size_refs_1.f90==================
kono
parents:
diff changeset
2 ! { dg-do compile }
kono
parents:
diff changeset
3 ! Test the fix for PR25029, PR21256 in which references to
kono
parents:
diff changeset
4 ! assumed size arrays without an upper bound to the last
kono
parents:
diff changeset
5 ! dimension were generating no error. The first version of
kono
parents:
diff changeset
6 ! the patch failed in DHSEQR, as pointed out by Toon Moene
kono
parents:
diff changeset
7 ! in http://gcc.gnu.org/ml/fortran/2005-12/msg00466.html
kono
parents:
diff changeset
8 !
kono
parents:
diff changeset
9 ! Contributed by Paul Thomas <pault@gcc.gnu.org>
kono
parents:
diff changeset
10 !
kono
parents:
diff changeset
11 program assumed_size_test_1
kono
parents:
diff changeset
12 implicit none
kono
parents:
diff changeset
13 real a(2, 4)
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 a = 1.0
kono
parents:
diff changeset
16 call foo (a)
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 contains
kono
parents:
diff changeset
19 subroutine foo(m)
kono
parents:
diff changeset
20 real, target :: m(1:2, *)
kono
parents:
diff changeset
21 real x(2,2,2)
kono
parents:
diff changeset
22 real, external :: bar
kono
parents:
diff changeset
23 real, pointer :: p(:,:), q(:,:)
kono
parents:
diff changeset
24 allocate (q(2,2))
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 ! PR25029
kono
parents:
diff changeset
27 p => m ! { dg-error "upper bound in the last dimension" }
kono
parents:
diff changeset
28 q = m ! { dg-error "upper bound in the last dimension" }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 ! PR21256( and PR25060)
kono
parents:
diff changeset
31 m = 1 ! { dg-error "upper bound in the last dimension" }
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 m(1,1) = 2.0
kono
parents:
diff changeset
34 x = bar (m)
kono
parents:
diff changeset
35 x = fcn (m) ! { dg-error "upper bound in the last dimension" }
kono
parents:
diff changeset
36 m(:, 1:2) = fcn (q)
kono
parents:
diff changeset
37 call sub (m, x) ! { dg-error "upper bound in the last dimension" }
kono
parents:
diff changeset
38 call sub (m(1:2, 1:2), x) ! { dg-error "Incompatible ranks in elemental procedure" }
kono
parents:
diff changeset
39 print *, p
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 call DHSEQR(x)
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 end subroutine foo
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 elemental function fcn (a) result (b)
kono
parents:
diff changeset
46 real, intent(in) :: a
kono
parents:
diff changeset
47 real :: b
kono
parents:
diff changeset
48 b = 2.0 * a
kono
parents:
diff changeset
49 end function fcn
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 elemental subroutine sub (a, b)
kono
parents:
diff changeset
52 real, intent(inout) :: a, b
kono
parents:
diff changeset
53 b = 2.0 * a
kono
parents:
diff changeset
54 end subroutine sub
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 SUBROUTINE DHSEQR( WORK )
kono
parents:
diff changeset
57 REAL WORK( * )
kono
parents:
diff changeset
58 EXTERNAL DLARFX
kono
parents:
diff changeset
59 INTRINSIC MIN
kono
parents:
diff changeset
60 WORK( 1 ) = 1.0
kono
parents:
diff changeset
61 CALL DLARFX( MIN( 1, 8 ), WORK )
kono
parents:
diff changeset
62 END SUBROUTINE DHSEQR
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 end program assumed_size_test_1