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.

Reply via email to