From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 75004 invoked by alias); 16 Jun 2017 11:38:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 74958 invoked by uid 89); 16 Jun 2017 11:38:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-23.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=8022, scanned X-HELO: nikam.ms.mff.cuni.cz Received: from nikam.ms.mff.cuni.cz (HELO nikam.ms.mff.cuni.cz) (195.113.20.16) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 16 Jun 2017 11:38:27 +0000 Received: by nikam.ms.mff.cuni.cz (Postfix, from userid 16202) id 8AECC548161; Fri, 16 Jun 2017 13:38:29 +0200 (CEST) Date: Fri, 16 Jun 2017 11:38:00 -0000 From: Jan Hubicka To: Martin =?iso-8859-2?Q?Li=B9ka?= Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Enhance dump_probability function. Message-ID: <20170616113829.GA29777@kam.mff.cuni.cz> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-SW-Source: 2017-06/txt/msg01184.txt.bz2 > Hi. > > This is pre-approved patch that displays edge counts in dump files: > > ... > _85 = _83 + _84; > len_86 = SQRT (_85); > if (_85 u>= 0.0) > goto ; [99.00%] [count: 778568] > else > goto ; [1.00%] [count: 7864] > > [0.01%] [count: 7864]: > sqrt (_85); > ... > > That makes it possible to understand why a profile mismatch happens. > Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. > > Martin > > gcc/ChangeLog: > > 2017-06-12 Martin Liska > > * gimple-pretty-print.c (dump_probability): Add new argument. > (dump_edge_probability): Dump both probability and count. > (dump_gimple_label): Likewise. > (dump_gimple_bb_header): Likewise. > > gcc/testsuite/ChangeLog: > > 2017-06-12 Martin Liska > > * gcc.dg/tree-ssa/builtin-sprintf-2.c: Adjust scanned pattern. > * gcc.dg/tree-ssa/dump-2.c: Likewise. > * gcc.dg/tree-ssa/vrp101.c: Likewise. OK Honza > --- > gcc/gimple-pretty-print.c | 22 ++++++++++++++-------- > gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c | 4 ++-- > gcc/testsuite/gcc.dg/tree-ssa/dump-2.c | 2 +- > gcc/testsuite/gcc.dg/tree-ssa/vrp101.c | 2 +- > 4 files changed, 18 insertions(+), 12 deletions(-) > > > diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c > index 5ff63a167a1..447921be036 100644 > --- a/gcc/gimple-pretty-print.c > +++ b/gcc/gimple-pretty-print.c > @@ -80,17 +80,22 @@ debug_gimple_stmt (gimple *gs) > by xstrdup_for_dump. */ > > static const char * > -dump_probability (int value) > +dump_probability (int frequency, profile_count &count) > { > float minimum = 0.01f; > > - gcc_assert (0 <= value && value <= REG_BR_PROB_BASE); > - float fvalue = value * 100.0f / REG_BR_PROB_BASE; > - if (fvalue < minimum && value > 0) > + gcc_assert (0 <= frequency && frequency <= REG_BR_PROB_BASE); > + float fvalue = frequency * 100.0f / REG_BR_PROB_BASE; > + if (fvalue < minimum && frequency > 0) > return "[0.01%]"; > > char *buf; > - asprintf (&buf, "[%.2f%%]", fvalue); > + if (count.initialized_p ()) > + asprintf (&buf, "[%.2f%%] [count: %" PRId64 "]", fvalue, > + count.to_gcov_type ()); > + else > + asprintf (&buf, "[%.2f%%] [count: INV]", fvalue); > + > const char *ret = xstrdup_for_dump (buf); > free (buf); > > @@ -102,7 +107,7 @@ dump_probability (int value) > static void > dump_edge_probability (pretty_printer *buffer, edge e) > { > - pp_scalar (buffer, " %s", dump_probability (e->probability)); > + pp_scalar (buffer, " %s", dump_probability (e->probability, e->count)); > } > > /* Print GIMPLE statement G to FILE using SPC indentation spaces and > @@ -1085,7 +1090,7 @@ dump_gimple_label (pretty_printer *buffer, glabel *gs, int spc, > dump_generic_node (buffer, label, spc, flags, false); > basic_block bb = gimple_bb (gs); > if (bb && !(flags & TDF_GIMPLE)) > - pp_scalar (buffer, " %s", dump_probability (bb->frequency)); > + pp_scalar (buffer, " %s", dump_probability (bb->frequency, bb->count)); > pp_colon (buffer); > } > if (flags & TDF_GIMPLE) > @@ -2665,7 +2670,8 @@ dump_gimple_bb_header (FILE *outf, basic_block bb, int indent, > fprintf (outf, "%*sbb_%d:\n", indent, "", bb->index); > else > fprintf (outf, "%*s %s:\n", > - indent, "", bb->index, dump_probability (bb->frequency)); > + indent, "", bb->index, dump_probability (bb->frequency, > + bb->count)); > } > } > } > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c > index 8a13f33d2a1..e15d88b7341 100644 > --- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c > +++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c > @@ -290,7 +290,7 @@ RNG (0, 6, 8, "%s%ls", "1", L"2"); > > /* Only conditional calls to must_not_eliminate must be made (with > any probability): > - { dg-final { scan-tree-dump-times "> \\\[\[0-9.\]+%\\\]:\n *must_not_eliminate" 127 "optimized" { target { ilp32 || lp64 } } } } > - { dg-final { scan-tree-dump-times "> \\\[\[0-9.\]+%\\\]:\n *must_not_eliminate" 96 "optimized" { target { { ! ilp32 } && { ! lp64 } } } } } > + { dg-final { scan-tree-dump-times "> \\\[\[0-9.\]+%\\\]\\ \\\[count:\\[^:\\]*\\\]:\n *must_not_eliminate" 127 "optimized" { target { ilp32 || lp64 } } } } > + { dg-final { scan-tree-dump-times "> \\\[\[0-9.\]+%\\\]\\ \\\[count:\\[^:\\]*\\\]:\n *must_not_eliminate" 96 "optimized" { target { { ! ilp32 } && { ! lp64 } } } } } > No unconditional calls to abort should be made: > { dg-final { scan-tree-dump-not ";\n *must_not_eliminate" "optimized" } } */ > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/dump-2.c b/gcc/testsuite/gcc.dg/tree-ssa/dump-2.c > index 8a63af4e0ef..6ae2ef5bf39 100644 > --- a/gcc/testsuite/gcc.dg/tree-ssa/dump-2.c > +++ b/gcc/testsuite/gcc.dg/tree-ssa/dump-2.c > @@ -6,4 +6,4 @@ int f(void) > return 0; > } > > -/* { dg-final { scan-tree-dump " \\\[100\\\.00%\\\]:" "optimized" } } */ > +/* { dg-final { scan-tree-dump " \\\[100\\\.00%\\\] \\\[count: INV\\\]:" "optimized" } } */ > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp101.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp101.c > index bf4109f7156..e7cad289763 100644 > --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp101.c > +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp101.c > @@ -10,4 +10,4 @@ int main () > return 0; > } > > -/* { dg-final { scan-tree-dump " \\\[\[0-9.\]+%\\\]:\[\n\r \]*return 0;" "optimized" } } */ > +/* { dg-final { scan-tree-dump " \\\[\[0-9.\]+%\\\] \\\[count: \\[^:\\]*\\\]:\[\n\r \]*return 0;" "optimized" } } */ >