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

--- Comment #89 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-05-02 
10:13:00 UTC ---
This is callgrind profile for our hashtables that are consuming most of time at
WPA stage.  It is from javascript library, but probably close enough for
libxul:

    9,413,074  < ipa.c:cgraph_node_set_add (47698x) 
  237,777,114  < lto-streamer-in.c:lto_input_location (253470x) 
      162,391  < cgraph.c:cgraph_same_body_alias_1 (1125x) 
    3,481,459  < lto/lto.c:lto_create_files_from_ids (18272x) 
1,262,433,061  < lto-streamer.c:lto_streamer_cache_insert_1 (9456405x) 
    1,721,939  < cgraph.c:cgraph_remove_node (13507x) 
   32,443,118  < cgraph.c:cgraph_get_node (254257x) 
   15,700,040  < lto/lto.c:remember_with_vars (88495x) 
  100,462,329  < lto-streamer.c:lto_streamer_cache_lookup (959530x) 
   59,948,506  < lto/lto-object.c:lto_obj_add_section (38584x) 
  551,876,527  < gimple.c:gimple_register_type'2 (9863x) 
   15,332,148  < lto-symtab.c:lto_symtab_get (148180x) 
  123,454,996  < ipa.c:varpool_node_set_find (1090522x) 
  497,594,354  < gimple.c:gimple_register_canonical_type (174920x) 
    7,723,287  < lto-section-out.c:lto_output_decl_index (48869x) 
    1,363,423  < lto-section-in.c:lto_get_function_in_decl_state (13102x) 
   60,607,732  < ipa.c:cgraph_node_set_find (526286x) 
    3,220,597  < varpool.c:varpool_node (19821x) 
    3,316,861  < lto-symtab.c:lto_symtab_register_decl (23462x) 
  523,758,152  < lto-streamer-out.c:lto_output_string_with_length (793000x) 
   30,909,893  < lto/lto.c:create_subid_section_table (19190x) 
    4,593,607  < cgraph.c:cgraph_create_node (22343x) 
      223,259  < cgraph.c:cgraph_clone_node (1353x) 
   20,940,173  < lto-section-in.c:lto_record_renamed_decl (14960x) 
2,983,016,896  < gimple.c:gimple_register_type (149596x) 
    3,876,333  < cgraph.c:cgraph_get_node_or_alias (27793x) 
      123,200  < varpool.c:varpool_remove_node (973x) 
   46,083,990  < tree.c:build_int_cst_wide (247788x) 
    4,703,171  < ipa.c:cgraph_node_set_remove (40839x) 
  261,240,516  * libiberty/hashtab.c:htab_find_slo
So it seems that in addition to type merging we have quite few other problems. 
varpool_node_set_find seems just stupid, for example.

Reply via email to