On 11/11/2016 06:59 AM, Martin Liška wrote:
Hello.
I spent quite time during this stage1 playing with predictors and we found
with Honza multiple situations where a prediction was oddly calculated.
Thus, we're suggesting to enhance default dump format to show BB frequencies
and edge probabilities, as follows:
main (int a)
{
int _1;
<bb 2> [100.0%]:
if (a_2(D) == 123)
goto <bb 5> (<L18>); [18.8%]
else
goto <bb 3> (sparta); [81.2%]
sparta [81.2%]:
switch (a_2(D)) <default: <L5> [33.3%], case 1 ... 2: <L18> [66.7%]>
<L5> [27.1%]:
# _1 = PHI <2(2), 3(4), a_2(D)(3)>
<L18> [100.0%]:
return _1;
}
That would exhibit these numbers to people, which would eventually report
strange numbers seen in dump files.
I was quite surprised that the patch does not break many scanning tests.
Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
Thoughts?
Martin
0001-Dump-probability-for-edges-a-frequency-for-BBs.patch
From 5b7d8393564a0111698b58989ac74b45cf019701 Mon Sep 17 00:00:00 2001
From: marxin <mli...@suse.cz>
Date: Wed, 9 Nov 2016 14:11:48 +0100
Subject: [PATCH] Dump probability for edges a frequency for BBs
gcc/ChangeLog:
2016-11-11 Martin Liska <mli...@suse.cz>
* gimple-pretty-print.c (dump_edge_probability): New function.
(dump_gimple_switch): Dump label edge probabilities.
(dump_gimple_cond): Likewise.
(dump_gimple_label): Dump
(dump_gimple_bb_header): Dump basic block frequency.
(pp_cfg_jump): Replace e->dest argument with e.
(dump_implicit_edges): Likewise.
* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at):
Use gimple_bb (at) instead of at->bb.
gcc/testsuite/ChangeLog:
2016-11-11 Martin Liska <mli...@suse.cz>
* gcc.dg/builtin-unreachable-6.c: Update test to not to scan
parts for frequencies/probabilities.
* gcc.dg/pr34027-1.c: Likewise.
* gcc.dg/strict-overflow-2.c: Likewise.
* gcc.dg/tree-ssa/20040703-1.c: Likewise.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.
* gcc.dg/tree-ssa/pr32044.c: Likewise.
* gcc.dg/tree-ssa/vector-3.c: Likewise.
* gcc.dg/tree-ssa/vrp101.c: Likewise.
* gcc.dg/tree-ssa/dump-2.c: New test.
LGTM. While I've often found a way to get this stuff when looking at
probability updating code, having it in the standard dumps seems like a
good enhancement.
jeff