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

--- Comment #17 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-12-12 
23:52:52 UTC ---
Current mainline crashes:
Program received signal SIGSEGV, Segmentation fault.
lto_cgraph_replace_node (slot=<value optimized out>, data=<value optimized
out>) at ../../gcc/lto-symtab.c:227                                             
227       if (prevailing_node->same_body_alias)
(gdb) bt                                                                        
#0  lto_cgraph_replace_node (slot=<value optimized out>, data=<value optimized
out>) at ../../gcc/lto-symtab.c:227
#1  lto_symtab_merge_cgraph_nodes_1 (slot=<value optimized out>, data=<value
optimized out>) at ../../gcc/lto-symtab.c:798
#2  0x0000000000b0ae08 in htab_traverse_noresize (htab=<value optimized out>,
callback=0x60eca0 <lto_symtab_merge_cgraph_nodes_1>, info=0x0) at
../../libiberty/hashtab.c:784
#3  0x00000000004aabf9 in read_cgraph_and_symbols () at
../../gcc/lto/lto.c:2213
#4  lto_main () at ../../gcc/lto/lto.c:2438
#5  0x00000000006cb658 in compile_file (argc=2627, argv=0x11a7460) at
../../gcc/toplev.c:579
#6  do_compile (argc=2627, argv=0x11a7460) at ../../gcc/toplev.c:1874
#7  toplev_main (argc=2627, argv=0x11a7460) at ../../gcc/toplev.c:1937
#8  0x00007ffff6597bc6 in __libc_start_main () from /lib64/libc.so.6
#9  0x0000000000493411 in _start () at ../sysdeps/x86_64/elf/start.S:113

I guess it is fallout of the merging patch. It is weird since previaling_node
is NULL.
_moz_cairo_surface_destroy/567259(-1) @0x7ffebef47c60 (asm:
_moz_cairo_surface_destroy) visibilit: 2 binds_local
  called by: CreateSimilarSurface/567227 (0.21 per call)
CreateSimilarSurface/567227 (0.14 per call) Init/567225 (0.39 per call)
_ZN11gfxASurface7ReleaseEv.part.2/567209 (1.00 per call) 
  calls: 
  References: 
  Refering this function: 
$5 = void

I also generated profile.
samples  %        image name               app name                 symbol name
228038   25.3225  lto1                     lto1                    
htab_find_slot_with_hash                                                        
82588     9.1710  lto1                     lto1                    
iterative_hash_hashval_t
58000     6.4406  lto1                     lto1                    
type_pair_eq                                                                    
32557     3.6153  lto1                     lto1                    
gimple_lookup_type_leader
31622     3.5115  lto1                     lto1                     gtc_visit   
29149     3.2369  lto1                     lto1                     htab_expand
27463     3.0496  lto1                     lto1                    
gimple_type_hash_1                                                              
24348     2.7037  lto1                     lto1                    
gimple_types_compatible_p
24217     2.6892  lto1                     lto1                    
inflate_fast                                                                    
21984     2.4412  lto1                     lto1                    
gimple_types_compatible_p_1
21796     2.4203  libc-2.11.1.so           libc-2.11.1.so           memset      
21700     2.4097  libc-2.11.1.so           libc-2.11.1.so           _int_malloc
17894     1.9870  lto1                     lto1                    
lookup_type_pair.isra.120.constprop.129                                         
16087     1.7864  lto1                     lto1                    
ggc_set_mark
15719     1.7455  lto1                     lto1                    
gt_ggc_mx_lang_tree_node        

Our abuse of hashing is making us slow.  It is not only type merging but all
the hashing during streaming in.

Reply via email to