https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- No, IMHO you can have many debug insns after that and before first real insn. I'd go for something like: rtx_insn *insn = get_insns (); if (!active_insn_p (insn)) insn = next_active_insn (insn); and insert before, rather than after (otherwise you don't handle the hypothetical case of an active insn being the first one). That would require rewriting the nop insertion code after it, because you want to insert the 6 byte nops first. Or just gcc_assert the first insn is not active, or if the first insn is active, emit a NOTE_INSN_DELETED note before that first active insn, emit the nops after that note and perhaps kill the note at the end. Please test void foo (void) { __builtin_unreachable (); } actually generates any active insns.