summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/func_assign_2.f90
blob: e308375ef9da3c9143cfa70d21983268f13a8a3f (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
! { dg-do run }
! Test the fix for PR40551 in which the assignment
! was not dealing correctly with non-contiguous lhs
! references; eg. a(1,:)
!
! Reported by by Maciej Zwierzycki
! at http://gcc.gnu.org/ml/fortran/2009-06/msg00254.html
! and by Tobias Burnus <burnus@gcc.gnu.org> on Bugzilla
!
integer :: a(2,2)
a = -42
a(1,:) = func()
if (any (reshape (a, [4]) /= [1, -42, 2, -42])) call abort 
a = -42
a(2,:) = func()
if (any (reshape (a, [4]) /= [-42, 1, -42, 2])) call abort 
a = -42
a(:,1) = func()
if (any (reshape (a, [4]) /= [1, 2, -42, -42])) call abort 
a = -42
a(:,2) = func()
if (any (reshape (a, [4]) /= [-42, -42, 1, 2])) call abort 
contains
 function func()
   integer :: func(2)
   call sub(func)
 end function func
 subroutine sub(a)
   integer :: a(2)
   a = [1,2]
 end subroutine
end