https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91161

--- Comment #3 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
With -fno-dce, a NOTE_INSN_DELETED_LABEL appears between the last "real" insn
in the basic block (a sibcall) and a barrier rtx:

(call_insn/u/c 20 19 12 3 (call (mem:QI (symbol_ref:DI ("ni") [flags 0x3] 
<function_decl 0x7ff3c49afe00 ni>) [0 ni S1 A8])
        (const_int 0 [0])) "pr91161.c":23:7 679 {*call}
     (expr_list:REG_DEAD (reg:DI 5 di)
        (expr_list:REG_DEAD (reg:QI 0 ax)
            (expr_list:REG_CALL_DECL (symbol_ref:DI ("ni") [flags 0x3] 
<function_decl 0x7ff3c49afe00 ni>)
                (expr_list:REG_ARGS_SIZE (const_int 0 [0])
                    (expr_list:REG_NORETURN (const_int 0 [0])
                        (expr_list:REG_EH_REGION (const_int 0 [0])
                            (nil)))))))
    (expr_list (use (reg:QI 0 ax))
        (expr_list:DI (use (reg:DI 5 di))
            (nil))))
(note 12 20 21 ("x6") NOTE_INSN_DELETED_LABEL 5)
(barrier 21 12 22)


Is this valid? I assume NOTE_INSN_DELETED can appear in that position as well?
If so, shouldn't begin_move_insn use next_nonnote_insn rather than plain
NEXT_INSN to find either the barrier or the label of the next bb?

Reply via email to