This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug lto/45375] [meta-bug] Issues with building Mozilla with LTO


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375

--- Comment #92 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-05-19 22:28:18 UTC ---
decl in is now at 96 seconds.
oprofile for streaming in is:
27469     9.3054  lto1                     htab_find_slot_with_hash
23175     7.8508  libc-2.11.1.so           _int_malloc
18044     6.1126  lto1                     lto_input_tree
14823     5.0215  libc-2.11.1.so           memset
14108     4.7792  lto1                     gt_ggc_mx_lang_tree_node
13511     4.5770  lto1                     inflate_fast
11805     3.9991  lto1                     gimple_type_eq
11247     3.8100  lto1                     lto_input_uleb128
11227     3.8033  lto1                     ggc_set_mark
10903     3.6935  lto1                     pointer_map_insert

So obviously still some place for improvements for merging. I think malloc
calls come mostly from SCC detection code (we create a lot of temporary
obstacks and pointer maps). lto_input_tree can probably handle quite a lot of
optimizations reducing amount of data we stream. Plus we don't really need to
stream ulebs for everything.

For whole WPA we now need about 5 minutes, the oprofile is:
152067   14.9073  lto1                     decl_assembler_name_equal
48258     4.7308  lto1                     htab_find_slot_with_hash
46730     4.5810  lto1                     edge_badness
37954     3.7207  libc-2.11.1.so           _int_malloc
36692     3.5970  lto1                     pointer_map_insert
30387     2.9789  lto1                     do_estimate_growth
28496     2.7935  lto1                     lto_input_tree
20992     2.0579  lto1                     inflate_fast
20765     2.0356  libc-2.11.1.so           memset
20264     1.9865  lto1                     varpool_node_for_asm
19784     1.9394  lto1                     lto_output_tree
19121     1.8745  lto1                     htab_hash_string
19053     1.8678  lto1                     lto_input_uleb128

good news is that decl_assembler_name_equal is stupid handling of varpool
aliases in varpool_node_for_asm that will go away with my alias rewrite.
edge_badness is easy to track down, too, it is just inliner updating paranoia.

Honza


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]