[Bug middle-end/123635] _BitInt bitint_extended vs. abi_limb_prec > limb_prec or even just bitint_extended

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 30 11:11:06 GMT 2026


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

--- Comment #15 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-16 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:301eb08fa2c5b6f3045260bf1294c2e2bacbcd90

commit r16-8837-g301eb08fa2c5b6f3045260bf1294c2e2bacbcd90
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Apr 29 11:12:47 2026 +0200

    bitintlower: Padding bit fixes, part 6 [PR123635]

    I've missed torture/bitint-{93,94}.c FAILs on s390x-linux (i.e. big
endian).
    For __builtin_mul_overflow, the code to extend the partial most significant
    limb is done before memmoving it down, so that limb actually isn't on big
    endian at offset 0 but is nelts - obj_nelts.  The following patch computes
    obj_nelts first, uses it on big-endian and so that the offset checking
    asserts don't trigger, on big-endian also uses NULL_TREE first argument to
    limb_access.

    2026-04-29  Jakub Jelinek  <jakub@redhat.com>

            PR middle-end/123635
            * gimple-lower-bitint.cc
(bitint_large_huge::finish_arith_overflow):
            Move obj_nelts/atype computation before bitint_extended handling. 
For
            bitint_big_endian in the bitint_extended handling use
size_zero_node
            only for limb_access_type calls, otherwise use
            size_int (nelts - obj_nelts) and pass NULL_TREE as first argument
to
            limb_access calls.

    Reviewed-by: Richard Biener <rguenth@suse.de>
    (cherry picked from commit 32160061ca6d0fc9588b3dea41ced503907f79ca)


More information about the Gcc-bugs mailing list