[Bug rtl-optimization/126503] Wrong code with signed bitint

"jakub at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.