diff options
author | Tobias Burnus <burnus@net-b.de> | 2015-03-02 19:56:51 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2015-03-02 19:56:51 +0100 |
commit | bc81b5ce9b1b1433c29390c1179b14a0048fd615 (patch) | |
tree | 430ad9093a901be4e63fd18520d2810c008df5fa /gcc | |
parent | af5513e96b5539e4b3368050ba9064bb41b391f2 (diff) | |
download | gcc-bc81b5ce9b1b1433c29390c1179b14a0048fd615.zip gcc-bc81b5ce9b1b1433c29390c1179b14a0048fd615.tar.gz gcc-bc81b5ce9b1b1433c29390c1179b14a0048fd615.tar.bz2 |
check.c (gfc_check_atomic): Properly check for coarrayness and for being coindexed.
2015-03-02 Tobias Burnus <burnus@net-b.de>
* check.c (gfc_check_atomic): Properly check for coarrayness
and for being coindexed.
2015-03-02 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_atomic_6.f90: New.
From-SVN: r221122
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/check.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/coarray_atomic_6.f90 | 36 |
4 files changed, 46 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a693db8..e61ad02 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2015-03-02 Tobias Burnus <burnus@net-b.de> + + * check.c (gfc_check_atomic): Properly check for coarrayness + and for being coindexed. + 2015-02-26 Martin Liska <mliska@suse.cz> * resolve.c: Rename enum 'comparison' to 'compare_result' as diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 3be4fb1..cdb5ff1 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -1022,7 +1022,7 @@ gfc_check_atomic (gfc_expr *atom, int atom_no, gfc_expr *value, int val_no, return false; } - if (!gfc_expr_attr (atom).codimension) + if (!gfc_is_coarray (atom) && !gfc_is_coindexed (atom)) { gfc_error ("ATOM argument at %L of the %s intrinsic function shall be a " "coarray or coindexed", &atom->where, gfc_current_intrinsic); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 940bb13..9c4b587 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-03-02 Tobias Burnus <burnus@net-b.de> + + * gfortran.dg/coarray_atomic_6.f90: New. + 2015-03-02 Ilya Enkovich <ilya.enkovich@intel.com> PR target/65184 diff --git a/gcc/testsuite/gfortran.dg/coarray_atomic_6.f90 b/gcc/testsuite/gfortran.dg/coarray_atomic_6.f90 new file mode 100644 index 0000000..a0f19a8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_atomic_6.f90 @@ -0,0 +1,36 @@ +! { dg-do compile } +! { dg-options "-fcoarray=single" } +! +! Contributed by Reinhold Bader +! +! +program def_and_ref +! compile only + use, intrinsic :: iso_fortran_env + implicit none + type :: e + integer(kind=atomic_int_kind) :: ia = 0 + logical(kind=atomic_logical_kind) :: la = .false. + end type + + type(e) :: a[*] + + integer :: ival = 0 + logical :: lval = .false. + + if (this_image() == 1) then + call atomic_define(a[num_images()]%ia, 4) + call atomic_define(a[num_images()]%la, .true.) + end if + if (this_image() == num_images()) then + do while (ival == 0 .or. .not. lval) + call atomic_ref(ival, a%ia) + call atomic_ref(lval, a%la) + end do + if (ival == 4 .and. lval) then + write(*,*) 'OK' + else + write(*,*) 'FAIL: ival,lval =', ival, lval + end if + end if +end program |