http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55306



             Bug #: 55306

           Summary: Make combine emit converted logical right shifts

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: enhancement

          Priority: P3

         Component: rtl-optimization

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: olege...@gcc.gnu.org





As of rev 193423 the combine pass can successfully convert arithmetic right

shifts into logical right shifts, but will not split / emit them as individual

insns if ...

* the target has arith. right shift patterns defined that match the shift

* the target does not have an insn that combine came up with, which inlcudes

  the logical shift.



There are some targets (SH, ARC, see PR 54089) where logical right shifts are

cheaper than arithmetic right shifts.

Since combine already has shift conversion integrated, it would probably make

sense to extend it, instead of replicating it in some separate pass or doing

fancy stuff in the target code.

Ideally, whenever combine converts a arith shift into a logical shift it should

look at the costs of the shifts and always split out the cheaper shift insn (if

the target has a pattern for the logical shift).

Reply via email to