summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-22 20:24:18 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-22 20:24:18 +0000
commit3011e448c9496ea3a197f0230e2cc74f041d7b2b (patch)
treea2854d5bb8eed90e91b05eef9902fb15fa5d0fce
parent02cfc9c9ff51d2a640a520583b4298016b535583 (diff)
downloadppe42-gcc-3011e448c9496ea3a197f0230e2cc74f041d7b2b.tar.gz
ppe42-gcc-3011e448c9496ea3a197f0230e2cc74f041d7b2b.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148814 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/simplify.c9
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c42c91d26d8..b502caf53ae 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 79341d3d1e1..f57f68e3e68 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;
OpenPOWER on IntegriCloud