diff options
author | m.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-01 00:24:46 +0000 |
---|---|---|
committer | m.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-01 00:24:46 +0000 |
commit | e7b494d3f87c53fbd0005a3e6ea04a57c17240ab (patch) | |
tree | 4fe0d05056fa9a66707db62b080a94c0cdf27fe5 /gcc/loop.h | |
parent | d59b4e470a3e3d621ee4cea3eaa9270a25a66b53 (diff) | |
download | gcc-e7b494d3f87c53fbd0005a3e6ea04a57c17240ab.tar.gz |
* 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'.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38578 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/loop.h')
-rw-r--r-- | gcc/loop.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/loop.h b/gcc/loop.h index 4687cdba786..bea5a808e72 100644 --- a/gcc/loop.h +++ b/gcc/loop.h @@ -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. */ |