diff options
author | Steven G. Kargl <kargls@comcast.net> | 2008-11-01 16:42:31 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2008-11-01 16:42:31 +0000 |
commit | 63346ddba610eee2fc473d0d41aaf65bc388402b (patch) | |
tree | 830361faaebf6d74f8e768d2332ec39250a1fce9 /gcc/fortran/trans-array.c | |
parent | fa4262a47aa70a6f1baa2dd35d1cdb929c250da6 (diff) | |
download | gcc-63346ddba610eee2fc473d0d41aaf65bc388402b.zip gcc-63346ddba610eee2fc473d0d41aaf65bc388402b.tar.gz gcc-63346ddba610eee2fc473d0d41aaf65bc388402b.tar.bz2 |
re PR fortran/19925 (Implied do-loop in an initialization expression is broken)
2008-11-01 Steven G. Kargl <kargls@comcast.net>
PR fortran/19925
* trans-array.c (gfc_trans_array_constructor_value): Fix comment.
(gfc_conv_array_initializer): Convert internal_error() to gfc_error_now.
* array.c: Remove GFC_MAX_AC_EXPAND macro.
(gfc_expand_constructor): Use gfc_option.flag_max_array_constructor.
* gfortran.h (gfc_option): Add flag_max_array_constructor member.
* lang.opt: Add -fmax-array-constructor option.
* expr.c (gfc_match_init_expr): Fix error message to mention new option.
* invoke.texi: Document new option.
* options.c (gfc_init_options): Set default value for new option.
(gfc_handle_option): Deal with commandline.
From-SVN: r141518
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index db43a40..218c401 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1303,7 +1303,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type, } } - /* The frontend should already have done any expansions possible + /* The frontend should already have done any expansions at compile-time. */ if (!c->iterator) { @@ -3946,10 +3946,13 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr) if (c->iterator) { /* Problems occur when we get something like - integer :: a(lots) = (/(i, i=1,lots)/) */ - /* TODO: Unexpanded array initializers. */ - internal_error - ("Possible frontend bug: array constructor not expanded"); + integer :: a(lots) = (/(i, i=1, lots)/) */ + gfc_error_now ("The number of elements in the array constructor " + "at %L requires an increase of the allowed %d " + "upper limit. See -fmax-array-constructor " + "option", &expr->where, + gfc_option.flag_max_array_constructor); + return NULL_TREE; } if (mpz_cmp_si (c->n.offset, 0) != 0) index = gfc_conv_mpz_to_tree (c->n.offset, gfc_index_integer_kind); |