re PR fortran/36192 (ICE with wrong index types and bad parens)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 30 Oct 2015 16:46:20 +0000 (16:46 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 30 Oct 2015 16:46:20 +0000 (16:46 +0000)
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/36192
* gfortran.dg/pr36192_1.f90: New test.

From-SVN: r229590

gcc/fortran/ChangeLog
gcc/fortran/interface.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr36192_1.f90 [new file with mode: 0644]

index 74cae2f0d8258145f1ab4e99e14d8fed4351e8ab..f197ca9f022216016081d7c590d40d14005d3820 100644 (file)
@@ -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
index 2ea26304a24af698745fefb0668e3e827013c503..dcf3eae81e7b42ddc2c43ba7549563ee3ea6eb38 100644 (file)
@@ -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;
index 5407db7f1be10f6a4feda3950d1b1ac7ef14680e..caa46c45f97c944f50e81abe5771db21ceb7c882 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gfortran.dg/pr36192_1.f90 b/gcc/testsuite/gfortran.dg/pr36192_1.f90
new file mode 100644 (file)
index 0000000..77df317
--- /dev/null
@@ -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" }