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



--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-25 
14:57:58 UTC ---

With the hash function fixed



Index: libcpp/line-map.c

===================================================================

--- libcpp/line-map.c   (revision 191706)

+++ libcpp/line-map.c   (working copy)

@@ -58,7 +58,7 @@ location_adhoc_data_hash (const void *l)

 {

   const struct location_adhoc_data *lb =

       (const struct location_adhoc_data *) l;

-  return (hashval_t) lb->locus + (size_t) &lb->data;

+  return (hashval_t) lb->locus + (size_t) lb->data;

 }



 /* Compare function for location_adhoc_data hashtable.  */



compile-time looks way better.  Needs proper testing of course.



Breakpoint 1, get_combined_adhoc_loc (set=0x7ffff7ff9000, 

    locus=<optimized out>, data=<optimized out>)

    at /space/rguenther/tramp3d/trunk/libcpp/line-map.c:139

139                                location_adhoc_data_update, &offset);

(gdb) p *set->location_adhoc_data_map.htab

$11 = {hash_f = 0xef2a50 <location_adhoc_data_hash(void const*)>, 

  eq_f = 0xef2a60 <location_adhoc_data_eq(void const*, void const*)>, 

  del_f = 0x0, entries = 0x2243410, size = 262139, n_elements = 131073, 

  n_deleted = 0, searches = 278216, collisions = 365860, 

  alloc_f = 0xf1d320 <xcalloc>, free_f = 0x4e0570 <free@plt>, alloc_arg = 0x0, 

  alloc_with_arg_f = 0x0, free_with_arg_f = 0x0, size_prime_index = 15}



and



 integration             :   0.90 ( 2%) usr   0.15 ( 4%) sys   0.99 ( 2%) wall 

 86042 kB ( 8%) ggc

Reply via email to