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/gfortran.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gcc/fortran/gfortran.h') diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 697f662..e33a0aa 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1304,9 +1304,8 @@ gfc_data_variable; typedef struct gfc_data_value { - int repeat; + unsigned int repeat; gfc_expr *expr; - struct gfc_data_value *next; } gfc_data_value; @@ -1402,6 +1401,7 @@ extern iterator_stack *iter_stack; void gfc_formalize_init_value (gfc_symbol *); void gfc_get_section_index (gfc_array_ref *, mpz_t *, mpz_t *); void gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t); +void gfc_assign_data_value_range (gfc_expr *, gfc_expr *, mpz_t, mpz_t); void gfc_advance_section (mpz_t *, gfc_array_ref *, mpz_t *); /* scanner.c */ -- cgit v1.1