This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: 100x -O0 Compile Time Regression {3.2,3.3} -> {3.4,3.5}
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: law at redhat dot com
- Cc: gcc at gcc dot gnu dot org,John Vickers <John at xza5 dot com>,Zack Weinberg <zack at codesourcery dot com>
- Date: Thu, 12 Feb 2004 23:35:18 -0500
- Subject: Re: 100x -O0 Compile Time Regression {3.2,3.3} -> {3.4,3.5}
- References: <200402130334.i1D3YFqj005917@speedy.slc.redhat.com>
ps. Trivia question for the rest of the list. What routine gets the
most
amount of cpu time doing a "make -k check" from the toplevel of the
source tree after a 3-stage bootstrap (tree-ssa branch).....
et_splay with a whopping 27% of all the events within cc1 (cc1 has
just over
40% of the total events during make-k check run).
Try it on 20001226-1.c
The time gets blamed on split_critical_edges but the actual time sink
is recounting a set of dominators every time we split an edge.
If you free_dominance_info (CDI_DOMINATORS) before we split edges, it
won't do the recounting.
IE this patch will make the time in split_critical_edges 4 seconds
instead of 56 on 20001226-1.c:
Index: tree-cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-cfg.c,v
retrieving revision 1.1.4.264
diff -u -3 -p -r1.1.4.264 tree-cfg.c
--- tree-cfg.c 4 Feb 2004 06:08:20 -0000 1.1.4.264
+++ tree-cfg.c 13 Feb 2004 04:34:59 -0000
@@ -3948,7 +3948,7 @@ split_critical_edges (void)
{
basic_block bb;
edge e;
-
+ free_dominance_info (CDI_DOMINATORS);
FOR_ALL_BB (bb)
{
for (e = bb->succ; e ; e = e->succ_next)