------- Comment #46 from hubicka at ucw dot cz 2006-08-21 17:11 ------- Subject: Re: [4.1/4.2 regression] A file that can not be compiled in reasonable time/space
Hi, for completeness the -O3 -fno-tree-pre -fno-tree-fre results (tree-pre/fre needs something little over 2GB of ram to converge) Execution times (seconds) garbage collection : 1.11 ( 1%) usr 0.07 ( 2%) sys 8.57 ( 5%) wall 0 kB ( 0%) ggc life analysis : 5.47 ( 4%) usr 0.12 ( 3%) sys 5.63 ( 3%) wall 2701 kB ( 1%) ggc life info update : 2.05 ( 2%) usr 0.00 ( 0%) sys 2.10 ( 1%) wall 643 kB ( 0%) ggc integration : 8.36 ( 7%) usr 0.18 ( 5%) sys 8.61 ( 5%) wall 79611 kB (27%) ggc tree CFG cleanup : 3.69 ( 3%) usr 0.00 ( 0%) sys 3.77 ( 2%) wall 20 kB ( 0%) ggc tree alias analysis : 2.64 ( 2%) usr 0.25 ( 6%) sys 3.01 ( 2%) wall 0 kB ( 0%) ggc tree SSA rewrite : 2.17 ( 2%) usr 0.02 ( 1%) sys 2.22 ( 1%) wall 21589 kB ( 7%) ggc tree SSA incremental : 4.04 ( 3%) usr 0.01 ( 0%) sys 4.10 ( 2%) wall 1061 kB ( 0%) ggc tree operand scan : 1.54 ( 1%) usr 0.54 (14%) sys 1.95 ( 1%) wall 18382 kB ( 6%) ggc dominator optimization: 2.49 ( 2%) usr 0.06 ( 2%) sys 2.61 ( 1%) wall 11262 kB ( 4%) ggc tree SRA : 3.04 ( 2%) usr 0.08 ( 2%) sys 3.12 ( 2%) wall 25600 kB ( 9%) ggc tree SSA to normal : 38.17 (31%) usr 0.09 ( 2%) sys 38.56 (21%) wall 11214 kB ( 4%) ggc dominance computation : 2.40 ( 2%) usr 0.05 ( 1%) sys 2.52 ( 1%) wall 0 kB ( 0%) ggc expand : 4.22 ( 3%) usr 0.20 ( 5%) sys 11.38 ( 6%) wall 35690 kB (12%) ggc global alloc : 13.43 (11%) usr 1.28 (32%) sys 54.13 (29%) wall 5873 kB ( 2%) ggc flow 2 : 0.37 ( 0%) usr 0.01 ( 0%) sys 0.78 ( 0%) wall 5092 kB ( 2%) ggc TOTAL : 123.25 3.98 183.52 291674 kB Note that the testcase is very different at -O3, because min/max functions are inlined breaking gigantic basic blocks into number of small BBs, so many of bottlenecks visible at -O2 go away. I duno what happens in global alloc, tree SSA to normal is the live_on_entry/live_on_exit dicussed. We also have problems with very deep recursion levels as dominator tree is deep. I am thinking about implementing iterators for walking in dom order as the current fully blown domtree walker is bit uneasy in some cases. With FRE/PRE enabled also GGC runs out of stack frame size, because some of temporary values in annotations leaks and instruct GGC to recurse insanely. Honza -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28071