[Bug rtl-optimization/126503] Wrong code with signed bitint
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jul 30 17:13:01 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126503
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The reason why it works fine on x86_64/i686 is that those targets have the
uaddc5_optab/usubc5_optab optabs for the limb mode, so they use
_11 = .USUBC (0, _8, _9);
not just twice in the loop doing the negation, but also
_18 = MEM <unsigned long> [(_BitInt(257) *)&a + 32B];
_19 = (<unnamed-signed:1>) _18;
_20 = (<unnamed-unsigned:1>) _19;
_21 = (unsigned long) _20;
_22 = .USUBC (0, _21, _10);
_23 = IMAGPART_EXPR <_22>;
_24 = REALPART_EXPR <_22>;
_25 = (<unnamed-signed:1>) _24;
_26 = (unsigned long) _25;
MEM <unsigned long> [(unsigned _BitInt(400) *)&<retval> + 32B] = _26;
after the loop.
More information about the Gcc-bugs
mailing list