http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57300
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Apparently split* passes aren't the only passes that split insns though, so the patch I've attached is incomplete anyway. >From quick skimming, it seems split*, dbr, final, combine and pro_and_epilogue passes split insns right now, and some backends (but not i386/s390 that are problematic here). split* passes don't run df_analyze at all, so I think it is safe to call df_note_add_problem (); df_analyze (); there, final/dbr don't have cfg around, so it is unsafe, combine already has note problem computed, and pro_and_epilogue only splits eh_return pattern. So supposedly bool split_dead_or_set_p (rtx insn, const_rtx x) { if (BLOCK_FOR_INSN (insn) == NULL) return false; /* If cfg is gone, be conservative. */ if (df_note == NULL) { df_note_add_problem (); df_analyze (); } return dead_or_set_p (insn, x); } could work. Steven, comments?