https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79437

--- Comment #3 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #2)
> Even -mno-stv doesn't help here, the problem is that for the shift we don't
> lower DImode operations here until too late (split2) and so EDX:EAX is used
> for the 64-bit value.

Yes, exactly.  After LRA we have RTL for the code w/o DO_BOOL:

   17: ax:DI=[sp:SI+0x4]
    6: {ax:DI=ax:DI 0>>0x3f;clobber flags:CC;}
   12: ax:SI=ax:SI
   13: use ax:SI

The code is fine with RA point of view.  In any case, it hardly can be fixed in
RA.  And it is practically impossible to teach RA to predict all subsequent
split decisions.

Reply via email to