This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 4/N] Recover GOTO predictor.
On 06/22/2017 12:27 PM, Richard Biener wrote:
> On Wed, Jun 21, 2017 at 3:06 PM, Martin Liška <mliska@suse.cz> wrote:
>> Hello.
>>
>> There's one additional predictor enhancement that is GOTO predict that
>> used to working. Following patch adds expect statement for C and C++ family
>> languages.
>>
>> There's one fallout which is vrp24.c test-case, where only 'Simplified relational'
>> appears just once. Adding Richi and Patrick who can probably help how to fix the
>> test-case.
>
> Happens to be optimized better now, there's only one predicate to simplify
> left in the IL input to VRP1. I suggest to change it to match 1 times and add
> -fdump-tree-optimized to dg-options and
>
> /* { dg-final { scan-tree-dump-times "if " 3 "optimized" } } */
>
> to verify we have 3 conditions left.
One small note, I see 4 conditions in optimized dump:
sss (struct rtx_def * insn, int code1, int code2, int code3)
{
int D1544;
struct rtx_def * body;
_Bool D1562;
<bb 2> [100.00%] [count: INV]:
body_5 = insn_4(D)->u.fld[5].rt_rtx;
D1544_6 = body_5->code;
if (D1544_6 == 55)
goto <bb 7> (L7); [34.00%] [count: INV]
else
goto <bb 3>; [66.00%] [count: INV]
<bb 3> [66.00%] [count: INV]:
if (code3_7(D) == 99)
goto <bb 4>; [34.00%] [count: INV]
else
goto <bb 8> (L16); [66.00%] [count: INV]
<bb 4> [22.44%] [count: INV]:
D1562_9 = code1_8(D) == 10;
if (D1562_9 == 1)
goto <bb 7> (L7); [64.00%] [count: INV]
else
goto <bb 8> (L16); [36.00%] [count: INV]
<bb 5> [9.82%] [count: INV]:
arf ();
<bb 6> [46.68%] [count: INV]:
frob (); [tail call]
goto <bb 8> (L16); [100.00%] [count: INV]
L7 [48.36%] [count: INV]:
if (code2_12(D) == 42)
goto <bb 5>; [20.24%] [count: INV]
else
goto <bb 6>; [79.76%] [count: INV]
L16 [100.00%] [count: INV]:
return;
}
Is it a problem or adjusting to 4 is fine?
Martin
>
>> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
>>
>> Ready to be installed?
>> Martin