aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2013-11-05 20:02:43 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2013-11-05 20:02:43 +0000
commitdf1c87913c623004b0ecf24ea37874d9addaa8c9 (patch)
treead223978dbb0e5d72b3ae3b44a423d530000505f /gcc
parentae40b2ffce3f8d401f1ae28e791cfe182b2be36f (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/fortran/check.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/reshape_6.f9019
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