diff options
author | Michael Hayes <mhayes@redhat.com> | 2001-01-01 00:24:46 +0000 |
---|---|---|
committer | Michael Hayes <m.hayes@gcc.gnu.org> | 2001-01-01 00:24:46 +0000 |
commit | e304a8e61a5970791a71e4a4f35509e9574202b7 (patch) | |
tree | 4fe0d05056fa9a66707db62b080a94c0cdf27fe5 /gcc/loop.h | |
parent | 6ec73c7cc8bba8fa653d12bccf399623231059b8 (diff) | |
download | gcc-e304a8e61a5970791a71e4a4f35509e9574202b7.zip gcc-e304a8e61a5970791a71e4a4f35509e9574202b7.tar.gz gcc-e304a8e61a5970791a71e4a4f35509e9574202b7.tar.bz2 |
loop.c (loop_giv_reduce_benefit): Break out from strength_reduce.
* loop.c (loop_giv_reduce_benefit): Break out from strength_reduce.
(loop_givs_dead_check, loop_givs_reduce, loop_givs_rescan): Likewise.
(prescan_loop): Set pre_header_has_call in loop_info.
* loop.h (struct_iv_class): Add `final_value' and `all_reduced'.
(struct loop_info): Add `pre_header_has_call'.
From-SVN: r38578
Diffstat (limited to 'gcc/loop.h')
-rw-r--r-- | gcc/loop.h | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -164,17 +164,22 @@ struct iv_class check_dbra_loop. */ struct induction *giv; /* List of all insns that compute a giv from this reg. */ - int total_benefit; /* Sum of BENEFITs of all those givs */ - rtx initial_value; /* Value of reg at loop start */ - rtx initial_test; /* Test performed on BIV before loop */ - struct iv_class *next; /* Links all class structures together */ + int total_benefit; /* Sum of BENEFITs of all those givs. */ + rtx initial_value; /* Value of reg at loop start. */ + rtx initial_test; /* Test performed on BIV before loop. */ + rtx final_value; /* Value of reg at loop end, if known. */ + struct iv_class *next; /* Links all class structures together. */ rtx init_insn; /* insn which initializes biv, 0 if none. */ rtx init_set; /* SET of INIT_INSN, if any. */ unsigned incremented : 1; /* 1 if somewhere incremented/decremented */ - unsigned eliminable : 1; /* 1 if plausible candidate for elimination. */ - unsigned nonneg : 1; /* 1 if we added a REG_NONNEG note for this. */ + unsigned eliminable : 1; /* 1 if plausible candidate for + elimination. */ + unsigned nonneg : 1; /* 1 if we added a REG_NONNEG note for + this. */ unsigned reversed : 1; /* 1 if we reversed the loop that this biv controls. */ + unsigned all_reduced : 1; /* 1 if all givs using this biv have + been reduced. */ }; typedef struct loop_mem_info @@ -333,6 +338,8 @@ struct loop_info struct loop_regs regs; /* The induction variable information in loop. */ struct loop_ivs ivs; + /* Non-zero if call is in pre_header extended basic block. */ + int pre_header_has_call; }; /* Definitions used by the basic induction variable discovery code. */ |