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