| ! { dg-do run } |
| ! Tests the fix for pr32682, in which the scalarization loop variables |
| ! were not being determined when 'c' came first in an expression. |
| ! |
| ! Contributed by Janus Weil <jaydub66@gmail.com> |
| ! |
| program matrix |
| |
| implicit none |
| real,dimension(2,2),parameter::c=reshape((/1,2,3,4/),(/2,2/)) |
| real,dimension(2,2)::m, n |
| |
| m=f()+c |
| if (any (m .ne. reshape((/2,3,4,5/),(/2,2/)))) STOP 1 |
| m=c+f() |
| if (any (m .ne. reshape((/2,3,4,5/),(/2,2/)))) STOP 2 |
| call sub(m+f()) |
| if (any (n .ne. reshape((/3,4,5,6/),(/2,2/)))) STOP 3 |
| call sub(c+m) |
| if (any (n .ne. reshape((/3,5,7,9/),(/2,2/)))) STOP 4 |
| call sub(f()+c) |
| if (any (n .ne. reshape((/2,3,4,5/),(/2,2/)))) STOP 5 |
| call sub(c+f()) |
| if (any (n .ne. reshape((/2,3,4,5/),(/2,2/)))) STOP 6 |
| |
| contains |
| |
| function f() |
| implicit none |
| real, dimension(2,2)::f |
| f=1 |
| end function f |
| |
| subroutine sub(a) |
| implicit none |
| real, dimension(2,2)::a |
| n = a |
| end subroutine sub |
| |
| end program matrix |