On Tue, Dec 11, 2018 at 5:56 AM Jeff Law <l...@redhat.com> wrote:
>
>
>
> This is a pre-req for fixing 80520.  Essentially the goal here is to
> keep the key code in this form:
>
>   <bb 3>
>   [ ... ]
>   if (_20 != 0)
>     goto <bb 5>; [50.00%]
>   else
>     goto <bb 4>; [50.00%]
>
>   <bb 4> [local count: 531502203]:
>   _18 = _25 ^ 2567483615;
>
>   <bb 5> [local count: 1063004407]:
>   # prephitmp_49 = PHI <_25(3), _18(4)>
>   _2 = (void *) ivtmp.8_30;
>   MEM[base: _2, offset: 0B] = prephitmp_49;
>   ivtmp.8_29 = ivtmp.8_30 + 8;
>   if (ivtmp.8_29 != _6)
>     goto <bb 3>; [98.99%]
>   else
>     goto <bb 6>; [1.01%]
>
>
> Split-paths wants to duplicate bb5 into bb4.  It's just not all that
> profitable to do so.  We can get ever-so-slightly better code on a
> target like microblaze and perhaps others with delay slots and no
> conditional move/execution capabilities.  But that seems more like
> something we should be tackling at the RTL level.
>
> To finish fixing 80520 we will need to improve the RTL if-conversion
> where we presumably can cost things and make a good choice between the
> branchy code we have vs straightline code with a conditional move or
> conditional execution.  I'm not tackling that yet.
>
> Note that split-path-5 has the same basic structure.  A half-diamond
> with a single statement in the middle block that should be trivially
> if-convertable if profitable.  So I adjusted that testcase.
>
> Bootstrapped and regression tested on x86_64.  Installing on the trunk
> momentarily.

You seem to have committed two copies of the changes?

Richard.

Reply via email to