aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/interface.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2015-10-30 16:46:20 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2015-10-30 16:46:20 +0000
commitedcc76d5aebb6492ebbfb705b0b7b2c425b804ff (patch)
tree8a113f828fa743bfa5e1aa1c2a573f4e5311601a /gcc/fortran/interface.c
parentdc0f176a1c2142d6814b9b47ed516c9a0b2b9592 (diff)
downloadgcc-edcc76d5aebb6492ebbfb705b0b7b2c425b804ff.zip
gcc-edcc76d5aebb6492ebbfb705b0b7b2c425b804ff.tar.gz
gcc-edcc76d5aebb6492ebbfb705b0b7b2c425b804ff.tar.bz2
re PR fortran/36192 (ICE with wrong index types and bad parens)
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
Diffstat (limited to 'gcc/fortran/interface.c')
-rw-r--r--gcc/fortran/interface.c4
1 files changed, 3 insertions, 1 deletions
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;