aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-11-29 09:43:48 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-11-29 09:43:48 +0100
commit45d5889a070819486a619ca2a2664c186537cb40 (patch)
tree9e247937530a52ba5d7580a0001818b5a24a5350 /gcc
parent2bc462ea547599dfa89c09075047bd27c76f576a (diff)
downloadgcc-45d5889a070819486a619ca2a2664c186537cb40.zip
gcc-45d5889a070819486a619ca2a2664c186537cb40.tar.gz
gcc-45d5889a070819486a619ca2a2664c186537cb40.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 for -fcoarray=lib. 2012-11-28 Tobias Burnus <burnus@net-b.de> PR fortran/52161 * coarray/sync_3.f90: Extend test. From-SVN: r193924
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-stmt.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/sync_3.f907
4 files changed, 20 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index cc996fe..9530339 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,6 +1,12 @@
2012-11-28 Tobias Burnus <burnus@net-b.de>
PR fortran/52161
+ * trans-stmt.c (gfc_trans_sync): Fix bound checking
+ for -fcoarray=lib.
+
+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>
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 0c88c4a..79dc27d 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -784,12 +784,12 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type)
else
{
tree cond2;
- cond = fold_build2_loc (input_location, GE_EXPR, boolean_type_node,
+ cond = fold_build2_loc (input_location, GT_EXPR, boolean_type_node,
images, gfort_gvar_caf_num_images);
cond2 = fold_build2_loc (input_location, LT_EXPR, boolean_type_node,
images,
build_int_cst (TREE_TYPE (images), 1));
- cond = fold_build2_loc (input_location, TRUTH_AND_EXPR,
+ cond = fold_build2_loc (input_location, TRUTH_OR_EXPR,
boolean_type_node, cond, cond2);
}
gfc_trans_runtime_check (true, false, cond, &se.pre,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ad8880a..d270ee0 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: Extend test.
+
2012-11-29 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/55512
diff --git a/gcc/testsuite/gfortran.dg/coarray/sync_3.f90 b/gcc/testsuite/gfortran.dg/coarray/sync_3.f90
index ef5aa6c..205a787 100644
--- a/gcc/testsuite/gfortran.dg/coarray/sync_3.f90
+++ b/gcc/testsuite/gfortran.dg/coarray/sync_3.f90
@@ -1,5 +1,6 @@
! { dg-do run }
! { dg-options "-fcheck=all" }
+! { dg-shouldfail "Invalid image number -1 in SYNC IMAGES" }
!
! As sync_1, but with bounds checking enabled.
! PR fortran/52161
@@ -65,4 +66,10 @@ n = 5
sync images (*,errmsg=str,stat=n)
if (n /= 0) call abort()
+n = -1
+sync images ( num_images() )
+sync images (n) ! Invalid: "-1"
+
end
+
+! { dg-output "Fortran runtime error: Invalid image number -1 in SYNC IMAGES" }