1! { dg-do run }
2! Tests the fix for PR33686, in which dependencies were not
3! correctly handled for the assignments below.
4!
5! Contributed by Dick Hendrickson on comp.lang.fortran,
6! " Most elegant syntax for inverting a permutation?" 20071006
7!
8! Test the fix for PR36091 as well...
9! { dg-options "-fbounds-check" }
10!
11  integer :: p(4) = (/2,4,1,3/)
12  forall (i = 1:4) p(p(i)) = i                ! This was the original
13  if (any (p .ne. (/3,1,4,2/))) call abort ()
14
15  forall (i = 1:4) p(5 - p(i)) = p(5 - i)     ! This is a more complicated version
16  if (any (p .ne. (/1,2,3,4/))) call abort ()
17end
18