aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-09-04 18:43:40 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-09-04 18:43:40 +0000
commite85921ee9fd4e526517ec121eff8e8ea04e78b8b (patch)
tree905ba230bea234f8d6d035397fc7433ae69d5798 /gcc
parent5961d13d279329211e2a2d2c294395d17e4c7fcb (diff)
downloadgcc-e85921ee9fd4e526517ec121eff8e8ea04e78b8b.zip
gcc-e85921ee9fd4e526517ec121eff8e8ea04e78b8b.tar.gz
gcc-e85921ee9fd4e526517ec121eff8e8ea04e78b8b.tar.bz2
re PR fortran/77460 (ICE when summing an overflowing array)
2016-09-04 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77460 * simplify.c (simplify_transformation_to_scalar): On error, result may be NULL, simply return. 2016-09-04 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77460 * gfortran.dg/pr77460.f90: New test. From-SVN: r239979
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/simplify.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr77460.f907
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9913c97..0b452f4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2016-09-04 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/77460
+ * simplify.c (simplify_transformation_to_scalar): On error, result
+ may be NULL, simply return.
+
2016-08-31 Jakub Jelinek <jakub@redhat.com>
PR fortran/77352
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 6e6566d..c396653 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -489,6 +489,8 @@ simplify_transformation_to_scalar (gfc_expr *result, gfc_expr *array, gfc_expr *
}
result = op (result, gfc_copy_expr (a));
+ if (!result)
+ return result;
}
return result;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 64a7b4a..6f5c787 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-04 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/77460
+ * gfortran.dg/pr77460.f90: New test.
+
2016-09-03 Jakub Jelinek <jakub@redhat.com>
PR c/65467
diff --git a/gcc/testsuite/gfortran.dg/pr77460.f90 b/gcc/testsuite/gfortran.dg/pr77460.f90
new file mode 100644
index 0000000..5e28a99
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr77460.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+ double precision, parameter :: x = huge(1d0)
+ print*, sum((/x,-x/))
+ print*, sum((/x,x,-x,-x/)) ! { dg-error "overflow" }
+ print*, sum((/x,-x,1d0/))
+ print*, sum((/1d0,x,-x/))
+end