diff options
author | Daniel Franke <franke.daniel@gmail.com> | 2009-04-10 10:12:01 -0400 |
---|---|---|
committer | Daniel Franke <dfranke@gcc.gnu.org> | 2009-04-10 10:12:01 -0400 |
commit | 045ac3671593f6cb1a087a22cc9b8bff2b357198 (patch) | |
tree | ab3b7a160655ccb16d9d08df721888359e61b9f6 /gcc/fortran/expr.c | |
parent | 7ef455560c88e6a757602afb0f7b3f9e1e2068f7 (diff) | |
download | gcc-045ac3671593f6cb1a087a22cc9b8bff2b357198.zip gcc-045ac3671593f6cb1a087a22cc9b8bff2b357198.tar.gz gcc-045ac3671593f6cb1a087a22cc9b8bff2b357198.tar.bz2 |
re PR fortran/38709 (ICE on zero-sized array in initialization expression)
gcc/fortran/:
2009-04-10 Daniel Franke <franke.daniel@gmail.com>
PR fortran/38709
* expr.c (find_array_section): Leave early on zero-sized arrays.
gcc/testsuite/:
2009-04-10 Daniel Franke <franke.daniel@gmail.com>
PR fortran/38709
* gfortran.dg/zero_sized_6.f90: New.
From-SVN: r145909
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 94b8e0e..02143c2 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1210,7 +1210,12 @@ find_array_section (gfc_expr *expr, gfc_ref *ref) } gcc_assert (begin->rank == 1); - gcc_assert (begin->shape); + /* Zero-sized arrays have no shape and no elements, stop early. */ + if (!begin->shape) + { + mpz_init_set_ui (nelts, 0); + break; + } vecsub[d] = begin->value.constructor; mpz_set (ctr[d], vecsub[d]->expr->value.integer); |