From 692dc070ff8a4995a850bda7acde3f3fc778f329 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 16 Nov 2017 11:36:04 +0100 Subject: [PATCH] cfgloopanal.c: Include sreal.h * cfgloopanal.c: Include sreal.h (average_num_loop_insns): Use counts and sreal for accounting. From-SVN: r254807 --- gcc/ChangeLog | 5 +++++ gcc/cfgloopanal.c | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 452a9a4..e3bf8ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2017-11-14 Jan Hubicka + * cfgloopanal.c: Include sreal.h + (average_num_loop_insns): Use counts and sreal for accounting. + +2017-11-14 Jan Hubicka + * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile manipulation. diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c index 78a3c93..63f7eab 100644 --- a/gcc/cfgloopanal.c +++ b/gcc/cfgloopanal.c @@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see #include "expr.h" #include "graphds.h" #include "params.h" +#include "sreal.h" struct target_cfgloop default_target_cfgloop; #if SWITCHABLE_TARGET @@ -199,7 +200,8 @@ int average_num_loop_insns (const struct loop *loop) { basic_block *bbs, bb; - unsigned i, binsns, ninsns, ratio; + unsigned i, binsns; + sreal ninsns; rtx_insn *insn; ninsns = 0; @@ -213,19 +215,18 @@ average_num_loop_insns (const struct loop *loop) if (NONDEBUG_INSN_P (insn)) binsns++; - ratio = loop->header->count.to_frequency (cfun) == 0 - ? BB_FREQ_MAX - : (bb->count.to_frequency (cfun) * BB_FREQ_MAX) - / loop->header->count.to_frequency (cfun); - ninsns += binsns * ratio; + ninsns += (sreal)binsns * bb->count.to_sreal_scale (loop->header->count); + /* Avoid overflows. */ + if (ninsns > 1000000) + return 100000; } free (bbs); - ninsns /= BB_FREQ_MAX; - if (!ninsns) - ninsns = 1; /* To avoid division by zero. */ + int64_t ret = ninsns.to_int (); + if (!ret) + ret = 1; /* To avoid division by zero. */ - return ninsns; + return ret; } /* Returns expected number of iterations of LOOP, according to -- 2.7.4