diff options
author | Richard Henderson <rth@redhat.com> | 2004-08-23 14:53:14 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-08-23 14:53:14 -0700 |
commit | b85024359a4c487de04d6de688036eff93addfa2 (patch) | |
tree | 2b929849a4b3cd5fcb35dec69633cf9d3c308c77 /gcc/fortran/gfortran.h | |
parent | 9a870e6c4c561ad318a320c2bcc9618c7f600865 (diff) | |
download | gcc-b85024359a4c487de04d6de688036eff93addfa2.zip gcc-b85024359a4c487de04d6de688036eff93addfa2.tar.gz gcc-b85024359a4c487de04d6de688036eff93addfa2.tar.bz2 |
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
Diffstat (limited to 'gcc/fortran/gfortran.h')
-rw-r--r-- | gcc/fortran/gfortran.h | 4 |
1 files changed, 2 insertions, 2 deletions
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 */ |