This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Port value profiling to -fopt-info infrastructure.
- From: Martin Liška <mliska at suse dot cz>
- To: Richard Biener <richard dot guenther at gmail dot com>, Jeff Law <law at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 9 Aug 2019 15:13:48 +0200
- Subject: Re: [PATCH] Port value profiling to -fopt-info infrastructure.
- References: <5d86ba1f-cf38-3a69-8b9f-60a108922243@suse.cz> <5a1e050b-1c36-3b3f-15d5-7a2bec71e111@redhat.com> <CAFiYyc2DevdWSc_pCL+MwNAx1__tLSv3=qiPNPMfG7YHJ=vo5g@mail.gmail.com>
On 8/9/19 10:13 AM, Richard Biener wrote:
> On Thu, Aug 8, 2019 at 4:17 PM Jeff Law <law@redhat.com> wrote:
>>
>> On 8/8/19 7:04 AM, Martin Liška wrote:
>>> Hi.
>>>
>>> As requested by Richi, I'm suggesting to use new dump_printf
>>> optimization info infrastructure.
>>>
>>> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>>>
>>> Ready to be installed?
>>> Thanks,
>>> Martin
>>>
>>> gcc/ChangeLog:
>>>
>>> 2019-08-08 Martin Liska <mliska@suse.cz>
>>>
>>> * value-prof.c (gimple_divmod_fixed_value_transform):
>>> Use dump_printf_loc.
>>> (gimple_mod_pow2_value_transform): Likewise.
>>> (gimple_mod_subtract_transform): Likewise.
>>> (init_node_map): Likewise.
>>> (gimple_ic_transform): Likewise.
>>> (gimple_stringops_transform): Likewise.
>>>
>>> gcc/testsuite/ChangeLog:
>>>
>>> 2019-08-08 Martin Liska <mliska@suse.cz>
>>>
>>> * g++.dg/tree-prof/indir-call-prof.C: Add -optimize
>>> to -fdump-ipa-profile.
>>> * g++.dg/tree-prof/morefunc.C: Likewise.
>>> * g++.dg/tree-prof/reorder.C: Likewise.
>>> * gcc.dg/tree-prof/ic-misattribution-1.c: Likewise.
>>> * gcc.dg/tree-prof/indir-call-prof.c: Likewise.
>>> * gcc.dg/tree-prof/stringop-1.c: Likewise.
>>> * gcc.dg/tree-prof/stringop-2.c: Likewise.
>>> * gcc.dg/tree-prof/val-prof-1.c: Likewise.
>>> * gcc.dg/tree-prof/val-prof-2.c: Likewise.
>>> * gcc.dg/tree-prof/val-prof-3.c: Likewise.
>>> * gcc.dg/tree-prof/val-prof-4.c: Likewise.
>>> * gcc.dg/tree-prof/val-prof-5.c: Likewise.
>>> * gcc.dg/tree-prof/val-prof-7.c: Likewise.
>>> ---
>>> .../g++.dg/tree-prof/indir-call-prof.C | 2 +-
>>> diff --git a/gcc/value-prof.c b/gcc/value-prof.c
>>> index 759458868a8..9d9785b179d 100644
>>> --- a/gcc/value-prof.c
>>> +++ b/gcc/value-prof.c
>>> @@ -809,12 +809,9 @@ gimple_divmod_fixed_value_transform (gimple_stmt_iterator *si)
>>> @@ -1445,41 +1447,36 @@ gimple_ic_transform (gimple_stmt_iterator *gsi)
>> [ ... ]
>>> - if (dump_file)
>>> + if (dump_enabled_p ())
>>> {
>>> - fprintf (dump_file, "Indirect call -> direct call ");
>>> - print_generic_expr (dump_file, gimple_call_fn (stmt), TDF_SLIM);
>>> - fprintf (dump_file, "=> ");
>>> - print_generic_expr (dump_file, direct_call->decl, TDF_SLIM);
>>> - fprintf (dump_file, " transformation on insn postponned to ipa-profile");
>>> - print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
>>> - fprintf (dump_file, "hist->count %" PRId64
>>> - " hist->all %" PRId64"\n", count, all);
>>> + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt,
>>> + "Indirect call -> direct call "
>>> + "%T => %T transformation on insn postponed "
>>> + "to ipa-profile: %G", gimple_call_fn (stmt),
>>> + direct_call->decl, stmt);
>>> + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt,
>>> + "hist->count %" PRId64
>>> + " hist->all %" PRId64"\n", count, all);
>>> }
>> It's not entirely clear if you want MSG_OPTIMIZED_LOCATION vs
>> MSG_MISSED_OPTIMIZATION here. Double check and adjust if needed.
>
> But we don't want multi-line stuff here but a single message for
> MSG_OPTIMIZED_LOCATION, eventually detail printed with MSG_NOTE.
> Can you adjust accordingly, esp. try not dumping GIMPLE stmts for
> the non-NOTE message give it is directed at users. So just
>
> Indirect call -> direct call %T -> %T transformation
>
> (without the postponed stuff, that's implementation detail not interesting).
Ok, there's a patch that I've just tested.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
Ready to be installed?
Thanks,
Martin
>
> Richard.
>
>> OK with or without that adjustment.
>>
>> Jeff
>From 4eafa3655a6f557d69c2c41e29634a8c805ea8cc Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Fri, 9 Aug 2019 14:34:55 +0200
Subject: [PATCH] Simplify dump_printf in value-prof.c
gcc/ChangeLog:
2019-08-09 Martin Liska <mliska@suse.cz>
* value-prof.c (gimple_ic_transform): Add new line.
Print details with MSG_NOTE.
gcc/testsuite/ChangeLog:
2019-08-09 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-prof/ic-misattribution-1.c: Use -fdump-ipa-profile-node.
---
gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c | 2 +-
gcc/value-prof.c | 9 ++++-----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c b/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
index 126236eba8e..0c69045591b 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -fdump-ipa-profile-optimized" } */
+/* { dg-options "-O2 -fdump-ipa-profile-note" } */
/* { dg-additional-sources "ic-misattribution-1a.c" } */
extern void other_caller (void);
diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index 9d9785b179d..00ede8d985f 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -1450,7 +1450,7 @@ gimple_ic_transform (gimple_stmt_iterator *gsi)
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, stmt,
"Indirect call -> direct call from other "
- "module %T=> %i (will resolve only with LTO)",
+ "module %T=> %i (will resolve only with LTO)\n",
gimple_call_fn (stmt), (int)val);
}
return false;
@@ -1471,10 +1471,9 @@ gimple_ic_transform (gimple_stmt_iterator *gsi)
{
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt,
"Indirect call -> direct call "
- "%T => %T transformation on insn postponed "
- "to ipa-profile: %G", gimple_call_fn (stmt),
- direct_call->decl, stmt);
- dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt,
+ "%T => %T transformation on insn postponed\n",
+ gimple_call_fn (stmt), direct_call->decl);
+ dump_printf_loc (MSG_NOTE, stmt,
"hist->count %" PRId64
" hist->all %" PRId64"\n", count, all);
}
--
2.22.0