re PR fortran/43210 (Initializer of huge static arrays should be improved)
PR fortran/43210 * trans-array.c (gfc_conv_array_initializer): Use RANGE_EXPR instead of duplicating the initializer possibly many times. From-SVN: r269207
This commit is contained in:
parent
ba790e6f5e
commit
0eaf141239
2 changed files with 10 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-02-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/43210
|
||||
* trans-array.c (gfc_conv_array_initializer): Use RANGE_EXPR instead
|
||||
of duplicating the initializer possibly many times.
|
||||
|
||||
2019-02-24 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/89174
|
||||
|
|
|
@ -5986,7 +5986,6 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr)
|
|||
{
|
||||
gfc_constructor *c;
|
||||
tree tmp;
|
||||
offset_int wtmp;
|
||||
gfc_se se;
|
||||
tree index, range;
|
||||
vec<constructor_elt, va_gc> *v = NULL;
|
||||
|
@ -6009,13 +6008,10 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr)
|
|||
else
|
||||
gfc_conv_structure (&se, expr, 1);
|
||||
|
||||
wtmp = wi::to_offset (TYPE_MAX_VALUE (TYPE_DOMAIN (type))) + 1;
|
||||
/* This will probably eat buckets of memory for large arrays. */
|
||||
while (wtmp != 0)
|
||||
{
|
||||
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, se.expr);
|
||||
wtmp -= 1;
|
||||
}
|
||||
CONSTRUCTOR_APPEND_ELT (v, build2 (RANGE_EXPR, gfc_array_index_type,
|
||||
TYPE_MIN_VALUE (TYPE_DOMAIN (type)),
|
||||
TYPE_MAX_VALUE (TYPE_DOMAIN (type))),
|
||||
se.expr);
|
||||
break;
|
||||
|
||||
case EXPR_ARRAY:
|
||||
|
|
Loading…
Add table
Reference in a new issue