https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123121
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Known to fail|16.0 |15.2.1
Last reconfirmed| |2025-12-30
Ever confirmed|0 |1
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
The issue happens in LRA, I was able to trigger the bug with current x86_64
gcc-15:
Target: x86_64-pc-linux-gnu
gcc version 15.2.1 20251230 [releases/gcc-15 r15-10642-ga54c5e248ad] (GCC)
We have the following in _.324r.ira:
...
(insn 425 430 441 11 (parallel [
(set (reg/v:SI 675 [ r ])
(plus:SI (reg:SI 103 [ _6 ])
(const_int -8 [0xfffffffffffffff8])))
(clobber (reg:CC 17 flags))
]) "pr123121.c":37:5 283 {*addsi_1}
(expr_list:REG_DEAD (reg:SI 103 [ _6 ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))
...
(insn 736 433 435 11 (set (reg:SI 994)
(const_int 0 [0])) "pr123121.c":39:12 96 {*movsi_internal}
(expr_list:REG_EQUIV (const_int 0 [0])
(nil)))
(insn 435 736 442 11 (set (reg:SI 992 [ _9 ])
(if_then_else:SI (leu (reg:CC 17 flags)
(const_int 0 [0]))
(reg/v:SI 675 [ r ])
(reg:SI 994))) "pr123121.c":39:12 1804 {*movsicc_noc}
(expr_list:REG_DEAD (reg:SI 994)
(expr_list:REG_DEAD (reg:CC 17 flags)
(expr_list:REG_EQUAL (if_then_else:SI (leu (reg:CC 17 flags)
(const_int 0 [0]))
(reg/v:SI 675 [ r ])
(const_int 0 [0]))
(nil)))))
...
and in _.325r.reload dump:
...
425: {r15:SI=dx:SI-0x8;clobber flags:CC;} <- sets r15
980: NOTE_INSN_DELETED
441: r13:DI=zero_extend(bp:QI)
887: dx:SI=bp:SI
446: di:SI=zero_extract(dx:SI,0x8,0x8)
886: r9:SI=di:SI
428: {ax:SI=0x1/si:SI;dx:SI=0x1%si:SI;clobber flags:CC;}
986: NOTE_INSN_DELETED
1014: NOTE_INSN_DELETED
467: r8:DI=zero_extend(si:QI)
889: ax:SI=si:SI
471: di:SI=zero_extract(ax:SI,0x8,0x8)
888: r11:SI=di:SI
1013: NOTE_INSN_DELETED
1012: [sp:DI-0x28]=r10:DI
890: r10:DI=[sp:DI-0x28]
438: di:SI=[r10:DI+0x8]
978: ax:SI=[sp:DI-0x20]
542: dx:DI=zero_extend(ax:QI)
891: [sp:DI-0x70]=dx:DI
1011: NOTE_INSN_DELETED
977: NOTE_INSN_DELETED
1010: NOTE_INSN_DELETED
1009: [sp:DI-0x20]=ax:SI
893: ax:SI=[sp:DI-0x20]
546: dx:SI=zero_extract(ax:SI,0x8,0x8)
892: [sp:DI-0x64]=dx:SI
1008: NOTE_INSN_DELETED
975: NOTE_INSN_DELETED
561: r12:DI=zero_extend(r15:QI)
973: ax:SI=r15:SI <- moves r15 to rax
571: dx:SI=zero_extract(ax:SI,0x8,0x8)
894: [sp:DI-0x74]=dx:SI
1007: NOTE_INSN_DELETED
972: NOTE_INSN_DELETED
517: r10:DI=zero_extend(di:QI)
897: dx:SI=di:SI
521: dx:SI=zero_extract(dx:SI,0x8,0x8)
896: [sp:DI-0x68]=dx:SI
1006: NOTE_INSN_DELETED
971: NOTE_INSN_DELETED
1019: {ax:SI=0x1/si:SI;dx:SI=0x1%si:SI;clobber flags:CC;} <- *** clobbers rax
984: NOTE_INSN_DELETED
429: {dx:SI=dx:SI-r14:SI;clobber flags:CC;}
433: flags:CC=cmp(bx:SI,0x2)
736: bx:SI=0
REG_EQUIV 0
1005: NOTE_INSN_DELETED
898: NOTE_INSN_DELETED
1004: [sp:DI-0x1c]=ax:SI <- spills clobbered
rax
983: NOTE_INSN_DELETED
435: bx:SI={(leu(flags:CC,0))?[sp:DI-0x1c]:bx:SI} <- fills clobbered
rax
REG_EQUAL {(leu(flags:CC,0))?r675:SI:0}
...
FYI, I was not able to trigger the bug with current mainline:
gcc version 16.0.0 20251209 (experimental) [master r16-5996-g0fcb1bd46a4] (GCC)
So, it is either fixed or gone latent in the mainline.