1! Check to ensure mask is calculated first in WHERE
2! statements.
3program where_18
4   integer :: a(4)
5   integer :: b(3)
6   integer :: c(3)
7   equivalence (a(1), b(1)), (a(2), c(1))
8
9   a = (/1, 1, 1, 1/)
10   where (b .eq. 1)
11     c = 2
12   elsewhere (b .eq. 2)
13     c = 3
14   endwhere
15   if (any (a .ne. (/1, 2, 2, 2/))) &
16     STOP 1
17
18   a = (/1, 1, 1, 1/)
19   where (c .eq. 1)
20     b = 2
21   elsewhere (b .eq. 2)
22     b = 3
23   endwhere
24   if (any (a .ne. (/2, 2, 2, 1/))) &
25     STOP 2
26end program
27