blob: dfa0e068958567287fae7faa0c876201a1dc13fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
! { dg-do run }
!
! Test the fix for PR86328 in which temporaries were not being
! assigned for array component references.
!
! Contributed by Martin <mscfd@gmx.net>
!
program ptr_alloc
type :: t
class(*), allocatable :: val
end type
type :: list
type(t), dimension(:), pointer :: ll
end type
integer :: i
type(list) :: a
allocate(a%ll(1:2))
do i = 1,2
allocate(a%ll(i)%val, source=i)
end do
do i = 1,2
call rrr(a, i)
end do
do i = 1,2
deallocate(a%ll(i)%val)
end do
deallocate (a%ll)
contains
subroutine rrr(a, i)
type(list), intent(in) :: a
class(*), allocatable :: c
integer :: i
allocate(c, source=a%ll(i)%val)
select type (c)
type is (integer)
if (c .ne. i) stop 1
end select
end subroutine
end
|