annotate gcc/testsuite/gfortran.dg/allocate_with_source_17.f03 @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do compile }
kono
parents:
diff changeset
2 !
kono
parents:
diff changeset
3 ! Tests the fix for PR67564 in which allocate with source for an unlimited
kono
parents:
diff changeset
4 ! polymorphic array and a character source would ICE.
kono
parents:
diff changeset
5 !
kono
parents:
diff changeset
6 ! Contributed by Neil Carlson <neil.n.carlson@gmail.com>
kono
parents:
diff changeset
7 !
kono
parents:
diff changeset
8 program main
kono
parents:
diff changeset
9 type :: any_vector
kono
parents:
diff changeset
10 class(*), allocatable :: x(:)
kono
parents:
diff changeset
11 end type
kono
parents:
diff changeset
12 type(any_vector) :: a
kono
parents:
diff changeset
13 character(kind = 1, len = 5) :: chr1(3) = ["one ","two ","three"]
kono
parents:
diff changeset
14 character(kind = 4, len = 2) :: chr4(2) = [character(kind=4) :: 4_"ab", 4_"cd"]
kono
parents:
diff changeset
15 real(8) :: r(2) = [1d0,2d0]
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 allocate (a%x(3), source = chr1)
kono
parents:
diff changeset
18 call check
kono
parents:
diff changeset
19 allocate (a%x(2), source = chr4)
kono
parents:
diff changeset
20 call check
kono
parents:
diff changeset
21 allocate (a%x(2), source = r)
kono
parents:
diff changeset
22 call check
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 contains
kono
parents:
diff changeset
25 subroutine check
kono
parents:
diff changeset
26 select type (z => a%x)
kono
parents:
diff changeset
27 type is (real(8))
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
28 if (any (z .ne. r)) STOP 1
111
kono
parents:
diff changeset
29 type is (character(kind = 1, len = *))
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
30 if (any(z .ne. chr1)) STOP 2
111
kono
parents:
diff changeset
31 type is (character(kind = 4, len = *))
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
32 if (any(z .ne. chr4)) STOP 3
111
kono
parents:
diff changeset
33 end select
kono
parents:
diff changeset
34 deallocate (a%x)
kono
parents:
diff changeset
35 end subroutine
kono
parents:
diff changeset
36 end program