On Tue, 2 Feb 2021, Richard Sandiford wrote:

> Richard Biener <rguent...@suse.de> writes:
> > On January 30, 2021 11:52:20 AM GMT+01:00, Jakub Jelinek <ja...@redhat.com> 
> > wrote:
> >>On Sat, Jan 30, 2021 at 11:47:24AM +0100, Richard Biener wrote:
> >>> OK, so I'd prefer we simply unset the flag after processing deferred
> >>rescan. I clearly misread the function to do that. 
> >>
> >>This works too, will bootstrap/regtest it now.
> >
> > OK. 
> 
> FWIW, I'm still not convinced we need to defer the rescan here.
> AIUI, the concern was that the pass introduces uses of something
> and then only later introduces the definition.  But that's OK:
> the two things don't have to be added in a set order.
> 
> In particular, the normal rescan doesn't propagate the effects
> throughout the cfg; it just updates the list of references in the
> instruction itself and marks the block as dirty for later processing.
> 
> The usual reason for deferring rescans is if the instruction can't
> cope with the df_refs changing from under them like that, e.g.
> because they're iterating through a list of df_refs, or because
> they're using df_refs to represent value numbers.  It shouldn't
> be a problem for this pass.

I guess that's correct but doing the scan on the "final" insn
feels much cleaner - given all the confusion it also looks safer
(doing defered scans as before) since I intend to backport this.
But if you feel strongly about this we can of course change it.

Thanks,
Richard.

Reply via email to