------- Comment #31 from lucier at math dot purdue dot edu 2007-11-14 13:37 ------- Subject: Re: Inordinate compile times on large routines
To answer Steven's original question, here is a run with euler-20% /pkgs/gcc-mainline/bin/gcc -v Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../../mainline/configure --prefix=/pkgs/gcc-mainline --enable-languages=c --enable-checking=release --with-gmp=/pkgs/ gmp-4.2.2 --with-mpfr=/pkgs/gmp-4.2.2 Thread model: posix gcc version 4.3.0 20071026 (experimental) [trunk revision 129664] (GCC) Memory usage peaked at 10.3GB (just from monitoring top). Brad euler-19% time /pkgs/gcc-mainline/bin/gcc -Wall -W -Wno-unused -O1 - fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict- aliasing -fwrapv -fomit-frame-pointer -fPIC -I/usr/local/Gambit-C/ include/ -ftime-report -fmem-report -c all.i Memory still allocated at the end of the compilation process Size Allocated Used Overhead 8 4096 16 120 16 108k 18k 2376 128 8192 2816 112 256 504k 464k 7056 512 4096 1024 56 1024 112k 110k 1568 2048 28k 22k 392 4096 76k 76k 1064 8192 48k 48k 336 16384 32k 32k 112 32768 32k 32k 56 131072 256k 256k 112 262144 512k 512k 112 524288 1024k 1024k 112 1048576 2048k 2048k 112 160 2764k 2669k 37k 176 144k 126k 2016 432 28k 21k 392 96 65M 14M 918k 48 2100k 1171k 32k 208 688k 325k 9632 64 1288k 1237k 20k 32 172k 64k 3096 80 30M 2060k 421k Total 107M 26M 1459k String pool entries 159078 identifiers 159078 (100.00%) slots 262144 bytes 1992k (170k overhead) table size 2048k coll/search 0.8632 ins/search 0.2065 avg. entry 12.83 bytes (+/- 7.80) longest entry 67 ??? tree nodes created (No per-node statistics) Type hash: size 2039, 919 elements, 0.860792 collisions DECL_DEBUG_EXPR hash: size 16381, 0 elements, 1.211012 collisions DECL_VALUE_EXPR hash: size 1021, 0 elements, 0.000000 collisions Execution times (seconds) garbage collection : 1.19 ( 0%) usr 0.00 ( 0%) sys 1.19 ( 0%) wall 0 kB ( 0%) ggc callgraph construction: 0.76 ( 0%) usr 0.11 ( 1%) sys 0.88 ( 0%) wall 33780 kB ( 4%) ggc callgraph optimization: 1.23 ( 1%) usr 0.00 ( 0%) sys 1.23 ( 0%) wall 6 kB ( 0%) ggc ipa reference : 0.22 ( 0%) usr 0.03 ( 0%) sys 0.25 ( 0%) wall 7 kB ( 0%) ggc cfg cleanup : 2.17 ( 1%) usr 0.01 ( 0%) sys 2.17 ( 1%) wall 162 kB ( 0%) ggc trivially dead code : 0.36 ( 0%) usr 0.00 ( 0%) sys 0.37 ( 0%) wall 0 kB ( 0%) ggc df reaching defs : 10.08 ( 4%) usr 4.09 (24%) sys 14.18 ( 6%) wall 0 kB ( 0%) ggc df live regs : 7.77 ( 3%) usr 0.01 ( 0%) sys 7.77 ( 3%) wall 0 kB ( 0%) ggc df live&initialized regs: 82.60 (35%) usr 2.60 (15%) sys 85.23 (33%) wall 0 kB ( 0%) ggc df use-def / def-use chains: 8.23 ( 3%) usr 2.51 (14%) sys 10.73 ( 4%) wall 0 kB ( 0%) ggc df reg dead/unused notes: 0.97 ( 0%) usr 0.00 ( 0%) sys 0.97 ( 0%) wall 10939 kB ( 1%) ggc register information : 0.52 ( 0%) usr 0.00 ( 0%) sys 0.55 ( 0%) wall 0 kB ( 0%) ggc alias analysis : 0.90 ( 0%) usr 0.00 ( 0%) sys 0.89 ( 0%) wall 7168 kB ( 1%) ggc register scan : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 4 kB ( 0%) ggc rebuild jump labels : 0.34 ( 0%) usr 0.00 ( 0%) sys 0.34 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 0.62 ( 0%) usr 0.96 ( 6%) sys 1.66 ( 1%) wall 2932 kB ( 0%) ggc lexical analysis : 0.62 ( 0%) usr 1.98 (11%) sys 2.31 ( 1%) wall 0 kB ( 0%) ggc parser : 1.29 ( 1%) usr 0.86 ( 5%) sys 2.37 ( 1%) wall 68897 kB ( 8%) ggc inline heuristics : 0.67 ( 0%) usr 0.17 ( 1%) sys 0.84 ( 0%) wall 0 kB ( 0%) ggc tree gimplify : 1.11 ( 0%) usr 0.06 ( 0%) sys 1.16 ( 0%) wall 63192 kB ( 8%) ggc tree eh : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 0 kB ( 0%) ggc tree CFG construction : 0.51 ( 0%) usr 0.06 ( 0%) sys 0.57 ( 0%) wall 68527 kB ( 8%) ggc tree CFG cleanup : 7.12 ( 3%) usr 0.00 ( 0%) sys 7.10 ( 3%) wall 3525 kB ( 0%) ggc tree copy propagation : 2.01 ( 1%) usr 0.05 ( 0%) sys 2.06 ( 1%) wall 5125 kB ( 1%) ggc tree store copy prop : 0.49 ( 0%) usr 0.00 ( 0%) sys 0.49 ( 0%) wall 576 kB ( 0%) ggc tree find ref. vars : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 1826 kB ( 0%) ggc tree PTA : 1.93 ( 1%) usr 0.13 ( 1%) sys 2.06 ( 1%) wall 3734 kB ( 0%) ggc tree alias analysis : 0.11 ( 0%) usr 0.08 ( 0%) sys 0.20 ( 0%) wall 0 kB ( 0%) ggc tree call clobbering : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc tree flow sensitive alias: 0.17 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 2146 kB ( 0%) ggc tree memory partitioning: 1.24 ( 1%) usr 0.00 ( 0%) sys 1.25 ( 0%) wall 0 kB ( 0%) ggc tree PHI insertion : 0.61 ( 0%) usr 0.04 ( 0%) sys 0.65 ( 0%) wall 18541 kB ( 2%) ggc tree SSA rewrite : 1.94 ( 1%) usr 0.03 ( 0%) sys 1.95 ( 1%) wall 35021 kB ( 4%) ggc tree SSA other : 0.17 ( 0%) usr 0.12 ( 1%) sys 0.30 ( 0%) wall 0 kB ( 0%) ggc tree SSA incremental : 8.55 ( 4%) usr 0.08 ( 0%) sys 8.64 ( 3%) wall 14256 kB ( 2%) ggc tree operand scan : 0.71 ( 0%) usr 0.22 ( 1%) sys 0.91 ( 0%) wall 28110 kB ( 3%) ggc dominator optimization: 2.73 ( 1%) usr 0.02 ( 0%) sys 2.75 ( 1%) wall 42635 kB ( 5%) ggc tree SRA : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree STORE-CCP : 0.57 ( 0%) usr 0.00 ( 0%) sys 0.57 ( 0%) wall 1024 kB ( 0%) ggc tree CCP : 1.18 ( 0%) usr 0.01 ( 0%) sys 1.19 ( 0%) wall 1537 kB ( 0%) ggc tree PHI const/copy prop: 0.24 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall 11 kB ( 0%) ggc tree split crit edges : 0.11 ( 0%) usr 0.02 ( 0%) sys 0.13 ( 0%) wall 33706 kB ( 4%) ggc tree reassociation : 0.61 ( 0%) usr 0.00 ( 0%) sys 0.62 ( 0%) wall 1 kB ( 0%) ggc tree FRE : 2.72 ( 1%) usr 0.06 ( 0%) sys 2.77 ( 1%) wall 49006 kB ( 6%) ggc tree code sinking : 0.47 ( 0%) usr 0.00 ( 0%) sys 0.48 ( 0%) wall 6 kB ( 0%) ggc tree linearize phis : 0.29 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%) wall 0 kB ( 0%) ggc tree forward propagate: 0.32 ( 0%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall 426 kB ( 0%) ggc tree conservative DCE : 1.60 ( 1%) usr 0.00 ( 0%) sys 1.61 ( 1%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.35 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.36 ( 0%) wall 1 kB ( 0%) ggc PHI merge : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 7192 kB ( 1%) ggc tree loop bounds : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 2 kB ( 0%) ggc loop invariant motion : 0.32 ( 0%) usr 0.00 ( 0%) sys 0.32 ( 0%) wall 0 kB ( 0%) ggc tree canonical iv : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc scev constant prop : 0.63 ( 0%) usr 0.01 ( 0%) sys 0.64 ( 0%) wall 17787 kB ( 2%) ggc complete unrolling : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree loop init : 3.12 ( 1%) usr 0.08 ( 0%) sys 3.22 ( 1%) wall 45438 kB ( 6%) ggc tree loop fini : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree copy headers : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 0 kB ( 0%) ggc tree SSA uncprop : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.26 ( 0%) wall 0 kB ( 0%) ggc tree SSA to normal : 11.49 ( 5%) usr 0.08 ( 0%) sys 11.56 ( 5%) wall 83279 kB (10%) ggc tree rename SSA copies: 0.53 ( 0%) usr 0.02 ( 0%) sys 0.56 ( 0%) wall 0 kB ( 0%) ggc dominance frontiers : 0.46 ( 0%) usr 0.00 ( 0%) sys 0.47 ( 0%) wall 0 kB ( 0%) ggc dominance computation : 2.40 ( 1%) usr 0.03 ( 0%) sys 2.40 ( 1%) wall 0 kB ( 0%) ggc expand : 14.26 ( 6%) usr 1.89 (11%) sys 16.13 ( 6%) wall 92077 kB (11%) ggc lower subreg : 0.24 ( 0%) usr 0.00 ( 0%) sys 0.24 ( 0%) wall 0 kB ( 0%) ggc jump : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc CSE : 0.78 ( 0%) usr 0.00 ( 0%) sys 0.77 ( 0%) wall 1426 kB ( 0%) ggc dead code elimination : 0.51 ( 0%) usr 0.00 ( 0%) sys 0.51 ( 0%) wall 0 kB ( 0%) ggc dead store elim1 : 0.42 ( 0%) usr 0.06 ( 0%) sys 0.48 ( 0%) wall 7944 kB ( 1%) ggc dead store elim2 : 0.48 ( 0%) usr 0.02 ( 0%) sys 0.49 ( 0%) wall 8878 kB ( 1%) ggc loop analysis : 0.60 ( 0%) usr 0.01 ( 0%) sys 0.63 ( 0%) wall 70 kB ( 0%) ggc branch prediction : 0.96 ( 0%) usr 0.02 ( 0%) sys 0.97 ( 0%) wall 1541 kB ( 0%) ggc combiner : 2.64 ( 1%) usr 0.04 ( 0%) sys 2.67 ( 1%) wall 27876 kB ( 3%) ggc if-conversion : 1.36 ( 1%) usr 0.01 ( 0%) sys 1.37 ( 1%) wall 667 kB ( 0%) ggc local alloc : 4.09 ( 2%) usr 0.02 ( 0%) sys 4.11 ( 2%) wall 7074 kB ( 1%) ggc global alloc : 26.15 (11%) usr 0.38 ( 2%) sys 26.54 (10%) wall 5112 kB ( 1%) ggc reload CSE regs : 1.20 ( 1%) usr 0.01 ( 0%) sys 1.21 ( 0%) wall 12243 kB ( 1%) ggc thread pro- & epilogue: 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 4 kB ( 0%) ggc if-conversion 2 : 0.38 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall 82 kB ( 0%) ggc rename registers : 0.61 ( 0%) usr 0.04 ( 0%) sys 0.65 ( 0%) wall 31 kB ( 0%) ggc scheduling 2 : 2.61 ( 1%) usr 0.07 ( 0%) sys 2.70 ( 1%) wall 0 kB ( 0%) ggc machine dep reorg : 0.51 ( 0%) usr 0.00 ( 0%) sys 0.51 ( 0%) wall 146 kB ( 0%) ggc reorder blocks : 0.26 ( 0%) usr 0.01 ( 0%) sys 0.26 ( 0%) wall 6770 kB ( 1%) ggc final : 1.20 ( 1%) usr 0.03 ( 0%) sys 1.22 ( 0%) wall 0 kB ( 0%) ggc tree if-combine : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 228 kB ( 0%) ggc TOTAL : 238.24 17.40 255.72 824659 kB 239.030u 17.901s 4:17.09 99.9% 0+0k 0+0io 0pf+0w euler-20% -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854