From 03fd22151856ff8e57ef209b2e01edc9f76999e0 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Fri, 20 Jan 2006 01:46:37 +0100 Subject: loop-iv.c: Include df.h and hashtab.h. * loop-iv.c: Include df.h and hashtab.h. (enum iv_grd_result): New enum. (DF_REF_IV, DF_REF_IV_SET): New macros. (struct biv_entry): New. (df, bivs): New global variables. (struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no, assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p): Removed. (clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr, iv_analyze_result, iv_analyze_def, biv_hash, biv_eq, analyzed_for_bivness_p, record_biv): New functions. (iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p, get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op, iv_analyze, biv_p, iv_analysis_done): Work with df representation of UD chains. (iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set analysed. (iv_number_of_iterations): Use new interface to iv analysis. * loop-unroll.c: Do not include varray.h. (analyze_iv_to_split_insn): Use new interface to iv analysis. * loop-unswitch.c (may_unswitch_on): Ditto. * df.c (df_bitmaps_free): Only work for bbs for that structures are allocated. (df_bb_modify): Realloc tables to the new index. (df_find_use): New function. * df.h (df_find_use): Declare. * optabs.c (expand_unop): Make the mode of the REG_EQUAL node be outmode. * cfgloop.h (struct rtx_iv): Remove analysed field. (iv_get_reaching_def): Removed. (iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare. * Makefile.in (loop-unroll.o): Remove VARRAY_H dependency. (loop-iv.o): Add df.h and hashtab.h dependency. * df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation. From-SVN: r110005 --- gcc/cfgloop.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'gcc/cfgloop.h') diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index b5ac71c..3139ef7 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -352,9 +352,6 @@ struct rtx_iv /* The mode the variable iterates in. */ enum machine_mode mode; - /* Whether we have already filled the remaining fields. */ - unsigned analysed : 1; - /* Whether the first iteration needs to be handled specially. */ unsigned first_special : 1; }; @@ -404,12 +401,14 @@ struct niter_desc }; extern void iv_analysis_loop_init (struct loop *); -extern rtx iv_get_reaching_def (rtx, rtx); extern bool iv_analyze (rtx, rtx, struct rtx_iv *); +extern bool iv_analyze_result (rtx, rtx, struct rtx_iv *); +extern bool iv_analyze_expr (rtx, rtx, enum machine_mode, struct rtx_iv *); extern rtx get_iv_value (struct rtx_iv *, rtx); extern bool biv_p (rtx, rtx); extern void find_simple_exit (struct loop *, struct niter_desc *); extern void iv_analysis_done (void); +extern struct df *iv_current_loop_df (void); extern struct niter_desc *get_simple_loop_desc (struct loop *loop); extern void free_simple_loop_desc (struct loop *loop); -- cgit v1.1