At this location: http://www.math.purdue.edu/~lucier/gcc/test-files/bugzilla/1/all.i.gz
is the file -rw-r--r-- 1 lucier lucier 6556015 Mar 22 20:28 all.i.gz On a 2GHz Mac G5, this file took 3.4GB and 30 minutes to compile using gcc-4.1.0 configured and compiled with /bin/rm -rf *; env CC='gcc -mcpu=970 -m64' ../configure --prefix=/pkgs/gcc-4.1.0 --with-gmp=/opt/local/ --with-mpfr=/opt/local/ --with-as=/usr/local/odcctools-20060123/bin/as --with-ld=/usr/local/odcctools-20060123/bin/ld --enable-languages=c; make -j 8 bootstrap BOOT_CFLAGS='-mcpu=970 -m64 -O2 -g' >& build.log I had to build gcc as a 64-bit binary so it could allocate more than 2GB at some point in the compilation process. (The compiler itself, however, builds 32-bit binaries by default.) The compile options were /pkgs/gcc-4.1.0/bin/gcc -mcpu=970 -m64 -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 -bundle -flat_namespace -undefined suppress -I/usr/local/Gambit-C/include/ -ftime-report -fmem-report all.i The reports were Memory still allocated at the end of the compilation process Size Allocated Used Overhead 8 16k 14k 480 16 52k 12k 1144 64 1276k 1239k 19k 256 484k 452k 6776 512 36k 25k 504 1024 220k 216k 3080 2048 24k 20k 336 4096 68k 68k 952 8192 56k 56k 392 16384 16k 16k 56 32768 288k 288k 504 65536 64k 64k 56 131072 128k 128k 56 262144 512k 512k 112 524288 512k 512k 56 1048576 1024k 1024k 56 2097152 4096k 4096k 112 112 34M 16M 484k 208 40k 38k 560 192 3344k 3287k 45k 160 28k 6240 392 176 564k 261k 7896 48 2088k 1165k 32k 32 148k 68k 2664 80 35M 2063k 495k Total 84M 32M 1104k String pool entries 158178 identifiers 158178 (100.00%) slots 262144 bytes 1982k (168k overhead) table size 2048k coll/search 1.1104 ins/search 0.1934 avg. entry 12.83 bytes (+/- 7.81) longest entry 67 ??? tree nodes created (No per-node statistics) Type hash: size 1021, 598 elements, 0.900368 collisions DECL_DEBUG_EXPR hash: size 8191, 0 elements, 1.307819 collisions DECL_VALUE_EXPR hash: size 1021, 0 elements, 0.000000 collisions Execution times (seconds) garbage collection : 1.87 ( 0%) usr 0.03 ( 0%) sys 2.38 ( 0%) wall 0 kB ( 0%) ggc callgraph construction: 1.78 ( 0%) usr 0.36 ( 0%) sys 2.60 ( 0%) wall 21241 kB ( 2%) ggc callgraph optimization: 0.05 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 0 kB ( 0%) ggc ipa reference : 0.42 ( 0%) usr 0.14 ( 0%) sys 0.65 ( 0%) wall 7 kB ( 0%) ggc cfg construction : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.43 ( 0%) wall 8421 kB ( 1%) ggc cfg cleanup : 103.72 ( 7%) usr 0.71 ( 1%) sys 128.58 ( 7%) wall 2170 kB ( 0%) ggc trivially dead code : 2.60 ( 0%) usr 0.06 ( 0%) sys 3.32 ( 0%) wall 0 kB ( 0%) ggc life analysis : 6.42 ( 0%) usr 3.91 ( 3%) sys 12.64 ( 1%) wall 19365 kB ( 2%) ggc life info update : 1.04 ( 0%) usr 0.03 ( 0%) sys 1.32 ( 0%) wall 525 kB ( 0%) ggc alias analysis : 1.70 ( 0%) usr 0.07 ( 0%) sys 2.13 ( 0%) wall 16385 kB ( 2%) ggc register scan : 0.96 ( 0%) usr 0.02 ( 0%) sys 1.28 ( 0%) wall 4 kB ( 0%) ggc rebuild jump labels : 0.32 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 8.05 ( 1%) usr 13.05 (10%) sys 25.54 ( 1%) wall 2197 kB ( 0%) ggc lexical analysis : 12.59 ( 1%) usr 25.04 (19%) sys 46.78 ( 2%) wall 0 kB ( 0%) ggc parser : 9.97 ( 1%) usr 13.25 (10%) sys 28.99 ( 1%) wall 72677 kB ( 7%) ggc tree gimplify : 1.50 ( 0%) usr 0.07 ( 0%) sys 1.93 ( 0%) wall 30969 kB ( 3%) ggc tree eh : 0.17 ( 0%) usr 0.01 ( 0%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc tree CFG construction : 0.55 ( 0%) usr 0.13 ( 0%) sys 0.81 ( 0%) wall 76077 kB ( 8%) ggc tree CFG cleanup : 5.82 ( 0%) usr 0.08 ( 0%) sys 7.25 ( 0%) wall 955 kB ( 0%) ggc tree copy propagation : 5.42 ( 0%) usr 0.44 ( 0%) sys 7.11 ( 0%) wall 12020 kB ( 1%) ggc tree store copy prop : 0.75 ( 0%) usr 0.05 ( 0%) sys 0.97 ( 0%) wall 1600 kB ( 0%) ggc tree find ref. vars : 0.23 ( 0%) usr 0.01 ( 0%) sys 0.24 ( 0%) wall 2502 kB ( 0%) ggc tree PTA : 5.85 ( 0%) usr 0.60 ( 0%) sys 7.92 ( 0%) wall 16435 kB ( 2%) ggc tree alias analysis : 6.98 ( 0%) usr 11.11 ( 8%) sys 15.83 ( 1%) wall 11736 kB ( 1%) ggc tree PHI insertion : 1.06 ( 0%) usr 0.21 ( 0%) sys 1.59 ( 0%) wall 24377 kB ( 2%) ggc tree SSA rewrite : 2.46 ( 0%) usr 0.16 ( 0%) sys 3.29 ( 0%) wall 39166 kB ( 4%) ggc tree SSA other : 1.22 ( 0%) usr 1.51 ( 1%) sys 3.38 ( 0%) wall 0 kB ( 0%) ggc tree SSA incremental : 14.15 ( 1%) usr 3.76 ( 3%) sys 22.12 ( 1%) wall 19167 kB ( 2%) ggc tree operand scan : 628.65 (44%) usr 12.18 ( 9%) sys 814.05 (42%) wall 23896 kB ( 2%) ggc dominator optimization: 307.01 (21%) usr 2.88 ( 2%) sys 380.36 (20%) wall 63887 kB ( 7%) ggc tree STORE-CCP : 0.67 ( 0%) usr 0.02 ( 0%) sys 0.87 ( 0%) wall 513 kB ( 0%) ggc tree CCP : 0.74 ( 0%) usr 0.03 ( 0%) sys 0.95 ( 0%) wall 514 kB ( 0%) ggc tree split crit edges : 0.37 ( 0%) usr 0.24 ( 0%) sys 0.74 ( 0%) wall 40362 kB ( 4%) ggc tree reassociation : 0.57 ( 0%) usr 0.02 ( 0%) sys 0.73 ( 0%) wall 0 kB ( 0%) ggc tree FRE : 12.97 ( 1%) usr 0.75 ( 1%) sys 17.03 ( 1%) wall 40945 kB ( 4%) ggc tree code sinking : 0.98 ( 0%) usr 0.06 ( 0%) sys 1.27 ( 0%) wall 0 kB ( 0%) ggc tree linearize phis : 0.15 ( 0%) usr 0.01 ( 0%) sys 0.20 ( 0%) wall 0 kB ( 0%) ggc tree forward propagate: 0.16 ( 0%) usr 0.01 ( 0%) sys 0.18 ( 0%) wall 0 kB ( 0%) ggc tree conservative DCE : 1.86 ( 0%) usr 0.03 ( 0%) sys 2.39 ( 0%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.86 ( 0%) usr 0.02 ( 0%) sys 1.09 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.73 ( 0%) usr 0.03 ( 0%) sys 0.95 ( 0%) wall 0 kB ( 0%) ggc PHI merge : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 49 kB ( 0%) ggc tree loop bounds : 0.32 ( 0%) usr 0.01 ( 0%) sys 0.39 ( 0%) wall 0 kB ( 0%) ggc loop invariant motion : 0.57 ( 0%) usr 0.01 ( 0%) sys 0.70 ( 0%) wall 0 kB ( 0%) ggc tree canonical iv : 0.15 ( 0%) usr 0.01 ( 0%) sys 0.20 ( 0%) wall 0 kB ( 0%) ggc scev constant prop : 1.47 ( 0%) usr 0.04 ( 0%) sys 1.87 ( 0%) wall 1973 kB ( 0%) ggc complete unrolling : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 0 kB ( 0%) ggc tree loop init : 5.14 ( 0%) usr 5.80 ( 4%) sys 13.36 ( 1%) wall 58726 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.24 ( 0%) usr 0.01 ( 0%) sys 0.31 ( 0%) wall 0 kB ( 0%) ggc tree SSA uncprop : 0.43 ( 0%) usr 0.01 ( 0%) sys 0.54 ( 0%) wall 0 kB ( 0%) ggc tree SSA to normal : 172.90 (12%) usr 1.50 ( 1%) sys 215.20 (11%) wall 92392 kB ( 9%) ggc tree rename SSA copies: 0.60 ( 0%) usr 0.08 ( 0%) sys 0.78 ( 0%) wall 0 kB ( 0%) ggc dominance frontiers : 0.53 ( 0%) usr 0.00 ( 0%) sys 0.64 ( 0%) wall 0 kB ( 0%) ggc expand : 7.54 ( 1%) usr 4.20 ( 3%) sys 14.47 ( 1%) wall 129307 kB (13%) ggc varconst : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 7 kB ( 0%) ggc jump : 0.73 ( 0%) usr 0.03 ( 0%) sys 0.90 ( 0%) wall 0 kB ( 0%) ggc CSE : 2.19 ( 0%) usr 1.67 ( 1%) sys 4.78 ( 0%) wall 2169 kB ( 0%) ggc loop analysis : 1.69 ( 0%) usr 0.15 ( 0%) sys 2.25 ( 0%) wall 8645 kB ( 1%) ggc branch prediction : 3.22 ( 0%) usr 0.22 ( 0%) sys 4.17 ( 0%) wall 5998 kB ( 1%) ggc flow analysis : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%) wall 0 kB ( 0%) ggc combiner : 4.03 ( 0%) usr 0.11 ( 0%) sys 5.07 ( 0%) wall 31600 kB ( 3%) ggc if-conversion : 2.01 ( 0%) usr 0.11 ( 0%) sys 2.58 ( 0%) wall 344 kB ( 0%) ggc local alloc : 2.87 ( 0%) usr 0.10 ( 0%) sys 3.63 ( 0%) wall 13500 kB ( 1%) ggc global alloc : 25.97 ( 2%) usr 21.91 (17%) sys 57.82 ( 3%) wall 31337 kB ( 3%) ggc reload CSE regs : 42.61 ( 3%) usr 0.54 ( 0%) sys 52.45 ( 3%) wall 12846 kB ( 1%) ggc flow 2 : 0.66 ( 0%) usr 0.00 ( 0%) sys 0.82 ( 0%) wall 19 kB ( 0%) ggc if-conversion 2 : 0.77 ( 0%) usr 0.06 ( 0%) sys 1.03 ( 0%) wall 14 kB ( 0%) ggc rename registers : 0.95 ( 0%) usr 0.20 ( 0%) sys 1.37 ( 0%) wall 24 kB ( 0%) ggc scheduling 2 : 3.51 ( 0%) usr 0.18 ( 0%) sys 4.47 ( 0%) wall 36103 kB ( 4%) ggc shorten branches : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc final : 2.35 ( 0%) usr 0.14 ( 0%) sys 3.36 ( 0%) wall 4096 kB ( 0%) ggc symout : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc TOTAL :1438.01 131.69 1949.05 979456 kB So, this is a very large file (and only one C routine), but the times for the various passes are very unbalanced; in particular the following three catch anyone's eye: tree operand scan : 628.65 (44%) usr 12.18 ( 9%) sys 814.05 (42%) wall 23896 kB ( 2%) ggc dominator optimization: 307.01 (21%) usr 2.88 ( 2%) sys 380.36 (20%) wall 63887 kB ( 7%) ggc tree SSA to normal : 172.90 (12%) usr 1.50 ( 1%) sys 215.20 (11%) wall 92392 kB ( 9%) ggc I don't know what the compile times are with 4.2; perhaps people who have a 64-bit profiled gcc would like to investigate more what is going on. -- Summary: Inordinate compile times on large routines Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: lucier at math dot purdue dot edu GCC build triplet: powerpc-apple-darwin8.5.0 GCC host triplet: powerpc-apple-darwin8.5.0 GCC target triplet: powerpc-apple-darwin8.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854