On 07/28/2017 09:21 AM, Richard Biener wrote:
> On Thu, Jul 27, 2017 at 4:24 PM, Martin Liška <mli...@suse.cz> wrote:
>> Hi.
>>
>> Following simple patch adds support for dumping of BBs when it's a BB
>> that contains a label. That makes it easier for debugging as one can
>> find destination for an edge in dump file.
>>
>> Sample, before:
>>
>> foo (int a)
>> {
>>   int D.1821;
>>   int _1;
>>   int _4;
>>   int _5;
>>
>>   <bb 2> [0.00%] [count: INV]:
>>   switch (a_2(D)) <default: <L2> [INV] [count: INV], case 0: <L0> [INV] 
>> [count: INV], case 1: <L1> [INV] [count: INV]>
>>
>> <L0> [0.00%] [count: INV]:
>>   a_3 = a_2(D) + 2;
>>
>> <L1> [0.00%] [count: INV]:
>>   _4 = 2;
>>   goto <bb 6> (<L3>); [INV] [count: INV]
>>
>> <L2> [0.00%] [count: INV]:
>>   _5 = 123;
>>
>>   # _1 = PHI <_4(4), _5(5)>
>> <L3> [0.00%] [count: INV]:
>>   return _1;
>>
>> }
>>
>> After:
>>
>> foo (int a)
>> {
>>   int D.1821;
>>   int _1;
>>   int _4;
>>   int _5;
>>
>>   <bb 2> [0.00%] [count: INV]:
>>   switch (a_2(D)) <default: <L2> [INV] [count: INV], case 0: <L0> [INV] 
>> [count: INV], case 1: <L1> [INV] [count: INV]>
>>
>> <L0> (<bb 3>) [0.00%] [count: INV]:
>>   a_3 = a_2(D) + 2;
>>
>> <L1> (<bb 4>) [0.00%] [count: INV]:
>>   _4 = 2;
>>   goto <bb 6> (<L3>); [INV] [count: INV]
>>
>> <L2> (<bb 5>) [0.00%] [count: INV]:
>>   _5 = 123;
>>
>>   # _1 = PHI <_4(4), _5(5)>
>> <L3> (<bb 6>) [0.00%] [count: INV]:
>>   return _1;
>>
>> }
>>
>> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
>>
>> Thoughts?
> 
> I think I prefer to always see
> 
>   <bb 3> ....:
> 
> and if there's a label just dump that as well, thus
> 
>   <bb 3> ....:
>   L0:
> 
> I think that's how we dump the case with multiple labels.  And always use the
> implicit bb N when dumping destinations (in gotos, switches, etc).
> 
> That is, what we have now is IMHO premature prettifying losing BB
> indices in the dumps
> unnecessarily.
> 
> Richard.

Hi.

I like your ideas, there's difference in between 7.1 and modified trunk:

foo (int a)
{
  int D.1824;
  int _1;
  int _4;
  int _6;

  <bb 2> [0.00%] [count: INV]:
  switch (a_2(D)) <default: <L2> [INV] [count: INV], case 0: <L0> [INV] [count: 
INV], case 1: <L1> [INV] [count: INV]>

<L0> [0.00%] [count: INV]:
  a_3 = a_2(D) + 2;

<L1> [0.00%] [count: INV]:
  _4 = 2;
  goto <bb 8> (<L6>); [INV] [count: INV]

<L2> [0.00%] [count: INV]:

  <bb 6> [0.00%] [count: INV]:
  a_5 = a_2(D) + 2;

label_XXX [0.00%] [count: INV]:
label_YYY [0.00%] [count: INV]:
  _6 = 101;

  # _1 = PHI <_4(4), _6(7)>
<L6> [0.00%] [count: INV]:
  return _1;

}

after:

foo (int a)
{
  int D.1824;
  int _1;
  int _4;
  int _6;

  <bb 2> [0.00%] [count: INV]:
  switch (a_2(D)) <default: <bb 5> [INV] [count: INV], case 0: <bb 3> [INV] 
[count: INV], case 1: <bb 4> [INV] [count: INV]>

  <bb 3> [0.00%] [count: INV]:
<L0>:
  a_3 = a_2(D) + 2;

  <bb 4> [0.00%] [count: INV]:
<L1>:
  _4 = 2;
  goto <bb 8>; [INV] [count: INV]

  <bb 5> [0.00%] [count: INV]:
<L2>:

  <bb 6> [0.00%] [count: INV]:
  a_5 = a_2(D) + 2;

  <bb 7> [0.00%] [count: INV]:
label_XXX:
label_YYY:
  _6 = 101;

  <bb 8> [0.00%] [count: INV]:
  # _1 = PHI <_4(4), _6(7)>
<L6>:
  return _1;

}

Do you like it? What about indentation of labels, should I increase it or leave 
it?
I guess there will be some tests that will need to be adjusted.

Martin

> 
>> Martin
>>
>> gcc/testsuite/ChangeLog:
>>
>> 2017-07-27  Martin Liska  <mli...@suse.cz>
>>
>>         * gcc.dg/builtin-unreachable-6.c: Update scanned pattern.
>>         * gcc.dg/tree-ssa/attr-hotcold-2.c: Likewise.
>>         * gcc.dg/tree-ssa/ssa-ccp-18.c: Likewise.
>>
>> gcc/ChangeLog:
>>
>> 2017-07-27  Martin Liska  <mli...@suse.cz>
>>
>>         * gimple-pretty-print.c (dump_gimple_label): Dump BB number.
>> ---
>>  gcc/gimple-pretty-print.c                      | 6 +++++-
>>  gcc/testsuite/gcc.dg/builtin-unreachable-6.c   | 2 +-
>>  gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c | 4 ++--
>>  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-18.c     | 3 +--
>>  4 files changed, 9 insertions(+), 6 deletions(-)
>>
>>

Reply via email to