From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7372 invoked by alias); 6 Sep 2008 14:13:41 -0000 Received: (qmail 6741 invoked by uid 48); 6 Sep 2008 14:12:04 -0000 Date: Sat, 06 Sep 2008 14:13:00 -0000 Message-ID: <20080906141204.6740.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "hubicka at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-09/txt/msg00725.txt.bz2 ------- Comment #45 from hubicka at gcc dot gnu dot org 2008-09-06 14:12 ------- Memory footprint in TOP is about 430MB (64bit machine). On current mainline we need 191MB before IPA. Top consumers cfg.c:226 (connect_dest) 598696: 0.2% 180224: 0.5% 3484960: 1.8% 594504: 1.5% 73663 gimple-low.c:806 (record_vars_into) 0: 0.0% 0: 0.0% 3825552: 2.0% 0: 0.0% 79699 cp/pt.c:8316 (tsubst_decl) 2244888: 0.9% 0: 0.0% 4552704: 2.4% 357768: 0.9% 44721 tree.c:6061 (build_method_type_directly) 1946600: 0.8% 0: 0.0% 4703200: 2.5% 265992: 0.7% 33249 tree-inline.c:3589 (copy_tree_r) 9450136: 3.6% 0: 0.0% 4820840: 2.5% 1248128: 3.2% 187483 cfg.c:142 (alloc_block) 1046016: 0.4% 0: 0.0% 4988448: 2.6% 0: 0.0% 62859 cgraph.c:638 (cgraph_create_edge) 0: 0.0% 0: 0.0% 5183328: 2.7% 0: 0.0% 53993 gimplify.c:4314 (gimplify_modify_expr) 1185040: 0.5% 0: 0.0% 5570160: 2.9% 304112: 0.8% 57599 gimple-iterator.c:446 (gsi_insert_after_without_ 4904480: 1.9% 0: 0.0% 5843840: 3.1% 2149664: 5.5% 268708 cfg.c:280 (unchecked_make_edge) 0: 0.0% 783288: 2.2% 5930352: 3.1% 745960: 1.9% 93245 gimple.c:287 (gimple_build_call_1) 871144: 0.3% 0: 0.0% 6066056: 3.2% 247408: 0.6% 51874 tree.c:962 (build_int_cst_wide) 6096: 0.0% 0: 0.0% 9716432: 5.1% 3187680: 8.1% 2221 gimplify.c:521 (create_tmp_var_raw) 452760: 0.2% 0: 0.0% 10597944: 5.5% 526224: 1.3% 65778 cp/lex.c:590 (copy_decl) 26304: 0.0% 0: 0.0% 13586520: 7.1% 1326296: 3.4% 56894 Total 258936448 34882576 191255621 39440157 5928571 source location Garbage Freed Leak Overhead Times Apparently largest are the gimple temporaries after IPA: cp/lex.c:573 (cxx_dup_lang_specific_decl) 384: 0.0% 896: 0.0% 2770736: 0.9% 2992: 0.0% 43453 cp/lex.c:510 (build_lang_decl) 805432: 0.2% 209648: 0.2% 3196488: 1.1% 349552: 0.5% 18896 stringpool.c:74 (alloc_node) 1994400: 0.4% 0: 0.0% 3287712: 1.1% 0: 0.0% 55022 cfg.c:142 (alloc_block) 10005792: 2.1% 0: 0.0% 3966048: 1.4% 0: 0.0% 145540 cfg.c:280 (unchecked_make_edge) 4507272: 0.9% 7134984: 5.8% 4456296: 1.5% 1788728: 2.5% 223591 cgraph.c:408 (cgraph_create_node) 7802208: 1.6% 0: 0.0% 4477248: 1.5% 1364384: 1.9% 42637 cp/pt.c:8316 (tsubst_decl) 2244888: 0.5% 0: 0.0% 4552704: 1.6% 357768: 0.5% 44721 tree.c:6061 (build_method_type_directly) 1946600: 0.4% 0: 0.0% 4703200: 1.6% 265992: 0.4% 33249 cgraph.c:638 (cgraph_create_edge) 17196288: 3.5% 0: 0.0% 5254848: 1.8% 0: 0.0% 233866 tree-inline.c:4045 (copy_decl_to_var) 145488: 0.0% 0: 0.0% 5593392: 1.9% 273280: 0.4% 34160 gimple-iterator.c:446 (gsi_insert_after_without_ 14342320: 2.9% 0: 0.0% 5650120: 1.9% 3998488: 5.7% 499811 ggc-common.c:187 (ggc_calloc) 16950080: 3.5% 3025816: 2.4% 6151656: 2.1% 459072: 0.6% 69247 tree-ssanames.c:141 (make_ssa_name_fn) 16930080: 3.5% 0: 0.0% 8363760: 2.9% 1686256: 2.4% 210782 gimplify.c:521 (create_tmp_var_raw) 5453784: 1.1% 0: 0.0% 9020256: 3.1% 689240: 1.0% 86155 tree.c:962 (build_int_cst_wide) 6096: 0.0% 0: 0.0% 10131688: 3.5% 3323928: 4.7% 2299 tree-inline.c:3589 (copy_tree_r) 49631032:10.2% 0: 0.0% 12553384: 4.3% 5797568: 8.2% 800223 tree-dfa.c:150 (create_var_ann) 0: 0.0% 27303320:22.0% 12672616: 4.3% 3634176: 5.1% 454272 gimple.c:2106 (gimple_copy) 11226992: 2.3% 0: 0.0% 13146032: 4.5% 1196784: 1.7% 209491 cp/lex.c:590 (copy_decl) 64104: 0.0% 0: 0.0% 13548720: 4.6% 1326296: 1.9% 56894 tree-inline.c:484 (remap_block) 1928264: 0.4% 0: 0.0% 14843088: 5.1% 1290104: 1.8% 161263 tree-ssa-operands.c:499 (ssa_operand_alloc) 0: 0.0% 34199342:27.6% 18090837: 6.2% 3566211: 5.0% 11251 tree-inline.c:4088 (copy_decl_no_change) 11756840: 2.4% 0: 0.0% 40988416:14.0% 2425144: 3.4% 317455 Total 487237966 123888014 293018044 70674672 9669114 source location Garbage Freed Leak Overhead Times so debug info and declarations are quite top. This is with my DECL_INGORED_P fix I plan to commit to mainline soon. 5MB are also bitmaps tree-ssa-operands.c:2381 (add_to_addressa 73585 9052240 5946000 4181320 173579 I suspect most of the rest are operand caches, since they are so ineffective for small functions. at end of compilation: tree-inline.c:484 (remap_block) 29218176: 2.1% 0: 0.0% 104: 0.0% 2247560: 1.3% 280945 cselib.c:1155 (cselib_subst_to_values) 31320504: 2.3% 0: 0.0% 0: 0.0% 5958648: 3.4% 838942 cp/call.c:2346 (add_template_candidate_real) 31457040: 2.3% 0: 0.0% 0: 0.0% 3096816: 1.8% 457682 gimple-iterator.c:446 (gsi_insert_after_without_ 32515440: 2.3% 0: 0.0% 0: 0.0% 6503088: 3.7% 812886 tree-phinodes.c:157 (allocate_phi_node) 33375352: 2.4% 0: 0.0% 0: 0.0% 1120888: 0.6% 108792 ggc-common.c:187 (ggc_calloc) 34614992: 2.5% 9072016: 2.6% 1895328: 2.0% 671680: 0.4% 102129 rtl.c:269 (copy_rtx) 42322896: 3.1% 0: 0.0% 0: 0.0% 8318000: 4.7% 1083689 emit-rtl.c:3348 (make_insn_raw) 42838312: 3.1% 0: 0.0% 88: 0.0% 3894400: 2.2% 486800 gimple.c:2106 (gimple_copy) 43173352: 3.1% 0: 0.0% 0: 0.0% 2063688: 1.2% 368502 tree-ssanames.c:141 (make_ssa_name_fn) 73506000: 5.3% 0: 0.0% 26640: 0.0% 4902176: 2.8% 612772 tree-inline.c:4088 (copy_decl_no_change) 93714848: 6.8% 0: 0.0% 176464: 0.2% 4370928: 2.5% 562896 tree-inline.c:3589 (copy_tree_r) 98165464: 7.1% 0: 0.0% 2352: 0.0% 9178696: 5.2% 1250363 Total 1385145407 354509964 93434594 175468533 23822336 source location Garbage Freed Leak Overhead Times positive thing is that there are no leaked gimple statements at all. Most of alocation at the end is: cp/lex.c:590 (copy_decl) 1532928: 0.1% 0: 0.0% 12079896:12.9% 1326296: 0.8% 56894 tree.c:962 (build_int_cst_wide) 6096: 0.0% 0: 0.0% 10359544:11.1% 3388072: 1.9% 3011 tree.c:6061 (build_method_type_directly) 1947800: 0.1% 0: 0.0% 4703200: 5.0% 266040: 0.2% 33255 cp/pt.c:8316 (tsubst_decl) 2244888: 0.2% 0: 0.0% 4552704: 4.9% 357768: 0.2% 44721 DF and PRE allocate some giant bitmaps: df-problems.c:308 (df_rd_alloc) 145581 12612800 11870840 11870840 597073 df-problems.c:309 (df_rd_alloc) 145581 8655600 8293080 8293080 108099 df-problems.c:310 (df_rd_alloc) 145581 15585520 14869800 14869800 1391724 tree-ssa-pre.c:584 (bitmap_set_new) 987262 68922080 53349440 53349440 2631124 tree-ssa-pre.c:585 (bitmap_set_new) 987262 69386800 53918200 53918200 3978100 df-problems.c:311 (df_rd_alloc) 145581 74605440 73361600 73361600 0 df-problems.c:539 (df_rd_transfer_functio 100011 63125520 42433280 42433280 148378 My guess is that ssa-operands can be easiest to track if I am right about their memory usage. Honza -- hubicka at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amacleod at redhat dot com Last reconfirmed|2007-09-20 14:09:06 |2008-09-06 14:12:03 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850