Slowdowns in code generated by GCC>=3.3

Remko Troncon remko.troncon@cs.kuleuven.ac.be
Sun Oct 24 08:03:00 GMT 2004


Hi again,

> Another thought, you can binary search the compiler sources from cvs, 
> compiling your application at each instance to determine the patch that 
> went in that regressed performance for you.

I did a search through GCC CVS to find out which patch caused our factor
3 slowdown. Apparently, it is the patch with this ChangeLog entry:

2003-02-15  Richard Henderson  <rth@redhat.com>
        * bb-reorder.c (find_traces_1_round): Don't connect easy to copy
        successors with multiple predecessors.
        (connect_traces): Try harder to copy traces of length 1.
        * function.h (struct function): Add computed_goto_common_label,
        computed_goto_common_reg.
        * function.c (free_after_compilation): Zap them.
        * stmt.c (expand_computed_goto): Use them to produce one 
        indirect branch per function.

I tried patching the files one by one (in the order above, as i assumed the
problem was in stmt.c and that that file depended on function.*), and indeed,
once the 'stmt.c' is patched, the slowdown occurs.

Can something be done about this ?

thanks,
Remko



More information about the Gcc mailing list