diff options
author | Tobias Burnus <burnus@net-b.de> | 2012-11-28 22:42:17 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-11-28 22:42:17 +0100 |
commit | 74c49505d071e2d5d81a8b9e1708f35f81eab09d (patch) | |
tree | c54635fb4a56ad48342b35f88e7c39076ad69adf /gcc | |
parent | f4919e4a824372c70af64a80e16db4de995bdc3c (diff) | |
download | gcc-74c49505d071e2d5d81a8b9e1708f35f81eab09d.zip gcc-74c49505d071e2d5d81a8b9e1708f35f81eab09d.tar.gz gcc-74c49505d071e2d5d81a8b9e1708f35f81eab09d.tar.bz2 |
re PR fortran/52161 (Internal compiler errors with -fcheck=bounds in coarray tests)
2012-11-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52161
* trans-stmt.c (gfc_trans_sync): Fix bound checking.
2012-11-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52161
* coarray/sync_3.f90: New.
From-SVN: r193908
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-stmt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/coarray/sync_3.f90 | 68 |
4 files changed, 79 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index bc8d0d8..cc996fe 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2012-11-28 Tobias Burnus <burnus@net-b.de> + + PR fortran/52161 + * trans-stmt.c (gfc_trans_sync): Fix bound checking. + 2012-11-27 Tobias Burnus <burnus@net-b.de> PR fortran/55476 diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index bdc559b..0c88c4a 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -795,7 +795,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type) gfc_trans_runtime_check (true, false, cond, &se.pre, &code->expr1->where, "Invalid image number " "%d in SYNC IMAGES", - fold_convert (integer_type_node, se.expr)); + fold_convert (integer_type_node, images)); } /* Per F2008, 8.5.1, a SYNC MEMORY is implied by calling the diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 66a8762..76ce7ff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-28 Tobias Burnus <burnus@net-b.de> + + PR fortran/52161 + * coarray/sync_3.f90: New. + 2012-11-28 Uros Bizjak <ubizjak@gmail.com> * gcc.target/i386/pr55458.c: Require ia32 target instead of ilp32. diff --git a/gcc/testsuite/gfortran.dg/coarray/sync_3.f90 b/gcc/testsuite/gfortran.dg/coarray/sync_3.f90 new file mode 100644 index 0000000..ef5aa6c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray/sync_3.f90 @@ -0,0 +1,68 @@ +! { dg-do run } +! { dg-options "-fcheck=all" } +! +! As sync_1, but with bounds checking enabled. +! PR fortran/52161 +! +! Coarray support +! PR fortran/18918 + +implicit none +integer :: n +character(len=30) :: str +critical +end critical +myCr: critical +end critical myCr + +! +! Test SYNC ALL +! +sync all +sync all ( ) +sync all (errmsg=str) + +n = 5 +sync all (stat=n) +if (n /= 0) call abort() + +n = 5 +sync all (stat=n,errmsg=str) +if (n /= 0) call abort() + + +! +! Test SYNC MEMORY +! +sync memory +sync memory ( ) +sync memory (errmsg=str) + +n = 5 +sync memory (stat=n) +if (n /= 0) call abort() + +n = 5 +sync memory (errmsg=str,stat=n) +if (n /= 0) call abort() + + +! +! Test SYNC IMAGES +! +sync images (*) +if (this_image() == 1) then + sync images (1) + sync images (1, errmsg=str) + sync images ([1]) +end if + +n = 5 +sync images (*, stat=n) +if (n /= 0) call abort() + +n = 5 +sync images (*,errmsg=str,stat=n) +if (n /= 0) call abort() + +end |