https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80304
Harald Anlauf <anlauf at gmx dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |anlauf at gmx dot de
--- Comment #14 from Harald Anlauf <anlauf at gmx dot de> ---
Further reduction:
module test_mod
implicit none
contains
pure real function add(i)
integer ,intent(in) :: i
add = i
end function
pure real function add2(i,j)
integer ,intent(in) :: i,j
add2 = i+j
end function
end module test_mod
program test
use test_mod
implicit none
integer :: i ,j
real :: a(0:1,0:1) ,b(0:1,0:1)
call sub ()
call sub ()
call sub ()
contains
subroutine sub ()
a = 0.
b = 0.
DO CONCURRENT( i=0:1 ,j=0:1)
a(i,j) = add(i)
b(i,j) = add2(i,j)
END DO
print*,sum(a),sum(b)
end subroutine sub
end program test
On i686-pc-linux-gnu:
% gfc-trunk -O1 -finline pr80304b.f90 && ./a.out
2.00000000 4.00000000
2.00000000 4.00000000
2.00000000 4.00000000
% gfc-trunk -O1 -fno-inline pr80304b.f90 && ./a.out
-4.86805248E+09 -4.86805248E+09
-4.86805248E+09 -4.86805248E+09
-4.86805248E+09 -4.86805248E+09
% gfc-trunk -O2 -fno-inline pr80304b.f90 && ./a.out
-4.86695731E+09 -4.86695731E+09
-3.25031117E+09 -3.25031117E+09
-3.27110272E+09 -3.27110272E+09
% gfc-trunk -O3 -fno-inline pr80304b.f90 && ./a.out
2.00000000 4.00000000
2.00000000 4.00000000
2.00000000 4.00000000