From 7f4aaf912bdab4fe3ccad012add9a1d00a26dab1 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sat, 12 Jul 2014 21:00:47 +0200 Subject: check.c (gfc_check_atomic): Update for STAT=. gcc/fortran/ 2014-07-12 Tobias Burnus * check.c (gfc_check_atomic): Update for STAT=. (gfc_check_atomic_def, gfc_check_atomic_ref): Update call. (gfc_check_atomic_op, gfc_check_atomic_cas, gfc_check_atomic_fetch_op): New. * gfortran.h (gfc_isym_id): GFC_ISYM_ATOMIC_CAS, * GFC_ISYM_ATOMIC_ADD, GFC_ISYM_ATOMIC_AND, GFC_ISYM_ATOMIC_OR, GFC_ISYM_ATOMIC_XOR, GFC_ISYM_ATOMIC_FETCH_ADD, GFC_ISYM_ATOMIC_FETCH_AND, GFC_ISYM_ATOMIC_FETCH_OR and GFC_ISYM_ATOMIC_FETCH_XOR. * intrinsic.c (add_subroutines): Handle them. * intrinsic.texi: Add documentation for them. (ATOMIC_REF, ATOMIC_DEFINE): Add STAT=. (ISO_FORTRAN_ENV): Add STAT_FAILED_IMAGE. * intrinsic.h (gfc_check_atomic_op, gfc_check_atomic_cas, gfc_check_atomic_fetch_op): New prototypes. * libgfortran.h (libgfortran_stat_codes): Add * GFC_STAT_FAILED_IMAGE. * iso-fortran-env.def: Add it. * trans-intrinsic.c (conv_intrinsic_atomic_op): Renamed from conv_intrinsic_atomic_ref; handle more atomics. (conv_intrinsic_atomic_def): Handle STAT=. (conv_intrinsic_atomic_cas): New. (gfc_conv_intrinsic_subroutine): Handle new atomics. gcc/testsuite/ 2014-07-12 Tobias Burnus * gfortran.dg/coarray_atomic_1.f90: Update dg-error. * gfortran.dg/coarray_atomic_2.f90: New. * gfortran.dg/coarray_atomic_3.f90: New. * gfortran.dg/coarray_atomic_4.f90: New. * gfortran.dg/coarray/atomic_2.f90: New. From-SVN: r212483 --- gcc/fortran/intrinsic.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'gcc/fortran/intrinsic.h') diff --git a/gcc/fortran/intrinsic.h b/gcc/fortran/intrinsic.h index 05cd146..9437171 100644 --- a/gcc/fortran/intrinsic.h +++ b/gcc/fortran/intrinsic.h @@ -38,8 +38,12 @@ bool gfc_check_allocated (gfc_expr *); bool gfc_check_associated (gfc_expr *, gfc_expr *); bool gfc_check_atan_2 (gfc_expr *, gfc_expr *); bool gfc_check_atan2 (gfc_expr *, gfc_expr *); -bool gfc_check_atomic_def (gfc_expr *, gfc_expr *); -bool gfc_check_atomic_ref (gfc_expr *, gfc_expr *); +bool gfc_check_atomic_cas (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *, + gfc_expr *); +bool gfc_check_atomic_def (gfc_expr *, gfc_expr *, gfc_expr *); +bool gfc_check_atomic_fetch_op (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *); +bool gfc_check_atomic_op (gfc_expr *, gfc_expr *, gfc_expr *); +bool gfc_check_atomic_ref (gfc_expr *, gfc_expr *, gfc_expr *); bool gfc_check_besn (gfc_expr *, gfc_expr *); bool gfc_check_bessel_n2 (gfc_expr *, gfc_expr *, gfc_expr *); bool gfc_check_bge_bgt_ble_blt (gfc_expr *, gfc_expr *); -- cgit v1.1