OSDN Git Service

* crontab, doc_exclude, update_branch_version, update_version,
[pf3gnuchains/gcc-fork.git] / gcc / loop.h
index 5a3f295..cfec993 100644 (file)
@@ -1,5 +1,6 @@
 /* Loop optimization definitions for GNU C-Compiler
-   Copyright (C) 1991, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1995, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -19,6 +20,9 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
 #include "bitmap.h"
+#include "sbitmap.h"
+#include "hard-reg-set.h"
+#include "basic-block.h"
 
 /* Flags passed to loop_optimize.  */
 #define LOOP_UNROLL 1
@@ -84,7 +88,7 @@ struct induction
                                /* For a biv, this is the place where add_val
                                   was found.  */
   enum machine_mode mode;      /* The mode of this biv or giv */
-  enum machine_mode mem_mode;  /* For DEST_ADDR, mode of the memory object.  */
+  rtx mem;                     /* For DEST_ADDR, the memory object.  */
   rtx mult_val;                        /* Multiplicative factor for src_reg.  */
   rtx add_val;                 /* Additive constant for that product.  */
   int benefit;                 /* Gain from eliminating this insn.  */
@@ -386,12 +390,16 @@ extern FILE *loop_dump_stream;
    unroll.c.  */
 int loop_invariant_p PARAMS ((const struct loop *, rtx));
 rtx get_condition_for_loop PARAMS ((const struct loop *, rtx));
-void emit_iv_add_mult PARAMS ((rtx, rtx, rtx, rtx, rtx));
+void loop_iv_add_mult_hoist PARAMS ((const struct loop *, rtx, rtx, rtx, rtx));
+void loop_iv_add_mult_sink PARAMS ((const struct loop *, rtx, rtx, rtx, rtx));
+void loop_iv_add_mult_emit_before PARAMS ((const struct loop *, rtx, 
+                                          rtx, rtx, rtx,
+                                          basic_block, rtx));
 rtx express_from PARAMS ((struct induction *, struct induction *));
 rtx extend_value_for_giv PARAMS ((struct induction *, rtx));
 
-void unroll_loop PARAMS ((struct loop *, int, rtx, int));
-rtx biv_total_increment PARAMS ((struct iv_class *));
+void unroll_loop PARAMS ((struct loop *, int, int));
+rtx biv_total_increment PARAMS ((const struct iv_class *));
 unsigned HOST_WIDE_INT loop_iterations PARAMS ((struct loop *));
 int precondition_loop_p PARAMS ((const struct loop *,
                                 rtx *, rtx *, rtx *,
@@ -404,6 +412,9 @@ int back_branch_in_range_p PARAMS ((const struct loop *, rtx));
 int loop_insn_first_p PARAMS ((rtx, rtx));
 typedef rtx (*loop_insn_callback) PARAMS ((struct loop *, rtx, int, int));
 void for_each_insn_in_loop PARAMS ((struct loop *, loop_insn_callback));
+rtx loop_insn_emit_before PARAMS((const struct loop *, basic_block, 
+                                 rtx, rtx));
+rtx loop_insn_sink PARAMS((const struct loop *, rtx));
 rtx loop_insn_hoist PARAMS((const struct loop *, rtx));
 
 /* Forward declarations for non-static functions declared in doloop.c.  */