Hi! On Fri, Apr 05, 2024 at 04:06:01AM +0200, Hans-Peter Nilsson wrote: > The xpassing change in generated code was as follows, at > r14-9788-gb7bd2ec73d66f7 (where I locally applied a revert > to verify that this suspect was the cause). That was so > much of an improvement that I had to share it! Worth the > testsuite churn anyway. :) > > Segher, if you end up reverting r14-9692-g839bc42772ba7a (as > unfortunately seems not unlikely), then please also revert this > commit: r14-9799-g4c8b3600c4856f7915281ae3ff4d97271c83a540.
I won't revert it, it fixes an actual bug. Not a regression no, but a very serious longstanding problem. We have accidentally done a limited version of a feature requested for more than 20 years now, "UNCSE". I'll do this for just combine (instead of as a separate pass, lots of issues there with pass ordering, results could be better though) in GCC 15. This really is a stage 1 thing though! Any testcase that relies on something that combine does not promise and that can not reasonably be expected to always hold is *buggy*. The combine-2-2 testcase (that I wrote myself) isn't very good, and should be replaced by something that is much more clearly a 2->2 combination, instead of 1->1 with context. All (target-specific) new testsuite failures are just like that: bad testcases! So no, no reversion. > That's the only test that's improved to the point of > affecting test-patterns. E.g. pr93372-5.c (which references > pr93372-2.c) is also improved, though it retains a redundant > compare insn. (PR 93372 was about regressions from the cc0 > representation; not further improvement like here, thus it's > not tagged. Though, I did not double-check whether this > actually *was* a regression from cc0.) Interesting that this improved tests for you. Huh. Do you have an explanation how this happened? I suspect that as uaual it is just a side effect of random factors: combine is opportunistic, always does the first change it thinks good, not considering what this then does for other possible combinations; it is greedy. It would be nice to see written out what happens in this example though :-) Segher