aboutsummaryrefslogtreecommitdiff
path: root/gcc/basic-block.h
diff options
context:
space:
mode:
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>2000-01-15 03:01:49 +0000
committerMichael Hayes <m.hayes@gcc.gnu.org>2000-01-15 03:01:49 +0000
commita2be868fbade644577895e847ad2fc658cb6d7d5 (patch)
tree763658a41b42980e79c902cf002544568b86c28e /gcc/basic-block.h
parentd07ecc3bdf8bc2a5d055405bdc0b51c04237fc5d (diff)
downloadgcc-a2be868fbade644577895e847ad2fc658cb6d7d5.zip
gcc-a2be868fbade644577895e847ad2fc658cb6d7d5.tar.gz
gcc-a2be868fbade644577895e847ad2fc658cb6d7d5.tar.bz2
loop.c (this_loop_info): Delete.
* loop.c (this_loop_info): Delete. (uid_loop): Add in place of uid_loop_num. All uses updated. (loop_number_exit_count): Delete and replace with entry in loop structure. All uses updated. (loop_number_loop_starts, loop_number_loop_ends): Likewise. (loop_number_loop_cont, loop_number_cont_dominator): Likewise. (loop_outer_loop): Likewise. (loop_invalid, loop_number_exit_labels): Likewise. (loop_used_count_register): Delete and replace with entry in loop_info structure. (find_and_verify_loops): Add loops argument. (verify_dominator, mark_loop_jump, prescan_loop): Replace loop_start, loop_end, etc. arguments with loop structure pointer. All callers changed. (loop_reg_used_before_p, scan_loop, strength_reduce): Likewise. (check_dbra_loop, next_insn_in_loop, try_copy_prop): Likewise. (load_mems_and_recount_loop_regs_set, load_mems): Likewise. (insert_bct): Likewise. (basic_induction_var): New argument level. * loop.h (struct loop_info): Delete fields num, loops_enclosed, vtop, and cont. Add used_count_register. (uid_loop): Delete declaration. (loop_number_exit_count): Likewise. (loop_number_loop_starts, loop_number_loop_ends): Likewise. (loop_number_loop_cont, loop_number_cont_dominator): Likewise. (loop_outer_loop, loop_used_count_register): Likewise. (loop_invalid, loop_number_exit_labels): Likewise. (unroll_loop): Replace loop_start and loop_end arguments with loop structure pointer. (loop_precondition_p, loop_iterations): Likewise. Include basic-block.h. * unroll.c: (unroll_loop): Replace loop_start and loop_end arguments with loop structure pointer. (loop_precondition_p, loop_iterations): Likewise. * basic-block.h (struct loop): New entries vtop, cont, cont_dominator, start, end, top, scan_start, exit_labels, exit_count. * Makefile.in (LOOP_H): Add basic-block.h to dependencies. From-SVN: r31434
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r--gcc/basic-block.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 0b732f6..912d1ef 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -275,6 +275,47 @@ struct loop
/* Auxiliary info specific to a pass. */
void *info;
+
+ /* The following are currently used by loop.c but they are likely to
+ disappear as loop.c is converted to use the CFG. */
+
+ /* Non-zero if the loop has a NOTE_INSN_LOOP_VTOP. */
+ rtx vtop;
+
+ /* Non-zero if the loop has a NOTE_INSN_LOOP_CONT.
+ A continue statement will generate a branch to NEXT_INSN (cont). */
+ rtx cont;
+
+ /* The dominator of cont. */
+ rtx cont_dominator;
+
+ /* The NOTE_INSN_LOOP_BEG. */
+ rtx start;
+
+ /* The NOTE_INSN_LOOP_END. */
+ rtx end;
+
+ /* For a rotated loop that is entered near the bottom,
+ this is the label at the top. Otherwise it is zero. */
+ rtx top;
+
+ /* Place in the loop where control enters. */
+ rtx scan_start;
+
+ /* List of all LABEL_REFs which refer to code labels outside the
+ loop. Used by routines that need to know all loop exits, such as
+ final_biv_value and final_giv_value.
+
+ This does not include loop exits due to return instructions.
+ This is because all bivs and givs are pseudos, and hence must be
+ dead after a return, so the presense of a return does not affect
+ any of the optimizations that use this info. It is simpler to
+ just not include return instructions on this list. */
+ rtx exit_labels;
+
+ /* The number of LABEL_REFs on exit_labels for this loop and all
+ loops nested inside it. */
+ int exit_count;
};