diff options
Diffstat (limited to 'gcc-4.9/gcc/cfgloop.h')
-rw-r--r-- | gcc-4.9/gcc/cfgloop.h | 17 |
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) |