aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-10-11 21:03:04 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-10-11 21:03:04 +0000
commitf6cf4810e942f05e2cc3afe2513001af53ffa1dd (patch)
tree6ea20aad1f7cf78aa7e2c1f8536b15e4f80c515c
parent2560723055a6b607259d6de8e789c73fe7c37c80 (diff)
downloadgcc-f6cf4810e942f05e2cc3afe2513001af53ffa1dd.zip
gcc-f6cf4810e942f05e2cc3afe2513001af53ffa1dd.tar.gz
gcc-f6cf4810e942f05e2cc3afe2513001af53ffa1dd.tar.bz2
re PR fortran/77942 (ICE: Floating point exception, in gfc_simplify_cshift, at fortran/simplify.c:1845)
2016-10-11 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77942 * simplify.c (gfc_simplify_cshift): Check for zero. 2016-10-11 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77942 * gfortran.dg/pr77942.f90 From-SVN: r241008
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/simplify.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr77942.f905
4 files changed, 17 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index e9b8868..15105753 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/77942
+ * simplify.c (gfc_simplify_cshift): Check for zero.
+
2016-10-11 Fritz Reese <fritzoreese@gmail.com>
* iresolve.c (get_radians, get_degrees): Fix sloppy commit.
@@ -5,7 +10,7 @@
2016-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
- * simplify.c (radians_f): Fix mpdr_mod.
+ * simplify.c (radians_f): Fix mpfr_mod.
* ireolce.c (get_degrees): Declare tmp.
2016-10-11 Fritz Reese <fritzoreese@gmail.com>
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index eb6e412..b593bce 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -1989,7 +1989,7 @@ gfc_simplify_cshift (gfc_expr *array, gfc_expr *shift, gfc_expr *dim)
shft = shft < 0 ? 1 - shft : shft;
/* Special case: Shift to the original order! */
- if (shft % sz == 0)
+ if (sz == 0 || shft % sz == 0)
return a;
result = gfc_copy_expr (a);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e1ed8e5..1c574b9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/77942
+ * gfortran.dg/pr77942.f90
+
2016-10-11 Fritz Reese <fritzoreese@gmail.com>
* gfortran.dg/dec_math.f90: New testsuite.
diff --git a/gcc/testsuite/gfortran.dg/pr77942.f90 b/gcc/testsuite/gfortran.dg/pr77942.f90
new file mode 100644
index 0000000..7d46afb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr77942.f90
@@ -0,0 +1,5 @@
+! { dg-do compile }
+program p
+ character, parameter :: c(2) = 'a'
+ print *, cshift(c(2:1), 1)
+end