diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2013-11-05 20:02:43 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2013-11-05 20:02:43 +0000 |
commit | df1c87913c623004b0ecf24ea37874d9addaa8c9 (patch) | |
tree | ad223978dbb0e5d72b3ae3b44a423d530000505f /gcc | |
parent | ae40b2ffce3f8d401f1ae28e791cfe182b2be36f (diff) | |
download | gcc-df1c87913c623004b0ecf24ea37874d9addaa8c9.zip gcc-df1c87913c623004b0ecf24ea37874d9addaa8c9.tar.gz gcc-df1c87913c623004b0ecf24ea37874d9addaa8c9.tar.bz2 |
re PR fortran/58989 (internal compiler error when using reshape function)
2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/58989
* check.c (gfc_check_reshape): ensure that shape is a constant
expression.
2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/58989
* gfortran.dg/reshape_6.f90: New test.
From-SVN: r204419
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/check.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/reshape_6.f90 | 19 |
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 16703f6..47b9383 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/58989 + * check.c (gfc_check_reshape): ensure that shape is a constant + expression. + 2013-11-05 Tobias Burnus <burnus@net-b.de> * lang.opt (fopenmp-simd): New option. diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 758639e..1508c74 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -3277,7 +3277,7 @@ gfc_check_reshape (gfc_expr *source, gfc_expr *shape, "than %d elements", &shape->where, GFC_MAX_DIMENSIONS); return false; } - else if (shape->expr_type == EXPR_ARRAY) + else if (shape->expr_type == EXPR_ARRAY && gfc_is_constant_expr (shape)) { gfc_expr *e; int i, extent; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a348d7e..2145503 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/58989 + * gfortran.dg/reshape_6.f90: New test. + 2013-10-05 Jeff Law <law@redhat.com> * gcc.dg/pr38984.c: Add -fno-isolate-erroneous-paths. diff --git a/gcc/testsuite/gfortran.dg/reshape_6.f90 b/gcc/testsuite/gfortran.dg/reshape_6.f90 new file mode 100644 index 0000000..149f31e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/reshape_6.f90 @@ -0,0 +1,19 @@ +! { dg-do compile } +! PR fortran/58989 +! +program test + + real(8), dimension(4,4) :: fluxes + real(8), dimension(2,2,2,2) :: f + integer, dimension(3) :: dmmy + integer, parameter :: indx(4)=(/2,2,2,2/) + + fluxes = 1 + + dmmy = (/2,2,2/) + + f = reshape(fluxes,(/dmmy,2/)) ! Caused an ICE + f = reshape(fluxes,(/2,2,2,2/)) ! Works as expected + f = reshape(fluxes,indx) ! Works as expected + +end program test |