aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/cfgloop.h
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2014-07-21 16:47:22 -0700
committerRong Xu <xur@google.com>2014-07-29 15:31:03 -0700
commit38a8aecfb882072900434499696b5c32a2274515 (patch)
tree2aac97f0ae24b03cd98c1a06e989c031c173f889 /gcc-4.9/gcc/cfgloop.h
parentc231900e5dcc14d8296bd9f62b45997a49d4d5e7 (diff)
downloadtoolchain_gcc-38a8aecfb882072900434499696b5c32a2274515.tar.gz
toolchain_gcc-38a8aecfb882072900434499696b5c32a2274515.tar.bz2
toolchain_gcc-38a8aecfb882072900434499696b5c32a2274515.zip
[4.9] Switch gcc-4.9 to use google/gcc-4_9 branch.
This source drop uses svn version r212828 of google/gcc-4.9 branch. We also cherry-picked r213062, r213063 and r213064 to fix windows build issues. All gcc-4.9 patches before July 3rd are ported to google/gcc-4.9. The following prior commits has not been merged to google branch yet. (They are included in this commit). e7af147f979e657fe2df00808e5b4319b0e088c6, baf87df3cb2683649ba7e9872362a7e721117c23, and c231900e5dcc14d8296bd9f62b45997a49d4d5e7. Change-Id: I4bea3ea470387ff751c2be4cb0d4a12059b9299b
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)