From 74c49505d071e2d5d81a8b9e1708f35f81eab09d Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Wed, 28 Nov 2012 22:42:17 +0100 Subject: [PATCH] re PR fortran/52161 (Internal compiler errors with -fcheck=bounds in coarray tests) 2012-11-28 Tobias Burnus PR fortran/52161 * trans-stmt.c (gfc_trans_sync): Fix bound checking. 2012-11-28 Tobias Burnus PR fortran/52161 * coarray/sync_3.f90: New. From-SVN: r193908 --- gcc/fortran/ChangeLog | 5 ++ gcc/fortran/trans-stmt.c | 2 +- gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/gfortran.dg/coarray/sync_3.f90 | 68 ++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/coarray/sync_3.f90 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 + + PR fortran/52161 + * trans-stmt.c (gfc_trans_sync): Fix bound checking. + 2012-11-27 Tobias Burnus 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 + + PR fortran/52161 + * coarray/sync_3.f90: New. + 2012-11-28 Uros Bizjak * 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 -- 2.7.4