As requested in http://gcc.gnu.org/ml/gcc/2012-02/msg00146.html, here is the preprocessed source for the file that was slowest to compile in my measurements.
Created attachment 26599 [details] the slowest file
Created attachment 26600 [details] file with largest difference between 4.6 and 4.7
Thanks. The slowest one looks autogenerated, simply a very large translation unit. Lots of functions with lots of function calls. Nothing special sticks out when looking at -ftime-report. The one with the largest difference spends the most time in the C++ frontend where it also regressed.
perf record -g g++ -O2 -c /var/tmp/V8DerivedSources08.ii with 4.7 shows: # Overhead Command 8.78% cc1plus cc1plus [.] store_binding | --- store_binding 1.94% cc1plus libc-2.15.so [.] memset | --- memset | |--50.00%-- reload_cse_regs_1 | |--25.00%-- ipcp_generate_summary | --24.99%-- inline_analyze_function 1.89% cc1plus cc1plus [.] gt_ggc_mx_lang_tree_node | --- gt_ggc_mx_lang_tree_node 1.86% cc1plus libc-2.15.so [.] _int_malloc | --- _int_malloc 1.73% cc1plus cc1plus [.] ggc_set_mark | --- ggc_set_mark 1.36% cc1plus cc1plus [.] ggc_internal_alloc_stat | --- ggc_internal_alloc_stat 1.27% cc1plus cc1plus [.] htab_find_slot_with_hash | --- htab_find_slot_with_hash | --100.00%-- (nil) 1.24% cc1plus libc-2.15.so [.] _int_free | --- _int_free | --100.00%-- compute_may_aliases 1.07% cc1plus cc1plus [.] push_to_top_level | --- push_to_top_level 0.94% cc1plus cc1plus [.] bitmap_set_bit | --- bitmap_set_bit | |--22.22%-- 0x31cfaa8 | |--22.22%-- (nil) | |--11.11%-- 0x2b260c8 | |--11.11%-- 0x2b26308 | |--11.11%-- 0x31d02b0 | |--11.11%-- 0x2af1290 | --11.11%-- 0x32067c8 0.87% cc1plus cc1plus [.] lookup_fnfields_idx_nolazy | --- lookup_fnfields_idx_nolazy 0.78% cc1plus cc1plus [.] add_function_candidate | --- add_function_candidate 0.77% as as [.] 0x2f5e5 ...
largest regression: trunk -O2: TOTAL : 29.47 3.06 32.61 678947 kB 4.6.3-pre -O2: TOTAL : 23.56 3.80 27.90 658720 kB 4.6.3-pre -fsyntax-only: Execution times (seconds) garbage collection : 0.44 ( 4%) usr 0.00 ( 0%) sys 0.43 ( 3%) wall 0 kB ( 0%) ggc preprocessing : 0.27 ( 2%) usr 0.34 (14%) sys 0.52 ( 4%) wall 4548 kB ( 1%) ggc parser : 7.70 (67%) usr 0.86 (36%) sys 9.02 (65%) wall 364457 kB (84%) ggc name lookup : 3.00 (26%) usr 1.15 (48%) sys 3.87 (28%) wall 62867 kB (15%) ggc varconst : 0.02 ( 0%) usr 0.02 ( 1%) sys 0.02 ( 0%) wall 4 kB ( 0%) ggc symout : 0.01 ( 0%) usr 0.01 ( 0%) sys 0.01 ( 0%) wall 32 kB ( 0%) ggc TOTAL : 11.44 2.40 13.88 433195 kB trunk -fsyntax-only: Execution times (seconds) phase setup : 0.01 ( 0%) usr 0.01 ( 1%) sys 0.01 ( 0%) wall 1438 kB ( 0%) ggc phase parsing : 14.00 (100%) usr 1.86 (99%) sys 15.93 (100%) wall 405002 kB (100%) ggc |name lookup : 6.07 (43%) usr 0.31 (16%) sys 5.88 (37%) wall 30410 kB ( 7%) ggc |overload resolution : 6.55 (47%) usr 0.25 (13%) sys 7.07 (44%) wall 64054 kB (16%) ggc garbage collection : 0.46 ( 3%) usr 0.01 ( 1%) sys 0.46 ( 3%) wall 0 kB ( 0%) ggc preprocessing : 0.27 ( 2%) usr 0.30 (16%) sys 0.68 ( 4%) wall 4876 kB ( 1%) ggc parser (global) : 1.07 ( 8%) usr 0.42 (22%) sys 1.26 ( 8%) wall 88673 kB (22%) ggc parser struct body : 1.79 (13%) usr 0.21 (11%) sys 2.36 (15%) wall 67530 kB (17%) ggc parser enumerator list : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 1220 kB ( 0%) ggc parser function body : 1.11 ( 8%) usr 0.09 ( 5%) sys 1.26 ( 8%) wall 21293 kB ( 5%) ggc parser inl. func. body : 1.42 (10%) usr 0.09 ( 5%) sys 1.59 (10%) wall 18676 kB ( 5%) ggc parser inl. meth. body : 1.65 (12%) usr 0.23 (12%) sys 1.85 (12%) wall 53613 kB (13%) ggc template instantiation : 6.19 (44%) usr 0.50 (27%) sys 6.45 (40%) wall 149113 kB (37%) ggc varconst : 0.02 ( 0%) usr 0.01 ( 1%) sys 0.00 ( 0%) wall 4 kB ( 0%) ggc TOTAL : 14.01 1.88 15.95 406458 kB