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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-14 branch has been updated by Jakub Jelinek
<[email protected]>:

https://gcc.gnu.org/g:b602b32ff06726a6ede59b10e0f5b84f9f546e4c

commit r14-11150-gb602b32ff06726a6ede59b10e0f5b84f9f546e4c
Author: Jakub Jelinek <[email protected]>
Date:   Tue Dec 3 11:16:37 2024 +0100

    bitintlower: Fix up ?ROTATE_EXPR lowering [PR117847]

    In the ?ROTATE_EXPR lowering I forgot to handle rotation by 0 correctly.
    INTEGER_CST 0 is very unlikely, it would be probably folded away, but
    a non-constant count can't use just p - n because then the shift count
    is out of bounds for zero.

    In the FE I use n == 0 ? x : (x << n) | (x >> (p - n)) but bitintlower
    here isn't prepared at this point to have bb split and am not sure if
    using COND_EXPR is a good idea either, so the patch uses (p - n) % p.
    Perhaps I should just disable lowering the rotate in the FE for the
    non-mode precision BITINT_TYPEs too.

    2024-12-03  Jakub Jelinek  <[email protected]>

            PR middle-end/117847
            * gimple-lower-bitint.cc (gimple_lower_bitint) <case LROTATE_EXPR>:
            Use m = (p - n) % p instead of m = p - n for the other shift count.

    (cherry picked from commit 0b89341f124eadc689682d01193309225adfec23)
  • [Bug middle-end/117847] wrong c... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to