aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/cfgloop.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/cfgloop.h')
-rw-r--r--gcc-4.9/gcc/cfgloop.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/gcc-4.9/gcc/cfgloop.h b/gcc-4.9/gcc/cfgloop.h
index 4b7c3d398..c7e417bf2 100644
--- a/gcc-4.9/gcc/cfgloop.h
+++ b/gcc-4.9/gcc/cfgloop.h
@@ -278,7 +278,6 @@ extern basic_block *get_loop_body_in_custom_order (const struct loop *,
extern vec<edge> get_loop_exit_edges (const struct loop *);
extern edge single_exit (const struct loop *);
extern edge single_likely_exit (struct loop *loop);
-extern unsigned num_loop_branches (const struct loop *);
extern edge loop_preheader_edge (const struct loop *);
extern edge loop_latch_edge (const struct loop *);
@@ -381,7 +380,8 @@ struct rtx_iv
};
/* The description of an exit from the loop and of the number of iterations
- till we take the exit. */
+ till we take the exit. Also includes other information used primarily
+ by the loop unroller. */
struct GTY(()) niter_desc
{
@@ -419,6 +419,18 @@ struct GTY(()) niter_desc
/* The number of iterations of the loop. */
rtx niter_expr;
+
+ /* The number of branches in the loop. */
+ unsigned num_branches;
+
+ /* The number of executed branches per iteration. */
+ unsigned av_num_branches;
+
+ /* Whether the loop contains a call instruction. */
+ bool has_call;
+
+ /* Whether the loop contains fp instructions. */
+ bool has_fp;
};
extern void iv_analysis_loop_init (struct loop *);
@@ -432,6 +444,7 @@ extern void iv_analysis_done (void);
extern struct niter_desc *get_simple_loop_desc (struct loop *loop);
extern void free_simple_loop_desc (struct loop *loop);
+void analyze_loop_insns (const struct loop *, struct niter_desc *desc);
static inline struct niter_desc *
simple_loop_desc (struct loop *loop)