aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/gfortran.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-08-23 14:53:14 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-08-23 14:53:14 -0700
commitb85024359a4c487de04d6de688036eff93addfa2 (patch)
tree2b929849a4b3cd5fcb35dec69633cf9d3c308c77 /gcc/fortran/gfortran.h
parent9a870e6c4c561ad318a320c2bcc9618c7f600865 (diff)
downloadgcc-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.h4
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 */