From 199b1891cb3855b293e0abf18a894645738e3132 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Fri, 24 Jun 2016 18:22:44 +0200 Subject: 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 --- gcc/cfgloop.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'gcc/cfgloop.c') diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c index 5650f0d..e6174bd 100644 --- a/gcc/cfgloop.c +++ b/gcc/cfgloop.c @@ -136,6 +136,14 @@ flow_loop_dump (const struct loop *loop, FILE *file, loop_depth (loop), (long) (loop_outer (loop) ? loop_outer (loop)->num : -1)); + if (loop->latch) + { + bool read_profile_p; + gcov_type nit = expected_loop_iterations_unbounded (loop, &read_profile_p); + if (read_profile_p && !loop->any_estimate) + fprintf (file, ";; profile-based iteration count: %lu\n", nit); + } + fprintf (file, ";; nodes:"); bbs = get_loop_body (loop); for (i = 0; i < loop->num_nodes; i++) @@ -1913,7 +1921,7 @@ get_estimated_loop_iterations (struct loop *loop, widest_int *nit) false, otherwise returns true. */ bool -get_max_loop_iterations (struct loop *loop, widest_int *nit) +get_max_loop_iterations (const struct loop *loop, widest_int *nit) { if (!loop->any_upper_bound) return false; @@ -1927,7 +1935,7 @@ get_max_loop_iterations (struct loop *loop, widest_int *nit) on the number of iterations of LOOP could not be derived, returns -1. */ HOST_WIDE_INT -get_max_loop_iterations_int (struct loop *loop) +get_max_loop_iterations_int (const struct loop *loop) { widest_int nit; HOST_WIDE_INT hwi_nit; -- cgit v1.1