From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 533 invoked by alias); 7 Dec 2006 21:51:29 -0000 Received: (qmail 438 invoked by alias); 7 Dec 2006 21:51:17 -0000 Date: Thu, 07 Dec 2006 21:51:00 -0000 Message-ID: <20061207215117.437.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/26854] Inordinate compile times on large routines In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "lucier at math dot purdue dot edu" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-12/txt/msg00656.txt.bz2 ------- Comment #21 from lucier at math dot purdue dot edu 2006-12-07 21:51 ------- Subject: Re: Inordinate compile times on large routines I reran things on mainline on my patched RHEL box. It took almost 7GB of memory, peak, to compile this routine (this was very near the end of cc1). All things considered, on mainline the CPU time for this routine is not so bad (alias analysis and FRE are two obvious hot-spots), but the memory required is very large. Back to 4.2.0 branch for more testing ... euler-157% time /pkgs/gcc-mainline/bin/gcc -no-cpp-precomp -Wall -W - Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math - fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common - ftime-report -fmem-report -c all.i gcc: unrecognized option '-no-cpp-precomp' Memory still allocated at the end of the compilation process Size Allocated Used Overhead 8 16k 13k 480 16 8472k 8083k 182k 64 39M 22M 625k 256 4096 2816 56 512 4096 1024 56 1024 236k 236k 3304 2048 40k 26k 560 4096 80k 80k 1120 8192 64k 64k 448 16384 16k 16k 56 32768 64k 64k 112 65536 960k 960k 840 131072 512k 512k 224 262144 768k 768k 168 1048576 7168k 5120k 392 2097152 2048k 2048k 56 112 144k 92k 2016 208 44k 41k 616 192 14M 10094k 198k 160 40k 37k 560 176 7972k 4786k 108k 96 18M 16M 263k 448 28k 27k 392 128 9696k 6860k 132k 48 30M 13M 484k 224 424k 385k 5936 32 72M 72M 1296k 80 65M 38M 923k Total 278M 201M 4231k String pool entries 125055 identifiers 125055 (100.00%) slots 262144 bytes 1675k (137k overhead) table size 2048k coll/search 0.8888 ins/search 0.1979 avg. entry 13.72 bytes (+/- 8.99) longest entry 71 ??? tree nodes created (No per-node statistics) Type hash: size 1021, 577 elements, 0.695294 collisions DECL_DEBUG_EXPR hash: size 8191, 2893 elements, 1.005820 collisions DECL_VALUE_EXPR hash: size 1021, 0 elements, 0.000000 collisions Execution times (seconds) garbage collection : 1.01 ( 0%) usr 0.00 ( 0%) sys 1.01 ( 0%) wall 0 kB ( 0%) ggc callgraph construction: 0.61 ( 0%) usr 0.09 ( 1%) sys 0.72 ( 0%) wall 17017 kB ( 2%) ggc callgraph optimization: 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc ipa reference : 0.17 ( 0%) usr 0.05 ( 0%) sys 0.23 ( 0%) wall 7 kB ( 0%) ggc cfg cleanup : 7.69 ( 2%) usr 0.00 ( 0%) sys 8.03 ( 2%) wall 37 kB ( 0%) ggc trivially dead code : 0.96 ( 0%) usr 0.00 ( 0%) sys 1.00 ( 0%) wall 0 kB ( 0%) ggc life analysis : 19.95 ( 4%) usr 0.01 ( 0%) sys 20.77 ( 4%) wall 12767 kB ( 2%) ggc life info update : 0.57 ( 0%) usr 0.00 ( 0%) sys 0.57 ( 0%) wall 0 kB ( 0%) ggc alias analysis : 0.80 ( 0%) usr 0.00 ( 0%) sys 0.80 ( 0%) wall 7174 kB ( 1%) ggc register scan : 0.42 ( 0%) usr 0.00 ( 0%) sys 0.46 ( 0%) wall 1 kB ( 0%) ggc rebuild jump labels : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 0.51 ( 0%) usr 0.90 ( 8%) sys 1.26 ( 0%) wall 1794 kB ( 0%) ggc lexical analysis : 0.57 ( 0%) usr 1.42 (12%) sys 2.33 ( 0%) wall 0 kB ( 0%) ggc parser : 1.29 ( 0%) usr 0.95 ( 8%) sys 2.29 ( 0%) wall 59589 kB ( 8%) ggc integration : 0.24 ( 0%) usr 0.09 ( 1%) sys 0.35 ( 0%) wall 0 kB ( 0%) ggc tree gimplify : 0.74 ( 0%) usr 0.04 ( 0%) sys 0.83 ( 0%) wall 42732 kB ( 6%) ggc tree eh : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc tree CFG construction : 0.30 ( 0%) usr 0.05 ( 0%) sys 0.35 ( 0%) wall 59312 kB ( 8%) ggc tree CFG cleanup : 3.53 ( 1%) usr 0.00 ( 0%) sys 3.51 ( 1%) wall 3716 kB ( 1%) ggc tree copy propagation : 1.21 ( 0%) usr 0.00 ( 0%) sys 1.22 ( 0%) wall 2220 kB ( 0%) ggc tree store copy prop : 0.41 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall 576 kB ( 0%) ggc tree find ref. vars : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 1186 kB ( 0%) ggc tree PTA : 2.52 ( 1%) usr 0.03 ( 0%) sys 2.57 ( 1%) wall 2280 kB ( 0%) ggc tree alias analysis : 121.67 (27%) usr 0.50 ( 4%) sys 123.10 (26%) wall 18481 kB ( 3%) ggc tree PHI insertion : 1.40 ( 0%) usr 0.07 ( 1%) sys 1.54 ( 0%) wall 69532 kB ( 9%) ggc tree SSA rewrite : 2.40 ( 1%) usr 0.02 ( 0%) sys 2.47 ( 1%) wall 28127 kB ( 4%) ggc tree SSA other : 0.09 ( 0%) usr 0.10 ( 1%) sys 0.23 ( 0%) wall 0 kB ( 0%) ggc tree SSA incremental : 8.18 ( 2%) usr 0.09 ( 1%) sys 8.20 ( 2%) wall 19181 kB ( 3%) ggc tree operand scan : 1.47 ( 0%) usr 0.58 ( 5%) sys 2.01 ( 0%) wall 26491 kB ( 4%) ggc dominator optimization: 2.51 ( 1%) usr 0.01 ( 0%) sys 2.55 ( 1%) wall 46004 kB ( 6%) ggc tree STORE-CCP : 0.58 ( 0%) usr 0.00 ( 0%) sys 0.58 ( 0%) wall 1024 kB ( 0%) ggc tree CCP : 0.61 ( 0%) usr 0.00 ( 0%) sys 0.61 ( 0%) wall 1024 kB ( 0%) ggc tree PHI const/copy prop: 0.19 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall 9 kB ( 0%) ggc tree split crit edges : 0.09 ( 0%) usr 0.02 ( 0%) sys 0.12 ( 0%) wall 27005 kB ( 4%) ggc tree reassociation : 0.45 ( 0%) usr 0.01 ( 0%) sys 0.45 ( 0%) wall 0 kB ( 0%) ggc tree FRE : 194.08 (42%) usr 0.18 ( 2%) sys 202.72 (42%) wall 23470 kB ( 3%) ggc tree code sinking : 0.46 ( 0%) usr 0.00 ( 0%) sys 0.48 ( 0%) wall 0 kB ( 0%) ggc tree linearize phis : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall 0 kB ( 0%) ggc tree forward propagate: 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 0 kB ( 0%) ggc tree conservative DCE : 1.14 ( 0%) usr 0.00 ( 0%) sys 1.15 ( 0%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.40 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.32 ( 0%) usr 0.00 ( 0%) sys 0.31 ( 0%) wall 0 kB ( 0%) ggc PHI merge : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 2 kB ( 0%) ggc tree loop bounds : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall 0 kB ( 0%) ggc loop invariant motion : 0.29 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%) wall 0 kB ( 0%) ggc tree canonical iv : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc scev constant prop : 0.58 ( 0%) usr 0.00 ( 0%) sys 0.57 ( 0%) wall 1756 kB ( 0%) ggc complete unrolling : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc tree iv optimization : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 0 kB ( 0%) ggc tree loop init : 2.07 ( 0%) usr 0.07 ( 1%) sys 2.17 ( 0%) wall 41825 kB ( 6%) ggc tree loop fini : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree copy headers : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 1 kB ( 0%) ggc tree SSA uncprop : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc tree SSA to normal : 30.22 ( 7%) usr 0.07 ( 1%) sys 30.74 ( 6%) wall 54480 kB ( 7%) ggc tree rename SSA copies: 0.33 ( 0%) usr 0.00 ( 0%) sys 0.34 ( 0%) wall 0 kB ( 0%) ggc dominance frontiers : 0.41 ( 0%) usr 0.00 ( 0%) sys 0.40 ( 0%) wall 0 kB ( 0%) ggc dominance computation : 2.01 ( 0%) usr 0.01 ( 0%) sys 2.04 ( 0%) wall 0 kB ( 0%) ggc expand : 5.02 ( 1%) usr 0.12 ( 1%) sys 5.29 ( 1%) wall 93938 kB (13%) ggc varconst : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 6 kB ( 0%) ggc jump : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 0 kB ( 0%) ggc CSE : 0.55 ( 0%) usr 0.01 ( 0%) sys 0.58 ( 0%) wall 130 kB ( 0%) ggc loop analysis : 17.46 ( 4%) usr 5.59 (48%) sys 24.20 ( 5%) wall 5483 kB ( 1%) ggc branch prediction : 0.75 ( 0%) usr 0.00 ( 0%) sys 0.74 ( 0%) wall 1532 kB ( 0%) ggc flow analysis : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 0 kB ( 0%) ggc combiner : 1.66 ( 0%) usr 0.01 ( 0%) sys 1.68 ( 0%) wall 21082 kB ( 3%) ggc if-conversion : 0.53 ( 0%) usr 0.00 ( 0%) sys 0.54 ( 0%) wall 350 kB ( 0%) ggc mode switching : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc local alloc : 1.29 ( 0%) usr 0.00 ( 0%) sys 1.30 ( 0%) wall 7039 kB ( 1%) ggc global alloc : 7.10 ( 2%) usr 0.41 ( 3%) sys 7.52 ( 2%) wall 6574 kB ( 1%) ggc reload CSE regs : 0.75 ( 0%) usr 0.00 ( 0%) sys 0.73 ( 0%) wall 10842 kB ( 1%) ggc flow 2 : 0.37 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall 3114 kB ( 0%) ggc if-conversion 2 : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall 9 kB ( 0%) ggc rename registers : 0.54 ( 0%) usr 0.04 ( 0%) sys 0.58 ( 0%) wall 24 kB ( 0%) ggc scheduling 2 : 2.36 ( 1%) usr 0.04 ( 0%) sys 2.40 ( 0%) wall 10954 kB ( 1%) ggc machine dep reorg : 0.44 ( 0%) usr 0.00 ( 0%) sys 0.44 ( 0%) wall 135 kB ( 0%) ggc final : 1.06 ( 0%) usr 0.01 ( 0%) sys 1.08 ( 0%) wall 2050 kB ( 0%) ggc TOTAL : 456.98 11.72 481.71 734771 kB 457.718u 12.529s 8:03.35 97.2% 0+0k 0+0io 0pf+0w euler-158% /pkgs/gcc-mainline/bin/gcc -v Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../configure --prefix=/pkgs/gcc-mainline --with-gmp=/ pkgs/gmp-4.2.1 --with-mpfr=/pkgs/gmp-4.2.1 --enable-checking=no -- enable-languages=c Thread model: posix gcc version 4.3.0 20061207 (experimental) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854