https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109566
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-04-24 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW CC| |yinyuefengyi at gmail dot com --- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Ah, it ICEs on powerpc64-linux too, with -m32 -O2 -mpowerpc64 -mcpu=power3 (or 10 etc.), -mpowerpc64 is what matters. In *.postreload we have (jump_insn 10 7 32 2 (parallel [ (set (pc) (if_then_else (eq (and:DI (reg:DI 9 9 [121]) (const_int 2146435072 [0x7ff00000])) (const_int 0 [0])) (label_ref:SI 40) (pc))) (clobber (reg:DI 9 9 [125])) (clobber (reg:CC 100 0)) ]) "pr109566-3.c":6:6 229 {*branch_anddi3_dot} (int_list:REG_BR_PROB 708669604 (nil)) The define_insn_and_split has been introduced already in GCC 12 in PR102239 r12-6433 and I'd say it is just wrong, the FAIL part doesn't belong there, that is an ICE if for a define_insn_and_split with "#" the splitter part FAILs. The condition on the instruction or predicates/constraints should make sure it is splittable.