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


  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: link
Be 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).