public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "hubicka at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug lto/45375] [meta-bug] Issues with building Mozilla with LTO Date: Thu, 02 Jun 2011 13:30:00 -0000 [thread overview] Message-ID: <bug-45375-4-Y9AgoNqeKC@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-45375-4@http.gcc.gnu.org/bugzilla/> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375 --- Comment #97 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-06-02 13:28:28 UTC --- Today I noticed by an accident that the following hack: Index: lto-streamer-out.c =================================================================== --- lto-streamer-out.c (revision 174547) +++ lto-streamer-out.c (working copy) @@ -1135,15 +1288,15 @@ lto_output_tree_or_ref (ob, BINFO_OFFSET (expr), ref_p); lto_output_tree_or_ref (ob, BINFO_VTABLE (expr), ref_p); - lto_output_tree_or_ref (ob, BINFO_VIRTUALS (expr), ref_p); + /*lto_output_tree_or_ref (ob, BINFO_VIRTUALS (expr), ref_p);*/ lto_output_tree_or_ref (ob, BINFO_VPTR_FIELD (expr), ref_p); output_uleb128 (ob, VEC_length (tree, BINFO_BASE_ACCESSES (expr))); FOR_EACH_VEC_ELT (tree, BINFO_BASE_ACCESSES (expr), i, t) lto_output_tree_or_ref (ob, t, ref_p); - lto_output_tree_or_ref (ob, BINFO_INHERITANCE_CHAIN (expr), ref_p); - lto_output_tree_or_ref (ob, BINFO_SUBVTT_INDEX (expr), ref_p); + /* Backend do not care about BINFO_INHERITANCE_CHAIN and BINFO_SUBVTT_INDEX. + */ lto_output_tree_or_ref (ob, BINFO_VPTR_INDEX (expr), ref_p); } @@ -2014,7 +2167,7 @@ lto_output_tree_ref (ob, t); /* Output the head of the arguments list. */ - lto_output_tree_ref (ob, DECL_ARGUMENTS (function)); + lto_output_chain (ob, DECL_ARGUMENTS (function), true); /* Output all the SSA names used in the function. */ output_ssa_names (ob, fn); Index: lto-streamer-in.c =================================================================== --- lto-streamer-in.c (revision 174547) +++ lto-streamer-in.c (working copy) @@ -2308,7 +2438,7 @@ while (t); BINFO_OFFSET (expr) = lto_input_tree (ib, data_in); - BINFO_VTABLE (expr) = lto_input_tree (ib, data_in); + /*BINFO_VTABLE (expr) = lto_input_tree (ib, data_in);*/ BINFO_VIRTUALS (expr) = lto_input_tree (ib, data_in); BINFO_VPTR_FIELD (expr) = lto_input_tree (ib, data_in); @@ -2323,8 +2453,6 @@ } } - BINFO_INHERITANCE_CHAIN (expr) = lto_input_tree (ib, data_in); - BINFO_SUBVTT_INDEX (expr) = lto_input_tree (ib, data_in); BINFO_VPTR_INDEX (expr) = lto_input_tree (ib, data_in); } Reduces memory usage from 4.4GB to 2.7GB, so almost halves it and proportionally improves compilation speed. The effect is disabling type based devirtualization. The difference is amount of IL sreamed. W/o hack > [WPA] Compression: 430817772 input bytes, 2004640654 uncompressed bytes (ratio: 4.653106) > [WPA] Size of mmap'd section decls: 267817970 bytes > [WPA] Size of mmap'd section function_body: 144808174 bytes > ipa lto decl in : 74.90 (30%) usr 2.38 (19%) sys 77.51 (29%) wall 722892 kB (44%) ggc (ggc memory info wraps around 4GB limit, have patch for that) With hack: > [WPA] Compression: 308616744 input bytes, 1236371760 uncompressed bytes (ratio: 4.006172) > [WPA] Size of mmap'd section decls: 147396203 bytes > [WPA] Size of mmap'd section function_body: 144662716 bytes > ipa lto decl in : 38.85 (23%) usr 1.18 (12%) sys 40.12 (23%) wall 2674626 kB (75%) ggc The node stats with the patch are as follows: identifier_node 505095 tree_list 1809449 integer_type 175310 pointer_type 1198885 reference_type 65356 array_type 96153 record_type 729335 union_type 14171 function_type 120632 method_type 504881 integer_cst 587216 string_cst 204367 function_decl 909919 label_decl 261908 field_decl 1278114 var_decl 87787 const_decl 327835 parm_decl 1653719 type_decl 771617 result_decl 559971 debug_expr_decl 147434 constructor 162322 nop_expr 531950 addr_expr 920865 tree_binfo 1013612 (to be compared with my previous stats) Heap vector stats: ipa-prop.c:2053 (ipa_node_duplication_hook) 540408: 0.8% 1046048 21339: 0.2% ipa-inline-analysis.c:2008 (inline_merge_summary 1697908: 2.5% 3086804 99582: 1.1% ipa-reference.c:185 (set_reference_optimization_ 6122784: 9.0% 10353528 10: 0.0% lto-cgraph.c:113 (lto_cgraph_encoder_encode) 6485840: 9.5% 10924352 22118: 0.2% ipa-ref.c:59 (ipa_record_reference) 16005792:23.5% 20789048 534854: 6.0% ipa-inline-analysis.c:647 (inline_summary_alloc) 17904344:26.3% 35257432 11486: 0.1% passes.c:1893 (execute_one_pass) 18076256:26.5% 20971480 474948: 5.3% Total 68129708 8892582 GGC stats: ipa-inline-analysis.c:841 (inline_node_duplicati 0: 0.0% 42428: 0.0% 37876224: 2.3% 2058852: 0.6% 232982 gimple.c:4177 (iterative_hash_gimple_type) 43510016: 2.8% 0: 0.0% 0: 0.0% 0: 0.0% 2719376 lto-symtab.c:156 (lto_symtab_register_decl) 50215704: 3.3% 0: 0.0% 0: 0.0% 0: 0.0% 896709 lto-section-in.c:471 (lto_new_in_decl_state) 165360: 0.0% 0: 0.0% 51424080: 3.2% 0: 0.0% 429912 cgraph.c:1008 (cgraph_create_edge_1) 0: 0.0% 0: 0.0% 77585352: 4.8% 0: 0.0% 746013 lto-streamer-in.c:2477 (lto_input_ts_constructor 34780240: 2.3% 67555760: 8.4% 45650928: 2.8% 33677352:10.4% 271362 ipa-inline-analysis.c:643 (inline_summary_alloc) 0: 0.0% 0: 0.0% 85235448: 5.3% 18126584: 5.6% 1 ipa-ref.c:54 (ipa_record_reference) 0: 0.0% 171658064:21.4% 85633072: 5.3% 68326696:21.0% 554106 lto-streamer-in.c:1934 (lto_materialize_tree) 90241344: 5.9% 0: 0.0% 11233544: 0.7% 5872: 0.0% 1013612 lto/lto.c:217 (lto_read_in_decl_state) 333288: 0.0% 0: 0.0% 130600080: 8.1% 24601136: 7.6% 3009384 toplev.c:1027 (realloc_for_line_map) 0: 0.0% 167815168:20.9% 167778304:10.4% 67182592:20.7% 14 tree.c:1223 (build_int_cst_wide) 200129008:13.0% 0: 0.0% 2046496: 0.1% 66567480:20.5% 40217 cgraph.c:457 (cgraph_allocate_node) 0: 0.0% 0: 0.0% 226542712:14.0% 0: 0.0% 765347 lto-streamer-in.c:1939 (lto_materialize_tree) 1077917488:70.1% 0: 0.0% 540532272:33.4% 28671712: 8.8% 12277142 Total 1537795379 803354140 1619917572 325016043 27622283 source location Garbage Freed Leak Overhead Times Honza
next prev parent reply other threads:[~2011-06-02 13:30 UTC|newest] Thread overview: 220+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <bug-45375-4@http.gcc.gnu.org/bugzilla/> 2010-10-15 1:29 ` [Bug lto/45375] [meta-bug] Mozilla does not build " hubicka at gcc dot gnu.org 2010-10-18 20:48 ` [Bug lto/45375] [meta-bug] Issues with building Mozilla " hubicka at gcc dot gnu.org 2010-12-01 23:58 ` hubicka at gcc dot gnu.org 2010-12-02 0:37 ` hubicka at gcc dot gnu.org 2010-12-02 1:03 ` davek at gcc dot gnu.org 2010-12-02 8:47 ` Jan Hubicka 2010-12-02 8:47 ` hubicka at ucw dot cz 2010-12-02 8:52 ` davek at gcc dot gnu.org 2010-12-02 9:42 ` rguenth at gcc dot gnu.org 2010-12-02 15:34 ` Jan Hubicka 2010-12-02 15:35 ` hubicka at ucw dot cz 2010-12-12 23:53 ` hubicka at gcc dot gnu.org 2010-12-14 15:37 ` hubicka at gcc dot gnu.org 2010-12-15 0:44 ` hubicka at gcc dot gnu.org 2010-12-17 22:26 ` hjl.tools at gmail dot com 2011-01-05 13:37 ` hubicka at gcc dot gnu.org 2011-01-06 7:35 ` mark at codesourcery dot com 2011-01-07 18:18 ` hubicka at gcc dot gnu.org 2011-01-07 18:25 ` hubicka at gcc dot gnu.org 2011-01-08 21:22 ` hubicka at gcc dot gnu.org 2011-01-08 21:23 ` alexey at feldgendler dot ru 2011-01-08 22:05 ` Jan Hubicka 2011-01-08 22:18 ` hubicka at ucw dot cz 2011-01-10 2:00 ` hubicka at gcc dot gnu.org 2011-01-10 8:47 ` hubicka at gcc dot gnu.org 2011-01-10 16:45 ` hubicka at gcc dot gnu.org 2011-01-10 23:18 ` hubicka at gcc dot gnu.org 2011-01-10 23:50 ` hubicka at gcc dot gnu.org 2011-01-11 0:06 ` hubicka at gcc dot gnu.org 2011-01-11 17:43 ` hubicka at gcc dot gnu.org 2011-01-15 17:20 ` hubicka at gcc dot gnu.org 2011-01-15 18:16 ` hubicka at gcc dot gnu.org 2011-01-20 10:37 ` hubicka at gcc dot gnu.org 2011-02-05 22:39 ` hubicka at gcc dot gnu.org 2011-02-07 18:49 ` mh+gcc at glandium dot org 2011-02-09 14:17 ` jamborm at gcc dot gnu.org 2011-02-09 14:41 ` mh+gcc at glandium dot org 2011-02-10 17:41 ` jamborm at gcc dot gnu.org 2011-02-10 17:43 ` mh+gcc at glandium dot org 2011-02-10 17:49 ` mh+gcc at glandium dot org 2011-02-12 9:44 ` mh+gcc at glandium dot org 2011-02-13 13:26 ` jamborm at gcc dot gnu.org 2011-02-16 17:18 ` jamborm at gcc dot gnu.org 2011-02-16 17:21 ` hubicka at gcc dot gnu.org 2011-02-17 13:41 ` jamborm at gcc dot gnu.org 2011-02-17 15:38 ` hubicka at ucw dot cz 2011-02-18 13:22 ` jamborm at gcc dot gnu.org 2011-03-09 12:37 ` markus at trippelsdorf dot de 2011-03-09 13:47 ` markus at trippelsdorf dot de 2011-03-09 14:41 ` markus at trippelsdorf dot de 2011-03-09 19:17 ` hubicka at ucw dot cz 2011-03-09 19:20 ` hubicka at ucw dot cz 2011-03-09 19:51 ` markus at trippelsdorf dot de 2011-03-09 21:45 ` markus at trippelsdorf dot de 2011-03-10 12:54 ` hubicka at ucw dot cz 2011-03-23 13:24 ` markus at trippelsdorf dot de 2011-04-03 8:34 ` hubicka at gcc dot gnu.org 2011-04-03 8:37 ` hubicka at gcc dot gnu.org 2011-04-03 9:09 ` hubicka at gcc dot gnu.org 2011-04-03 10:09 ` hubicka at gcc dot gnu.org 2011-04-03 11:32 ` markus at trippelsdorf dot de 2011-04-04 1:19 ` froydnj at codesourcery dot com 2011-04-04 13:02 ` rguenth at gcc dot gnu.org 2011-04-04 13:19 ` froydnj at codesourcery dot com 2011-04-05 0:16 ` mark at codesourcery dot com 2011-04-07 19:15 ` hubicka at gcc dot gnu.org 2011-04-07 19:38 ` markus at trippelsdorf dot de 2011-04-07 19:39 ` markus at trippelsdorf dot de 2011-04-07 19:59 ` markus at trippelsdorf dot de 2011-04-07 22:08 ` hubicka at gcc dot gnu.org 2011-04-08 6:53 ` markus at trippelsdorf dot de 2011-04-08 15:43 ` markus at trippelsdorf dot de 2011-04-08 15:51 ` markus at trippelsdorf dot de 2011-04-08 15:57 ` mh+gcc at glandium dot org 2011-04-08 16:10 ` markus at trippelsdorf dot de 2011-04-11 11:00 ` hubicka at gcc dot gnu.org 2011-04-11 11:13 ` hubicka at gcc dot gnu.org 2011-04-11 15:09 ` markus at trippelsdorf dot de 2011-04-11 18:44 ` markus at trippelsdorf dot de 2011-04-12 10:54 ` mh+gcc at glandium dot org 2011-04-12 16:22 ` hubicka at gcc dot gnu.org 2011-04-12 16:42 ` markus at trippelsdorf dot de 2011-04-22 12:54 ` hubicka at gcc dot gnu.org 2011-04-22 15:06 ` hubicka at gcc dot gnu.org 2011-05-02 10:35 ` hubicka at gcc dot gnu.org 2011-05-02 12:43 ` hubicka at gcc dot gnu.org 2011-05-03 17:39 ` hubicka at gcc dot gnu.org 2011-05-19 22:47 ` hubicka at gcc dot gnu.org 2011-05-19 23:49 ` hubicka at gcc dot gnu.org 2011-05-20 15:48 ` hubicka at gcc dot gnu.org 2011-05-20 15:54 ` hubicka at gcc dot gnu.org 2011-05-27 22:03 ` hubicka at gcc dot gnu.org 2011-06-02 13:30 ` hubicka at gcc dot gnu.org [this message] 2011-06-02 14:30 ` hubicka at gcc dot gnu.org 2011-06-15 10:32 ` markus at trippelsdorf dot de 2011-06-15 10:46 ` markus at trippelsdorf dot de 2011-06-15 11:39 ` mh+gcc at glandium dot org 2011-06-15 11:46 ` markus at trippelsdorf dot de 2011-06-15 12:35 ` markus at trippelsdorf dot de 2011-06-18 8:54 ` hubicka at ucw dot cz 2011-06-18 10:19 ` markus at trippelsdorf dot de 2011-06-26 19:52 ` markus at trippelsdorf dot de 2011-08-04 19:17 ` hubicka at gcc dot gnu.org 2011-08-04 19:23 ` pinskia at gcc dot gnu.org 2011-08-04 19:27 ` markus at trippelsdorf dot de 2011-08-05 13:48 ` jamborm at gcc dot gnu.org 2011-09-27 21:54 ` hubicka at gcc dot gnu.org 2011-09-28 13:49 ` hubicka at gcc dot gnu.org 2011-09-29 16:30 ` hubicka at gcc dot gnu.org 2011-10-01 13:21 ` hubicka at gcc dot gnu.org 2011-10-01 15:29 ` hubicka at gcc dot gnu.org 2011-10-01 15:54 ` hubicka at gcc dot gnu.org 2011-10-11 7:41 ` markus at trippelsdorf dot de 2011-10-11 12:19 ` markus at trippelsdorf dot de 2011-10-19 9:23 ` hubicka at gcc dot gnu.org 2011-10-19 13:06 ` hubicka at gcc dot gnu.org 2012-05-10 21:54 ` hubicka at gcc dot gnu.org 2012-05-10 21:59 ` hubicka at gcc dot gnu.org 2012-05-11 6:08 ` markus at trippelsdorf dot de 2012-05-11 8:39 ` hubicka at ucw dot cz 2012-05-11 8:47 ` rguenth at gcc dot gnu.org 2012-05-11 8:49 ` markus at trippelsdorf dot de 2012-05-11 8:57 ` mh+gcc at glandium dot org 2012-05-11 9:18 ` hubicka at ucw dot cz 2012-05-11 19:17 ` hubicka at gcc dot gnu.org 2012-05-12 14:48 ` hubicka at gcc dot gnu.org 2012-05-12 16:05 ` steven at gcc dot gnu.org 2012-05-12 18:39 ` hubicka at ucw dot cz 2012-05-12 19:46 ` hubicka at ucw dot cz 2012-05-12 20:46 ` hubicka at gcc dot gnu.org 2012-05-12 21:41 ` hubicka at gcc dot gnu.org 2012-05-13 16:42 ` hubicka at gcc dot gnu.org 2012-08-10 15:10 ` hubicka at gcc dot gnu.org 2012-08-10 15:39 ` hubicka at gcc dot gnu.org 2012-08-18 9:40 ` hubicka at gcc dot gnu.org 2012-08-19 5:58 ` hubicka at gcc dot gnu.org 2012-09-15 14:08 ` markus at trippelsdorf dot de 2012-10-08 22:21 ` hubicka at gcc dot gnu.org 2012-10-08 22:30 ` steven at gcc dot gnu.org 2012-12-01 12:40 ` markus at trippelsdorf dot de 2012-12-01 22:09 ` hubicka at ucw dot cz 2012-12-02 7:36 ` markus at trippelsdorf dot de 2012-12-02 9:23 ` hubicka at ucw dot cz 2012-12-02 11:58 ` markus at trippelsdorf dot de 2012-12-02 15:05 ` Jan Hubicka 2012-12-02 15:07 ` hubicka at ucw dot cz 2012-12-02 18:03 ` markus at trippelsdorf dot de 2012-12-02 20:52 ` Jan Hubicka 2012-12-02 20:52 ` hubicka at ucw dot cz 2012-12-02 21:09 ` hubicka at ucw dot cz 2012-12-02 21:13 ` markus at trippelsdorf dot de 2012-12-11 19:31 ` tejohnson at google dot com 2012-12-11 22:57 ` markus at trippelsdorf dot de 2012-12-12 0:01 ` tejohnson at google dot com 2012-12-12 11:44 ` markus at trippelsdorf dot de 2012-12-12 19:00 ` tejohnson at google dot com 2012-12-12 20:36 ` hubicka at ucw dot cz 2012-12-13 9:53 ` markus at trippelsdorf dot de 2012-12-13 13:00 ` markus at trippelsdorf dot de 2012-12-13 22:25 ` markus at trippelsdorf dot de 2012-12-14 18:25 ` hubicka at ucw dot cz 2013-01-06 0:32 ` leo at yuriev dot ru 2013-01-09 15:17 ` hubicka at gcc dot gnu.org 2013-01-09 15:20 ` hubicka at gcc dot gnu.org 2013-01-09 19:59 ` markus at trippelsdorf dot de 2013-01-09 21:21 ` hubicka at gcc dot gnu.org 2013-01-09 21:23 ` hubicka at gcc dot gnu.org 2013-01-10 15:04 ` hubicka at gcc dot gnu.org 2013-01-16 17:26 ` hubicka at gcc dot gnu.org 2013-01-17 10:53 ` rguenth at gcc dot gnu.org 2013-01-17 12:31 ` hubicka at ucw dot cz 2013-01-17 12:43 ` jakub at gcc dot gnu.org 2013-01-17 14:40 ` hubicka at gcc dot gnu.org 2013-01-17 14:55 ` rguenth at gcc dot gnu.org 2013-01-17 15:14 ` hubicka at gcc dot gnu.org 2013-01-17 17:11 ` hubicka at gcc dot gnu.org 2013-03-06 15:15 ` jamborm at gcc dot gnu.org 2013-03-07 16:09 ` rguenth at gcc dot gnu.org 2013-03-08 10:42 ` jamborm at gcc dot gnu.org 2013-06-17 16:33 ` hubicka at gcc dot gnu.org 2013-06-17 17:28 ` hubicka at gcc dot gnu.org 2013-06-19 15:39 ` hubicka at gcc dot gnu.org 2013-08-02 14:19 ` hubicka at gcc dot gnu.org 2013-08-02 16:32 ` hubicka at gcc dot gnu.org 2013-08-03 8:45 ` hubicka at gcc dot gnu.org 2013-08-21 9:02 ` marxin.liska at gmail dot com 2013-08-21 13:01 ` hubicka at ucw dot cz 2013-08-29 20:19 ` markus at trippelsdorf dot de 2013-08-29 21:51 ` markus at trippelsdorf dot de 2013-09-03 14:39 ` hubicka at gcc dot gnu.org 2013-09-03 17:22 ` markus at trippelsdorf dot de 2013-09-05 23:08 ` hubicka at ucw dot cz 2013-09-06 7:28 ` markus at trippelsdorf dot de 2014-01-17 19:05 ` trippels at gcc dot gnu.org 2014-01-17 19:06 ` trippels at gcc dot gnu.org 2014-01-17 19:07 ` trippels at gcc dot gnu.org 2014-03-06 17:08 ` jamborm at gcc dot gnu.org 2014-03-06 17:28 ` trippels at gcc dot gnu.org 2014-03-06 18:01 ` hjl.tools at gmail dot com 2014-03-06 19:06 ` trippels at gcc dot gnu.org 2014-03-29 17:09 ` trippels at gcc dot gnu.org 2014-03-31 3:24 ` hubicka at ucw dot cz 2014-04-02 16:25 ` mliska at suse dot cz 2014-04-08 8:13 ` trippels at gcc dot gnu.org 2014-04-09 12:36 ` trippels at gcc dot gnu.org 2014-05-23 13:49 ` steffen at hauihau dot de 2014-08-26 13:13 ` steffen at hauihau dot de 2014-11-13 16:25 ` marxin at gcc dot gnu.org 2015-01-19 23:59 ` hubicka at gcc dot gnu.org 2015-01-20 4:40 ` hubicka at gcc dot gnu.org 2015-01-20 19:50 ` hubicka at gcc dot gnu.org 2020-07-07 10:41 ` [Bug lto/45375] [meta-bug] Issues with building Mozilla (i.e. Firefox) " marxin at gcc dot gnu.org 2020-07-07 11:09 ` marxin at gcc dot gnu.org 2020-07-07 11:16 ` marxin at gcc dot gnu.org 2020-07-25 12:23 ` marxin at gcc dot gnu.org 2020-07-27 7:16 ` cvs-commit at gcc dot gnu.org 2020-07-27 10:33 ` cvs-commit at gcc dot gnu.org 2020-08-18 7:21 ` marxin at gcc dot gnu.org 2020-12-02 7:38 ` marxin at gcc dot gnu.org 2021-01-07 17:38 ` jamborm at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-45375-4-Y9AgoNqeKC@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).