annotate gcc/testsuite/gfortran.dg/pr69739.f90 @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 ! { dg-do run }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 !
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 ! Test the fix for PR69739 in which the statement
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 ! R = operate(A, X) caused an ICE.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 !
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 ! Contributed by John <jwmwalrus@gmail.com>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 !
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 module test
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 implicit none
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 type, public :: sometype
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 real :: a = 0.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 end type
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 contains
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 function dosomething(A) result(r)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 type(sometype), intent(IN) :: A(:,:,:)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 integer :: N
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 real, allocatable :: R(:), X(:)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 N = PRODUCT(UBOUND(A))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 allocate (R(N),X(N))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 X = [(real(N), N = 1, size(X, 1))]
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 R = operate(A, X)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 end function
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 function operate(A, X)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 type(sometype), intent(IN) :: A(:,:,:)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 real, intent(IN) :: X(:)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 real :: operate(1:PRODUCT(UBOUND(A)))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 operate = x
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 end function
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 end module test
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 use test
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 type(sometype) :: a(2, 2, 2)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 if (any(int (dosomething(a)) .ne. [1,2,3,4,5,6])) STOP 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 end