From e5e85f2b81364d2d80d6663aad5418620fadd2e2 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 22 Jun 2009 22:24:18 +0200 Subject: [PATCH] re PR fortran/40472 (Simplification of spread intrinsic takes a long time) 2009-06-22 Tobias Burnus PR fortran/40472 PR fortran/50520 * simplify.c (gfc_simplify_spread): Fix the case that source= is a scalar. From-SVN: r148814 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/simplify.c | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c42c91d..b502caf 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2009-06-22 Tobias Burnus + + PR fortran/40472 + PR fortran/50520 + * simplify.c (gfc_simplify_spread): Fix the case that source= + is a scalar. + 2009-06-22 Paul Thomas PR fortran/40443 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 79341d3..f57f68e 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -5117,7 +5117,14 @@ gfc_simplify_spread (gfc_expr *source, gfc_expr *dim_expr, gfc_expr *ncopies_exp /* Do not allow the array size to exceed the limit for an array constructor. */ - gfc_array_size (source, &size); + if (source->expr_type == EXPR_ARRAY) + { + if (gfc_array_size (source, &size) == FAILURE) + gfc_internal_error ("Failure getting length of a constant array."); + } + else + mpz_init_set_ui (size, 1); + if (mpz_get_si (size)*ncopies > gfc_option.flag_max_array_constructor) return NULL; -- 2.7.4