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

Reply via email to