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? That said, I'm fine with whatever you, richi and others want. >> /* opt_pass methods: */ >> - virtual bool gate (function *) { return flag_split_wide_types >> - && !flag_split_wide_types_early; } >> + virtual bool gate (function *) { return flag_split_wide_types != 0; } > > I think you mean > return flag_split_wide_types != 0 != 0 != 0; Heh, I was just reverting it to the code prior to your change. I can make that just "return flag_split_wide_types;" if you like and we end up going with this version. Peter