https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109086
--- Comment #7 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- Things are already wrong in 255r: (jump_insn 17 16 42 4 (set (pc) (if_then_else (ne (reg:DI 90) (const_int 0 [0])) (label_ref 20) (pc))) "t.c":4:23 discrim 1 -1 (int_list:REG_BR_PROB 536870916 (nil)) -> 20) (note 42 17 18 5 [bb 5] NOTE_INSN_BASIC_BLOCK) (insn 18 42 19 5 (set (reg:SI 91) (zero_extend:SI (mem:QI (plus:DI (reg/v/f:DI 82 [ filename ]) (const_int 1 [0x1])) [0 MEM <char[1:2]> [(void *)filename_3(D)]+1 S1 A8]))) "t.c":4:23 discrim 1 -1 (nil)) (insn 19 18 20 5 (set (reg:DI 92) (plus:DI (subreg:DI (reg:SI 91) 0) (const_int 0 [0]))) "t.c":4:23 discrim 1 -1 (nil)) (code_label 20 19 43 6 3 (nil) [1 uses]) (note 43 20 21 6 [bb 6] NOTE_INSN_BASIC_BLOCK) (insn 21 43 22 6 (set (reg:DI 80 [ _1 ]) (sign_extend:DI (subreg:SI (reg:DI 92) 0))) "t.c":4:23 discrim 1 -1 (nil)) Note that the jump_insn jumps over insn 19 which initializes the vreg 92 (which would become r13).