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