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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, from the matched patterns described in the comment above simplify_rotate,
I'm afraid
   ((T) ((T2) X << Y)) | ((T) ((T2) X >> ((-Y) & (B - 1))))
   ((T) ((T2) X << (int) Y)) | ((T) ((T2) X >> (int) ((-Y) & (B - 1))))
aren't valid, unless we can prove that Y < B (say through ranger), because
if Y is >= B, then the left shift is valid but doesn't leave any bits from X in
the return value.
If ranger can't prove Y < B, then the only supportable patterns for those cases
I'm afraid are what is accepted since PR62263 change, those patterns with Y &
(B - 1)
even for the first operand.

Reply via email to