https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121773

--- Comment #12 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Hi!

(In reply to Jakub Jelinek from comment #11)
> (In reply to Segher Boessenkool from comment #10)
> > (In reply to Jakub Jelinek from comment #5)
> > > The patch was done under the assumption written in the commit message:
> > > "The following patch replaces the modified_between_p
> > > tests with reg_used_between_p, my understanding is that
> > > modified_between_p is a subset of reg_used_between_p, so one
> > > doesn't need both."
> > > To my surprise that is not the case, reg_used_between_p ignores the cases
> > > where SET_DEST of some insn in between is the same (or SUBREG_REG), and
> > > similarly reg_overlap_mentioned_p does etc.
> > 
> > modified_between_p has *any* RTX as argument, not necessarily a register.  
> > So
> > that assumption was very obviously not correct, and either the logic for 
> > this
> > patch is flawed, or altogether missing.
> 
> reg_used_between_p despite the name also supports *any* RTX as argument.

Any single RTL object.  Not as general at all :-)

> Or at least those that can appear as SET_DEST of some SET.

Yup.

> STRICT_LOW_PART, ZERO_EXTRACT, SIGN_EXTRACT, SUBREG, REG, MEM, PC, PARALLEL
> at least.
> 
> > Do you think everything is fixed now?
> 
> I think so.

Ah cool.  Thanks guys!

Reply via email to