diff options
author | Martin Liska <mliska@suse.cz> | 2016-06-24 18:22:44 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2016-06-24 16:22:44 +0000 |
commit | 199b1891cb3855b293e0abf18a894645738e3132 (patch) | |
tree | 58def27bed7c883fb39401708de460fccdea696c /gcc/cfgloopanal.c | |
parent | 04619cb86e06ee543dd4ab2b3b8e7fad772883bd (diff) | |
download | gcc-199b1891cb3855b293e0abf18a894645738e3132.zip gcc-199b1891cb3855b293e0abf18a894645738e3132.tar.gz gcc-199b1891cb3855b293e0abf18a894645738e3132.tar.bz2 |
Dump profile-based number of iterations
* analyze_brprob.py: Parse and display average number
of loop iterations.
* cfgloop.c (flow_loop_dump): Dump average number of loop iterations.
* cfgloop.h: Change 'struct loop' to 'const struct loop' for a
few functions.
* cfgloopanal.c (expected_loop_iterations_unbounded): Set a new
argument to true if the expected number of iterations is
loop-based.
From-SVN: r237762
Diffstat (limited to 'gcc/cfgloopanal.c')
-rw-r--r-- | gcc/cfgloopanal.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c index 938ac43..c163986 100644 --- a/gcc/cfgloopanal.c +++ b/gcc/cfgloopanal.c @@ -231,12 +231,15 @@ average_num_loop_insns (const struct loop *loop) value. */ gcov_type -expected_loop_iterations_unbounded (struct loop *loop) +expected_loop_iterations_unbounded (const struct loop *loop, + bool *read_profile_p) { edge e; edge_iterator ei; gcov_type expected; + if (read_profile_p) + *read_profile_p = false; /* Average loop rolls about 3 times. If we have no profile at all, it is best we can do. */ @@ -258,7 +261,11 @@ expected_loop_iterations_unbounded (struct loop *loop) if (count_in == 0) expected = count_latch * 2; else - expected = (count_latch + count_in - 1) / count_in; + { + expected = (count_latch + count_in - 1) / count_in; + if (read_profile_p) + *read_profile_p = true; + } } else { |