From: Jan Hubicka Date: Thu, 16 Nov 2017 10:36:04 +0000 (+0100) Subject: cfgloopanal.c: Include sreal.h X-Git-Tag: upstream/12.2.0~35524 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=692dc070ff8a4995a850bda7acde3f3fc778f329;p=platform%2Fupstream%2Fgcc.git cfgloopanal.c: Include sreal.h * cfgloopanal.c: Include sreal.h (average_num_loop_insns): Use counts and sreal for accounting. From-SVN: r254807 --- 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