aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/interface.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr36192_1.f9012
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 74cae2f..f197ca9 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,8 +1,15 @@
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/36192
+ * interface.c (get_expr_storage_size): Check for INTEGER type before
+ calling gmp routines.
+
+2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/68154
* decl.c (add_init_expr_to_sym): if the char length in the typespec
is NULL, check for and use a constructor.
+
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68054
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 2ea2630..dcf3eae 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -2455,7 +2455,9 @@ get_expr_storage_size (gfc_expr *e)
{
if (ref->u.ar.as->lower[i] && ref->u.ar.as->upper[i]
&& ref->u.ar.as->lower[i]->expr_type == EXPR_CONSTANT
- && ref->u.ar.as->upper[i]->expr_type == EXPR_CONSTANT)
+ && ref->u.ar.as->lower[i]->ts.type == BT_INTEGER
+ && ref->u.ar.as->upper[i]->expr_type == EXPR_CONSTANT
+ && ref->u.ar.as->upper[i]->ts.type == BT_INTEGER)
elements *= mpz_get_si (ref->u.ar.as->upper[i]->value.integer)
- mpz_get_si (ref->u.ar.as->lower[i]->value.integer)
+ 1L;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5407db7..caa46c4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/36192
+ * gfortran.dg/pr36192_1.f90: New test.
+
+2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/68154
*gfortran.dg/pr68154.f90
diff --git a/gcc/testsuite/gfortran.dg/pr36192_1.f90 b/gcc/testsuite/gfortran.dg/pr36192_1.f90
new file mode 100644
index 0000000..77df317
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr36192_1.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! PR fortran/36192
+program three_body
+ real, parameter :: n = 2, d = 2
+ real, dimension(n,d) :: x_hq ! { dg-error "of INTEGER type|of INTEGER type" }
+ call step(x_hq)
+ contains
+ subroutine step(x)
+ real, dimension(:,:), intent(in) :: x
+ end subroutine step
+end program three_body
+! { dg-prune-output "must have constant shape" }