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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
          Component|testsuite                   |rtl-optimization

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The reason why late_combine1 does not do it is because we have:
failed to match this instruction:
(set (reg:SI 123 [ _2 ])
    (and:SI (ashiftrt:SI (reg:SI 125 [ xD.3519 ])
            (const_int 14 [0xe]))
        (const_int 6 [0x6])))

BUT combine is able to change the ashiftrt into lshiftrt and that matches.

I am not sure where we should put that transformation or should the target have
a matching pattern for the above and make sure the const value of the and does
NOT have the sign bit set.

Reply via email to