https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125557
--- Comment #14 from Drea Pinski <pinskia at gcc dot gnu.org> ---
>I guess -fsplit-paths aside (I assume we'll remove it, I can help with that)
>we still need PR125792 ?
I wonder if we could improve ifcvt.cc here rather than doing it on the gimple
level.
I noticed that if we turn off the schedule insns before RA we get a mess (that
is what -O2 does). But -O3 we get:
bne .L3
add x7, x3, 1
add x6, x3, 2
.L3:
Which could be ifcvt'ed.
IF-THEN-ELSE-JOIN block found, pass 1, test 3, then 4, else 5, join 6
ifcv/ce2 finds it but does nothing to it because it is still too complex at
that point. In fact the other instructions are still there as the scheduler is
run afterwards.
even in ce3 (which is after ra but before the last scheduler) we still have
`if (a) then else` form. that is because the scheduler after ra moves the shift
and add out of the each side.