From: Tobias Burnus Date: Mon, 3 Feb 2020 11:09:46 +0000 (+0100) Subject: [Fortran] Disable front-end optimization for OpenACC atomic (PR93462) X-Git-Tag: releases/gcc-9.3.0~163 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5446f2201d93fc9adc913ed320aa70437ff4235;p=thirdparty%2Fgcc.git [Fortran] Disable front-end optimization for OpenACC atomic (PR93462) Backported from mainline 2020-01-31 Tobias Burnus PR fortran/93462 * frontend-passes.c (gfc_code_walker): For EXEC_OACC_ATOMIC, set in_omp_atomic to true prevent front-end optimization. PR fortran/93462 * gfortran.dg/goacc/atomic-1.f90: New. --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ec87cc9e6cf6..ca80c1bcd229 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2020-02-03 Tobias Burnus + + Backported from mainline + 2020-01-31 Tobias Burnus + + PR fortran/93462 + * frontend-passes.c (gfc_code_walker): For EXEC_OACC_ATOMIC, set + in_omp_atomic to true prevent front-end optimization. + 2020-02-03 Tobias Burnus Backported from mainline diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index 4bb6cbb5d74f..a6e710beb333 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -5260,6 +5260,7 @@ gfc_code_walker (gfc_code **c, walk_code_fn_t codefn, walk_expr_fn_t exprfn, WALK_SUBEXPR (co->ext.dt->extra_comma); break; + case EXEC_OACC_ATOMIC: case EXEC_OMP_ATOMIC: in_omp_atomic = true; break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0f8e75926659..e3610fd7429f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-02-03 Tobias Burnus + + Backported from mainline + 2020-01-31 Tobias Burnus + + PR fortran/93462 + * gfortran.dg/goacc/atomic-1.f90: New. + 2020-02-03 Tobias Burnus Backported from mainline diff --git a/gcc/testsuite/gfortran.dg/goacc/atomic-1.f90 b/gcc/testsuite/gfortran.dg/goacc/atomic-1.f90 new file mode 100644 index 000000000000..579f0494b783 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/atomic-1.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! PR fortran/93462 +! +! Contributed by G. Steinmetz +! +program p + integer :: n = 1 + integer :: a +!$acc atomic write + a = f(n) - f(n) +contains + integer function f(x) + integer, intent(in) :: x + f = x + end +end