This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 100x -O0 Compile Time Regression {3.2,3.3} -> {3.4,3.5}



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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]