This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Timing information for CFG manipulations
> dino01% /u/lucier/local/gcc-3.1/lib/gcc-lib/i686-pc-linux-gnu/3.1/cc1 -fpic -fomit-frame-pointer -O1 -fno-math-errno -fno-strict-aliasing -mcpu=athlon -march=athlon _num.i
> __sgn __sgnf __sgnl atan2 atan2f atan2l __atan2l fmod fmodf fmodl sqrt sqrtf sqrtl __sqrtl fabs fabsf fabsl __fabsl atan atanf atanl __sgn1l floor floorf floorl ceil ceilf ceill ldexp log1p log1pf log1pl asinh asinhf asinhl acosh acoshf acoshl atanh atanhf atanhl hypot hypotf hypotl logb logbf logbl drem dremf dreml __finite ___H__20___num {GC 25431k -> 7824k} {GC 10944k -> 7883k} {GC 10373k -> 7769k} {GC 13951k -> 8584k} {GC 14266k -> 9195k} ___init_proc {GC 12104k -> 9290k} ____20___num
> Execution times (seconds)
> garbage collection : 0.67 ( 0%) usr 0.00 ( 0%) sys 0.72 ( 0%) wall
> cfg construction : 6.37 ( 4%) usr 0.26 ( 6%) sys 6.66 ( 4%) wall
> cfg cleanup : 33.59 (21%) usr 0.01 ( 0%) sys 33.69 (20%) wall
I do have patch to cfg_cleanup speedup in the bootstrap now.
Esentially there is quite a lot to squeze out by caching forwarder_block_p.
I also can reorganize try_forward_edges to try forward incomming edges of forwarder block
instead of outgoing edges of each block if the first change won't be enought.
> preprocessing : 0.17 ( 0%) usr 0.11 ( 2%) sys 0.44 ( 0%) wall
> lexical analysis : 0.29 ( 0%) usr 0.22 ( 5%) sys 0.53 ( 0%) wall
> parser : 1.19 ( 1%) usr 0.15 ( 3%) sys 1.28 ( 1%) wall
> varconst : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
> jump : 0.63 ( 0%) usr 0.00 ( 0%) sys 0.66 ( 0%) wall
> CSE : 0.72 ( 0%) usr 0.00 ( 0%) sys 0.69 ( 0%) wall
> global CSE : 32.87 (21%) usr 0.57 (13%) sys 33.53 (20%) wall
This is the mode switching code. Can someone familiar with the code more than I do
comment whether there are trivial ways to speed it up?
Honza