On Mon, Aug 12, 2024 at 04:19:58AM -0700, H.J. Lu wrote: > > This is wrong. As documented, BB_HEAD needs to be either a CODE_LABEL, or > > NOTE_INSN_BASIC_BLOCK. > > ira.cc has > > new_insn = emit_insn_before (PATTERN (def_insn), use_insn); > REG_NOTES (new_insn) = REG_NOTES (def_insn); > REG_NOTES (def_insn) = 0; > /* Rescan it to process the notes. */ > df_insn_rescan (new_insn); > > /* Make sure this insn is recognized before reload begins, > otherwise eliminate_regs_in_insn will die. */ > INSN_CODE (new_insn) = INSN_CODE (def_insn); > > delete_insn (def_insn); > > XEXP (reg_equiv[regno].init_insns, 0) = new_insn; > > REG_BASIC_BLOCK (regno) = use_bb->index; > REG_N_CALLS_CROSSED (regno) = 0; > > if (use_insn == BB_HEAD (use_bb)) > BB_HEAD (use_bb) = new_insn; > > new_insn isn't CODE_LABEL nor NOTE_INSN_BASIC_BLOCK. > Should it be changed?
Guess it depends if it survives that way until after the pass or not, if the pass can tolerate temporary violation, fine, if it survives to next passes, it is not. Jakub