[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