diff options
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r-- | gcc/fortran/array.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index ee13d92..58d611b 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -2003,6 +2003,20 @@ gfc_resolve_character_array_constructor (gfc_expr *expr) got_charlen: + /* Early exit for zero size arrays. */ + if (expr->shape) + { + mpz_t size; + HOST_WIDE_INT arraysize; + + gfc_array_size (expr, &size); + arraysize = mpz_get_ui (size); + mpz_clear (size); + + if (arraysize == 0) + return true; + } + found_length = -1; if (expr->ts.u.cl->length == NULL) |