http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57300
--- Comment #9 from Steven Bosscher <steven at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #6)
> 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?
I don't think this will work. The fact that df_note != NULL does not
mean the notes are up-to-date.
It seems to me that after freeing the CFG, no pass should rely on the
REG_DEAD and REG_UNUSED notes if Eric's comment in PR57281 is correct:
That each pass is responsible for re-computing the notes if it needs
them. But I would much rather have the passes at least discard the
notes if the pass can't update them. After all, it's not just this
dead_or_set_p function that relies on these notes, but also single_set
and a bunch of other functions.