On Mar 24, 2006, at 12:04 PM, Bradley Lucier wrote:
I'm thinking more and more that OPTIMIZE_SPACE should be defined by default in the .c file if any of the mostly-* declarations are in effect; there are just too man
Marc:
I think that you could modify the calling convention for ___OPTIMIZE_SPACE in a way that would save a *lot* in compile time and space.
I used ediff in emacs to compare two expanded call sequences when ___OPTIMIZE_SPACE is defined:
{___ps->na=1; ___r4=___G_newline.val; if (((((___temp=(___r4)))& ((1<<2)-1))==1&&((((*((long*)((___temp)-(1)))))&(((1<<5)-1)<<3))== (((14))<<3)))) {___pc=((___label_struct*)(___r4-1))-
entry_or_descr;goto ___jump;} ___ps->temp4=(long)&___G_newline;
{ {___pc=___ps->handler_not_proc_glo;goto ___jumpext;}}}
and
{___ps->na=2; ___r4=___G__2a_.val; if (((((___temp=(___r4)))& ((1<<2)-1))==1&&((((*((long*)((___temp)-(1)))))&(((1<<5)-1)<<3))== (((14))<<3)))) {___pc=((___label_struct*)(___r4-1))-
entry_or_descr;goto ___jump;} ___ps->temp4=(long)&___G__2a_;
{ {___pc=___ps->handler_not_proc_glo;goto ___jumpext;}}}
and at the bottom we have:
___jump: {void *___host_label=((void*)(((___label_struct*)(___pc-1))-
host_label)); if (((___label_struct*)(___pc-1))->host ==
___H__20_all_2e_o1) goto *___host_label;} ___jumpext: ___ps->pc=___pc; ___ps->hp=___hp; ___ps->fp=___fp; ___ps->r[0]=___r0; ___ps->r[1]=___r1; ___ps->r[2]=___r2; ___ps->r[3]=___r3; ___ps->r[4] =___r4; return ___pc; }
Wouldn't it be better to have for these two examples
{___ps->na=1; ___r4=___G_newline.val; ___ps->temp4=(long) &___G_newline; goto ___jump;}
and
{___ps->na=2; ___r4=___G__2a_.val; ___ps->temp4=(long)&___G__2a_; goto ___jump;}
with
___jump: if (((((___temp=(___r4)))&((1<<2)-1))==1&&((((*((long*)((___temp)- (1)))))&(((1<<5)-1)<<3))==(((14))<<3)))) {___pc=((___label_struct*)(___r4-1))->entry_or_descr; {void *___host_label=((void*)(((___label_struct*)(___pc-1))-
host_label));
if (((___label_struct*)(___pc-1))->host == ___H__20_all_2e_o1) goto *___host_label;}} ___pc=___ps->handler_not_proc_glo; ___jumpext: ___ps->pc=___pc; ___ps->hp=___hp; ___ps->fp=___fp; ___ps->r[0]=___r0; ___ps->r[1]=___r1; ___ps->r[2]=___r2; ___ps->r[3] =___r3; ___ps->r[4]=___r4; return ___pc;
This would get rid of a lot of duplicated code, nearly half the jumps to ___jumpext, etc.
OK, here's the difference between defining ___OPTIMIZE_SPACE or not with a 64-bit gcc-4.1.0 on a 2GHz Mac G5. There's not much difference with the way the C macros are currently expanded.
Brad
On this file:
when you don't define ___OPTIMIZE_SPACE
[lindv2:Arrays/srfi3/gsc-test] lucier% /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.c -c -D___SINGLE_HOST -D___DYNAMIC gcc: unrecognized option '-no-cpp-precomp' 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
With ___OPTIMIZE_SPACE:
[lindv2:Arrays/srfi3/gsc-test] lucier% /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.c -D___SINGLE_HOST -D___OPTIMIZE_SPACE - D___SINGLE_HOST -c -save-temps gcc: unrecognized option '-no-cpp-precomp' Memory still allocated at the end of the compilation process Size Allocated Used Overhead 8 20k 16k 600 16 16k 12k 352 64 4096 640 64 128 16k 15k 224 256 436k 432k 6104 512 296k 292k 4144 1024 144k 141k 2016 2048 120k 120k 1680 4096 92k 92k 1288 8192 40k 40k 280 16384 16k 16k 56 112 2600k 2556k 35k 208 12k 9984 168 192 16k 13k 224 160 40k 36k 560 176 152k 147k 2128 48 220k 218k 3520 32 148k 145k 2664 80 8192 5840 112 Total 4396k 4311k 61k
String pool entries 23172 identifiers 23172 (100.00%) slots 32768 bytes 641k (30k overhead) table size 256k coll/search 0.3775 ins/search 0.0643 avg. entry 28.35 bytes (+/- 12.47) longest entry 67
??? tree nodes created
(No per-node statistics) Type hash: size 1021, 351 elements, 0.255196 collisions DECL_DEBUG_EXPR hash: size 1021, 0 elements, 0.000000 collisions DECL_VALUE_EXPR hash: size 1021, 0 elements, 0.000000 collisions
Execution times (seconds) TOTAL : 1.65 0.13 2.10 4255 kB Memory still allocated at the end of the compilation process Size Allocated Used Overhead 8 16k 14k 480 16 112k 12k 2464 64 1188k 1163k 18k 256 484k 452k 6776 512 36k 24k 504 1024 220k 215k 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 768k 768k 168 1048576 1024k 1024k 56 2097152 4096k 4096k 112 112 24M 13M 348k 208 40k 38k 560 192 3344k 3287k 45k 160 28k 6240 392 176 548k 311k 7672 48 2192k 1173k 34k 32 780k 80k 13k 80 26M 2055k 367k Total 66M 28M 852k
String pool entries 124847 identifiers 124847 (100.00%) slots 262144 bytes 1674k (135k overhead) table size 2048k coll/search 0.8988 ins/search 0.1804 avg. entry 13.73 bytes (+/- 8.99) longest entry 71
??? tree nodes created
(No per-node statistics) Type hash: size 1021, 557 elements, 0.658802 collisions DECL_DEBUG_EXPR hash: size 8191, 0 elements, 1.051271 collisions DECL_VALUE_EXPR hash: size 1021, 0 elements, 0.000000 collisions
Execution times (seconds) garbage collection : 1.66 ( 0%) usr 1.05 ( 1%) sys 3.29 ( 0%) wall 0 kB ( 0%) ggc callgraph construction: 1.39 ( 0%) usr 0.37 ( 0%) sys 2.11 ( 0%) wall 17018 kB ( 2%) ggc callgraph optimization: 0.04 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc ipa reference : 0.31 ( 0%) usr 0.07 ( 0%) sys 0.48 ( 0%) wall 7 kB ( 0%) ggc cfg construction : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%) wall 6199 kB ( 1%) ggc cfg cleanup : 67.38 ( 5%) usr 0.45 ( 0%) sys 83.19 ( 5%) wall 57 kB ( 0%) ggc trivially dead code : 1.42 ( 0%) usr 0.04 ( 0%) sys 1.74 ( 0%) wall 0 kB ( 0%) ggc life analysis : 4.73 ( 0%) usr 3.20 ( 3%) sys 9.99 ( 1%) wall 14907 kB ( 2%) ggc life info update : 0.67 ( 0%) usr 0.01 ( 0%) sys 0.81 ( 0%) wall 527 kB ( 0%) ggc alias analysis : 1.23 ( 0%) usr 0.05 ( 0%) sys 1.54 ( 0%) wall 18444 kB ( 2%) ggc register scan : 0.73 ( 0%) usr 0.03 ( 0%) sys 0.96 ( 0%) wall 2 kB ( 0%) ggc rebuild jump labels : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 6.45 ( 1%) usr 11.01 (10%) sys 23.16 ( 1%) wall 2082 kB ( 0%) ggc lexical analysis : 11.37 ( 1%) usr 21.93 (20%) sys 43.56 ( 3%) wall 0 kB ( 0%) ggc parser : 8.69 ( 1%) usr 11.40 (11%) sys 24.06 ( 1%) wall 58777 kB ( 7%) ggc tree gimplify : 1.08 ( 0%) usr 0.06 ( 0%) sys 1.52 ( 0%) wall 22756 kB ( 3%) ggc tree eh : 0.14 ( 0%) usr 0.01 ( 0%) sys 0.19 ( 0%) wall 0 kB ( 0%) ggc tree CFG construction : 0.43 ( 0%) usr 0.10 ( 0%) sys 0.70 ( 0%) wall 59315 kB ( 7%) ggc tree CFG cleanup : 5.08 ( 0%) usr 0.07 ( 0%) sys 6.35 ( 0%) wall 769 kB ( 0%) ggc tree copy propagation : 4.37 ( 0%) usr 0.33 ( 0%) sys 5.80 ( 0%) wall 10991 kB ( 1%) ggc tree store copy prop : 0.65 ( 0%) usr 0.04 ( 0%) sys 0.92 ( 0%) wall 1600 kB ( 0%) ggc tree find ref. vars : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall 1497 kB ( 0%) ggc tree PTA : 3.75 ( 0%) usr 0.44 ( 0%) sys 5.69 ( 0%) wall 12519 kB ( 1%) ggc tree alias analysis : 5.64 ( 0%) usr 9.67 ( 9%) sys 13.57 ( 1%) wall 6874 kB ( 1%) ggc tree PHI insertion : 9.43 ( 1%) usr 0.61 ( 1%) sys 12.71 ( 1%) wall 124865 kB (14%) ggc tree SSA rewrite : 3.98 ( 0%) usr 0.19 ( 0%) sys 5.83 ( 0%) wall 31517 kB ( 4%) ggc tree SSA other : 0.95 ( 0%) usr 1.31 ( 1%) sys 2.80 ( 0%) wall 0 kB ( 0%) ggc tree SSA incremental : 16.59 ( 1%) usr 3.48 ( 3%) sys 24.92 ( 1%) wall 16732 kB ( 2%) ggc tree operand scan : 588.39 (48%) usr 10.34 (10%) sys 752.59 (45%) wall 18424 kB ( 2%) ggc dominator optimization: 286.13 (23%) usr 2.87 ( 3%) sys 359.55 (21%) wall 59799 kB ( 7%) ggc tree STORE-CCP : 0.59 ( 0%) usr 0.02 ( 0%) sys 0.81 ( 0%) wall 520 kB ( 0%) ggc tree CCP : 0.82 ( 0%) usr 0.02 ( 0%) sys 0.98 ( 0%) wall 528 kB ( 0%) ggc tree split crit edges : 0.24 ( 0%) usr 0.16 ( 0%) sys 0.61 ( 0%) wall 26250 kB ( 3%) ggc tree reassociation : 0.41 ( 0%) usr 0.02 ( 0%) sys 0.52 ( 0%) wall 0 kB ( 0%) ggc tree FRE : 11.31 ( 1%) usr 0.55 ( 1%) sys 14.83 ( 1%) wall 29214 kB ( 3%) ggc tree code sinking : 0.78 ( 0%) usr 0.05 ( 0%) sys 1.03 ( 0%) wall 0 kB ( 0%) ggc tree linearize phis : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 0 kB ( 0%) ggc tree forward propagate: 0.12 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 0 kB ( 0%) ggc tree conservative DCE : 1.57 ( 0%) usr 0.04 ( 0%) sys 1.99 ( 0%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.67 ( 0%) usr 0.01 ( 0%) sys 0.86 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.66 ( 0%) usr 0.03 ( 0%) sys 0.87 ( 0%) wall 0 kB ( 0%) ggc PHI merge : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 23 kB ( 0%) ggc tree loop bounds : 0.25 ( 0%) usr 0.01 ( 0%) sys 0.31 ( 0%) wall 0 kB ( 0%) ggc loop invariant motion : 0.46 ( 0%) usr 0.01 ( 0%) sys 0.61 ( 0%) wall 0 kB ( 0%) ggc tree canonical iv : 0.13 ( 0%) usr 0.01 ( 0%) sys 0.18 ( 0%) wall 0 kB ( 0%) ggc scev constant prop : 1.17 ( 0%) usr 0.04 ( 0%) sys 1.49 ( 0%) wall 1751 kB ( 0%) ggc complete unrolling : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 0 kB ( 0%) ggc tree loop init : 3.59 ( 0%) usr 5.28 ( 5%) sys 10.90 ( 1%) wall 33356 kB ( 4%) ggc tree loop fini : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc tree copy headers : 0.21 ( 0%) usr 0.01 ( 0%) sys 0.28 ( 0%) wall 1 kB ( 0%) ggc tree SSA uncprop : 0.36 ( 0%) usr 0.00 ( 0%) sys 0.48 ( 0%) wall 0 kB ( 0%) ggc tree SSA to normal : 115.06 ( 9%) usr 1.06 ( 1%) sys 144.86 ( 9%) wall 61182 kB ( 7%) ggc tree rename SSA copies: 0.48 ( 0%) usr 0.08 ( 0%) sys 0.63 ( 0%) wall 0 kB ( 0%) ggc dominance frontiers : 0.43 ( 0%) usr 0.02 ( 0%) sys 0.56 ( 0%) wall 0 kB ( 0%) ggc expand : 5.91 ( 0%) usr 4.21 ( 4%) sys 12.57 ( 1%) wall 107898 kB (12%) ggc jump : 0.37 ( 0%) usr 0.03 ( 0%) sys 0.54 ( 0%) wall 0 kB ( 0%) ggc CSE : 1.76 ( 0%) usr 1.17 ( 1%) sys 3.58 ( 0%) wall 1269 kB ( 0%) ggc loop analysis : 1.04 ( 0%) usr 0.13 ( 0%) sys 1.39 ( 0%) wall 6982 kB ( 1%) ggc branch prediction : 2.33 ( 0%) usr 0.19 ( 0%) sys 3.07 ( 0%) wall 4743 kB ( 1%) ggc flow analysis : 0.15 ( 0%) usr 0.01 ( 0%) sys 0.27 ( 0%) wall 0 kB ( 0%) ggc combiner : 3.14 ( 0%) usr 0.18 ( 0%) sys 4.13 ( 0%) wall 24031 kB ( 3%) ggc if-conversion : 1.33 ( 0%) usr 0.08 ( 0%) sys 1.79 ( 0%) wall 345 kB ( 0%) ggc local alloc : 2.12 ( 0%) usr 0.08 ( 0%) sys 2.70 ( 0%) wall 11213 kB ( 1%) ggc global alloc : 18.25 ( 1%) usr 9.60 ( 9%) sys 33.92 ( 2%) wall 26534 kB ( 3%) ggc reload CSE regs : 22.25 ( 2%) usr 0.38 ( 0%) sys 28.78 ( 2%) wall 11472 kB ( 1%) ggc flow 2 : 0.45 ( 0%) usr 0.01 ( 0%) sys 0.56 ( 0%) wall 19 kB ( 0%) ggc if-conversion 2 : 0.44 ( 0%) usr 0.04 ( 0%) sys 0.57 ( 0%) wall 13 kB ( 0%) ggc rename registers : 0.72 ( 0%) usr 0.16 ( 0%) sys 1.05 ( 0%) wall 10 kB ( 0%) ggc scheduling 2 : 2.66 ( 0%) usr 0.07 ( 0%) sys 3.42 ( 0%) wall 28856 kB ( 3%) ggc shorten branches : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 0 kB ( 0%) ggc final : 1.78 ( 0%) usr 0.11 ( 0%) sys 2.32 ( 0%) wall 2050 kB ( 0%) ggc TOTAL :1237.93 108.22 1679.82 866064 kB