Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / gfortran.dg / stfunc_4.f90
blobe995fb86becfadd8bb35be640ec4d7eadd4394b2
1 ! { dg-do run }
2 ! Tests the fix for PR29389, in which the statement function would not be
3 ! recognised as PURE within a PURE procedure.
5 ! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
7 INTEGER :: st1, i = 99, a(4), q = 6
8 st1 (i) = i * i * i
9 FORALL(i=1:4) a(i) = st1 (i)
10 FORALL(i=1:4) a(i) = u (a(i)) - a(i)** 2
11 if (any (a .ne. 0)) call abort ()
12 if (i .ne. 99) call abort ()
13 contains
14 pure integer function u (x)
15 integer,intent(in) :: x
16 st2 (i) = i * i
17 u = st2(x)
18 end function
19 end