On Sat, Mar 28, 2020 at 06:39:56PM -0500, Peter Bergner wrote:
> On 3/28/20 2:22 PM, Segher Boessenkool wrote:
> > On Fri, Mar 27, 2020 at 05:41:36PM -0500, Peter Bergner wrote:
> >> A different (ie, safer) approach would be to just rerun lower-subreg at
> >> its old location, regardless of whether we used -fsplit-wide-types-early.
> > 
> > That is my preference, for a simpler reason even: when I added the new
> > pass I disabled the old one, thinking it wouldn't do anything useful
> > anymore.  Here you show that isn't true.
> >
> >> This way, we are not changing lower-subreg's behaviour, just running it an
> >> extra time (3 times instead of twice when using -fsplit-wide-types-early).
> >> I don't think lower-subreg is too expensive to run an extra time
> > 
> > Yes, I think so too.
> 
> Right.  However, like I said though, the downside is that we don't expose
> the decomposed uses to passes in between subreg2 and subreg3, like combine,
> etc.  Isn't that why you moved it early in the first place?  Then again,
> maybe you're getting the important cases now and subreg3 is just cleanup?

Yeah.  subreg1 is the limited one; subreg2 and subreg3 are the "full"
one.  subreg2 is the "early" one that only some archs have by default.
subreg3 will not do much (if subreg2 is enabled), except all the usual
RTL passes (CSE, *prop, combine, etc.) can expose more possibilities
for lower-subreg in some cases.


Segher

Reply via email to