New attempt: subword-based DCE, PR42575
Eric Botcazou
ebotcazou@adacore.com
Thu Jul 29 08:18:00 GMT 2010
> Previously I made the mistake of letting myself get influenced by
> worries about compile-time performance which are IMO completely
> overblown. There are a number of reasons why compile-time is a
> non-issue in this case, never mind the general observation that
> compilation is embarrassingly parallel in practice:
>
> * the code is guarded by a test in lower-subreg which verifies that
> multiword pseudos exist in the function; that alone makes the
> compile-time impact exactly nil for the majority of code
> * it's replacing an existing, more expensive pass which was approved
> (although later disabled)
A figure is worth a thousand words when it comes to compilation time. Did you
measure the impact on a bootstrap of the core compiler on x86 for example?
> This triggers in several testcases other than the one in PR42575, for
> example in crafty or the XFS filesystem (tested with an ARM compiler).
> This demonstrates that it fixes a real-world, general problem that can
> occur for more than one reason.
What reasons? There are 2 ways to "fix" problems: analyzing the causes and
eliminating them, or treating the symptoms. I'm fond of the former approach,
you're apparently more fond of the latter.
> Last time, Eric posted counter-patches which tried hackish ways of
> tweaking the generated RTL so that the problem is hidden for the PR42575
> testcase; both of these made code generation worse on average and failed
> to fix the more general issue of dead stores into subwords.
Well, I first asked you to investigate why lower-subreg + DCE couldn't achieve
what you were looking for and whether this could be fixed. You apparently
didn't try very hard so I had to; early patches may indeed resemble hacks.
We already run 2 lower-subreg passes and 2+ DCE passes so we should be able to
eliminate dead assignments to subwords of multiword pseudo-registers with a
few efforts. Instead we now have a new DCE pass and we still don't know what
it would have taken to enhance existing lower-subreg and DCE passes.
--
Eric Botcazou
More information about the Gcc-patches
mailing list