diff options
author | Tobias Burnus <burnus@net-b.de> | 2009-06-22 22:24:18 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2009-06-22 22:24:18 +0200 |
commit | e5e85f2b81364d2d80d6663aad5418620fadd2e2 (patch) | |
tree | a2854d5bb8eed90e91b05eef9902fb15fa5d0fce | |
parent | c986683bb0f43b9b26199c3f60fbe18be06f216e (diff) | |
download | gcc-e5e85f2b81364d2d80d6663aad5418620fadd2e2.zip gcc-e5e85f2b81364d2d80d6663aad5418620fadd2e2.tar.gz gcc-e5e85f2b81364d2d80d6663aad5418620fadd2e2.tar.bz2 |
re PR fortran/40472 (Simplification of spread intrinsic takes a long time)
2009-06-22 Tobias Burnus <burnus@net-b.de>
PR fortran/40472
PR fortran/50520
* simplify.c (gfc_simplify_spread): Fix the case that source=
is a scalar.
From-SVN: r148814
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/simplify.c | 9 |
2 files changed, 15 insertions, 1 deletions
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 <burnus@net-b.de> + + PR fortran/40472 + PR fortran/50520 + * simplify.c (gfc_simplify_spread): Fix the case that source= + is a scalar. + 2009-06-22 Paul Thomas <pault@gcc.gnu.org> 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; |