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.

Reply via email to