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.