where18.f90   [plain text]


! Check to ensure mask is calculated first in WHERE
! statements.
program where_18
   integer :: a(4)
   integer :: b(3)
   integer :: c(3)
   equivalence (a(1), b(1)), (a(2), c(1))

   a = (/1, 1, 1, 1/)
   where (b .eq. 1)
     c = 2
   elsewhere (b .eq. 2)
     c = 3
   endwhere
   if (any (a .ne. (/1, 2, 2, 2/))) &
     call abort

   a = (/1, 1, 1, 1/)
   where (c .eq. 1)
     b = 2
   elsewhere (b .eq. 2)
     b = 3
   endwhere
   if (any (a .ne. (/2, 2, 2, 1/))) &
     call abort
end program