From b85024359a4c487de04d6de688036eff93addfa2 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 23 Aug 2004 14:53:14 -0700 Subject: re PR fortran/13465 (Data statement for large arrays compiles verrrry slllowwwly and shows quadratic behaviour.) PR 13465 * data.c (find_con_by_offset): Search ordered list; handle elements with repeat counts. (gfc_assign_data_value_range): New. * gfortran.h (struct gfc_data_value): Make repeat unsigned. (gfc_assign_data_value_range): Declare. * match.c (top_val_list): Extract repeat count into a temporary. * resolve.c (values): Make left unsigned. (next_data_value): Don't decrement left. (check_data_variable): Use gfc_assign_data_value_range. From-SVN: r86443 --- gcc/fortran/match.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/fortran/match.c') diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 65af46ad779..a42fd7f66ab 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -2894,13 +2894,15 @@ top_val_list (gfc_data * data) } else { - msg = gfc_extract_int (expr, &tail->repeat); + signed int tmp; + msg = gfc_extract_int (expr, &tmp); gfc_free_expr (expr); if (msg != NULL) { gfc_error (msg); return MATCH_ERROR; } + tail->repeat = tmp; m = match_data_constant (&tail->expr); if (m == MATCH_NO) -- cgit v1.2.1