diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-10-11 21:03:04 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-10-11 21:03:04 +0000 |
commit | f6cf4810e942f05e2cc3afe2513001af53ffa1dd (patch) | |
tree | 6ea20aad1f7cf78aa7e2c1f8536b15e4f80c515c /gcc | |
parent | 2560723055a6b607259d6de8e789c73fe7c37c80 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/simplify.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr77942.f90 | 5 |
4 files changed, 17 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e9b8868..1510575 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 |