1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
! PR fortran/34020 ! { dg-do run } subroutine atomic_add(lhs, rhs) real lhs, rhs !$omp atomic lhs = rhs + lhs end real lhs, rhs integer i lhs = 0 rhs = 1 !$omp parallel do num_threads(8) shared(lhs, rhs) do i = 1, 300000 call atomic_add(lhs, rhs) enddo if (lhs .ne. 300000) call abort end