summaryrefslogtreecommitdiff
path: root/gcc/loop.h
diff options
context:
space:
mode:
authorm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-01 00:24:46 +0000
committerm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-01 00:24:46 +0000
commite7b494d3f87c53fbd0005a3e6ea04a57c17240ab (patch)
tree4fe0d05056fa9a66707db62b080a94c0cdf27fe5 /gcc/loop.h
parentd59b4e470a3e3d621ee4cea3eaa9270a25a66b53 (diff)
downloadgcc-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.h19
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. */