This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: flow speed regression [Re: How long should -O1 compiles take?]
- To: lucier at math dot purdue dot edu, rth at cygnus dot com
- Subject: Re: flow speed regression [Re: How long should -O1 compiles take?]
- From: Brad Lucier <lucier at math dot purdue dot edu>
- Date: Wed, 6 Oct 1999 15:35:58 -0500 (EST)
- Cc: jbuck at synopsys dot com, law at cygnus dot com, gcc at gcc dot gnu dot org, hosking at cs dot purdue dot edu, feeley at iro dot umontreal dot ca, gcc-patches at gcc dot gnu dot org
Richard:
Thanks for your suggestion. With your flow.c change, flow is no longer
a problem---with your fix, the two flow passes in gcc-2.96 take less
time than the one flow pass in egcs-1.1.2. The new register allocator
is still a problem (40 times as long as the old register allocator).
There is a Scheme->C code-generation option to use a case statement
rather than computed goto's---this makes the generated code run 20%
slower to 4 times slower (depending on the application), but it does cut
about 30 seconds from the compile time for the flow passes in the example.
(And last fall, I did use the case statement approach---the computed goto
approach wasn't available then.) But this doesn't reduce the compile
time significantly in 2.96, because the register allocation still takes
40 times as long in gcc-2.96 as in egcs-1.1.2.
To summarize: With your flow.c change, flow is not a problem. Before and
after your flow.c change, global-alloc is a problem, and using a case
statement rather than the computed goto's doesn't change that problem
at all.
Brad