[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 #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(gdb) x/8gx &u
0x420030 <u>:   0x0000000000000001      0x0000000000000000
0x420040 <u+16>:        0x0000000000000000      0x0000000000000000
0x420050 <u+32>:        0xffffffffffffffff      0xffffffffffffffff
0x420060 <u+48>:        0x000000000000ffff      0x0000000000000000
(gdb) x/6gx &v
0x420070 <v>:   0xfffffffffffffffc      0xffffffffffffffff
0x420080 <v+16>:        0xffffffffffffffff      0xffffffffffffffff
0x420090 <v+32>:        0x0000000000000000      0x0000000000000000
(gdb) x/4gx &w
0x4200a0 <w>:   0x000000000000004c      0x0000000000000000
0x4200b0 <w+16>:        0xffffffffffffffff      0x0000000000000000

where
unsigned _BitInt(400) u;
unsigned _BitInt(300) v;
_BitInt(129) w;
and
  u = foo (-1wb);
  v = bar (1wb, 3uwb);
  w = baz (100);
so, the first one has unwanted 1 bits in upper 144 bits, low 256 bits correct,
the second one unwanted 0 bits in upper 44 bits, low 256 bits correct, and
finally the
last one incorrect 1 bit in the most significant bit.
Doesn't mean it has to be a RTL issue, could be bitint lowering too, let me
check.
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.