https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92140
--- Comment #11 from Segher Boessenkool <segher at gcc dot gnu.org> --- If an insn condition uses can_create_pseudo_p, the insn will suddenly stop to match after reload --> kaboom. If your insn always splits ("&& 1"), this means that if any of these: NEXT_PASS (pass_lower_subreg3); NEXT_PASS (pass_df_initialize_no_opt); NEXT_PASS (pass_stack_ptr_mod); NEXT_PASS (pass_mode_switching); NEXT_PASS (pass_match_asm_constraints); NEXT_PASS (pass_sms); NEXT_PASS (pass_live_range_shrinkage); NEXT_PASS (pass_sched); NEXT_PASS (pass_early_remat); NEXT_PASS (pass_ira); NEXT_PASS (pass_reload); passes creates a new such insn, you ICE (or worse, do the wrong thing). That limits exposure quite a bit, but OTOH it is really hard to prove some of these passes will not create such insns.