https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71916
--- Comment #8 from Richard Henderson <rth at gcc dot gnu.org> ---
(gdb) call debug_cfi_row(cur_row)
.cfi_def_cfa 7, 16
.cfi_offset 3, -16
.cfi_offset 16, -8
(gdb) call debug_cfi_row(ti->beg_row)
.cfi_def_cfa 7, 8
.cfi_offset 16, -8
(gdb) call debug_rtx(start)
(code_label 377 83 109 25 46 "" [3 uses])
(gdb) call debug_rtx(origin)
(jump_insn:TI 187 186 395 36 (set (pc)
(if_then_else (ne (reg:CCZ 17 flags)
(const_int 0 [0]))
(label_ref:DI 377)
(pc))) z.c:16 635 {*jcc_1}
(expr_list:REG_DEAD (reg:CCZ 17 flags)
(int_list:REG_BR_PROB 9500 (nil)))
-> 377)
On one code path we've saved RBX, and on another code path we haven't.
The label in question appears in jump2, presumably jump threading, but
I haven't actually traced the blocks to be sure this is true.
I imagine it's got something to do with the infinite loop vs shrink-wrapping.
We perhaps ought to have added a restore of RBX, but didn't because it
doesn't appear to be needed.