Commit fd7e5084 by Richard Biener Committed by Richard Biener

re PR other/58712 (issues found by --enable-checking=valgrind)

2013-10-14  Richard Biener  <rguenther@suse.de>

	PR middle-end/58712
	PR middle-end/55358
	* gimple.c (iterative_hash_canonical_type): Make sure to
	record the hash into the correct hashtable slot.

From-SVN: r203517
parent d19d091c
2013-10-14 Richard Biener <rguenther@suse.de>
PR middle-end/58712
PR middle-end/55358
* gimple.c (iterative_hash_canonical_type): Make sure to
record the hash into the correct hashtable slot.
2013-10-13 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/58662
......
......@@ -3112,8 +3112,7 @@ iterative_hash_canonical_type (tree type, hashval_t val)
struct tree_int_map *mp, m;
m.base.from = type;
if ((slot = htab_find_slot (canonical_type_hash_cache, &m, INSERT))
&& *slot)
if ((slot = htab_find_slot (canonical_type_hash_cache, &m, NO_INSERT)))
return iterative_hash_hashval_t (((struct tree_int_map *) *slot)->to, val);
/* Combine a few common features of types so that types are grouped into
......@@ -3217,6 +3216,10 @@ iterative_hash_canonical_type (tree type, hashval_t val)
mp = ggc_alloc_cleared_tree_int_map ();
mp->base.from = type;
mp->to = v;
/* As we recurse the hashtable may expand between looking up the
cached value (and not finding one) and here, so we have to
re-lookup the slot. */
slot = htab_find_slot (canonical_type_hash_cache, &m, INSERT);
*slot = (void *) mp;
return iterative_hash_hashval_t (v, val);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment