[Fortran] Disable front-end optimization for OpenACC atomic (PR93462)

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.
This commit is contained in:
Tobias Burnus 2020-01-31 15:54:21 +01:00
parent e60b1e2362
commit 6a97d9eae4
4 changed files with 34 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2020-01-31 Tobias Burnus <tobias@codesourcery.com>
PR fortran/93462
* frontend-passes.c (gfc_code_walker): For EXEC_OACC_ATOMIC, set
in_omp_atomic to true prevent front-end optimization.
2020-01-30 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
PR fortran/87103
@ -25,11 +31,11 @@
2020-01-28 Andrew Benson <abensonca@gmail.com>
PR fortran/93461
* trans.h: Increase GFC_MAX_MANGLED_SYMBOL_LEN to
GFC_MAX_SYMBOL_LEN*3+5 to allow for inclusion of submodule name,
plus the "." between module and submodule names.
* gfortran.dg/pr93461.f90: New test.
PR fortran/93461
* trans.h: Increase GFC_MAX_MANGLED_SYMBOL_LEN to
GFC_MAX_SYMBOL_LEN*3+5 to allow for inclusion of submodule name,
plus the "." between module and submodule names.
* gfortran.dg/pr93461.f90: New test.
2020-01-28 Andrew Benson <abensonca@gmail.com>

View file

@ -5258,6 +5258,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;

View file

@ -1,3 +1,8 @@
2020-01-31 Tobias Burnus <tobias@codesourcery.com>
PR fortran/93462
* gfortran.dg/goacc/atomic-1.f90: New.
2020-01-31 Tamar Christina <tamar.christina@arm.com>
PR rtl-optimization/91838

View file

@ -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