3 ! PR 80304 - this used to give a wrong result.
4 ! Original test case by Chinoune
10 pure
real function add(i
,j
,k
)
11 integer ,intent(in
) :: i
,j
,k
15 pure
real function add2(i
,j
,k
)
16 integer ,intent(in
) :: i
,j
,k
20 subroutine check_err(a
, s
)
21 real, dimension(:,:), intent(in
) :: a
23 if (abs(sum(a
) - s
) > 1e-5) STOP 1
24 end subroutine check_err
33 real :: a(0:1,0:1) ,b(0:1,0:1)
35 ! first do-concurrent loop
38 DO CONCURRENT( i
=0:1 ,j
=0:1)
39 a(i
,j
) = add(i
,j
,abs(i
-j
))
40 b(i
,j
) = add2(i
,j
,abs(i
-j
))
42 call check_err (a
, 10.)
43 call check_err (b
, 6.)
50 a(i
,j
) = add(i
,j
,abs(i
-j
))
51 b(i
,j
) = add2(i
,j
,abs(i
-j
))
54 call check_err (a
, 10.)
55 call check_err (b
, 6.)
57 ! second do-concuurent loop
60 DO CONCURRENT( i
=0:1 ,j
=0:1)
61 a(i
,j
) = add(i
,j
,abs(i
-j
))
62 b(i
,j
) = add2(i
,j
,abs(i
-j
))
64 call check_err (a
, 10.)
65 call check_err (b
, 6.)