re PR bootstrap/81926 (go/parse.o differs between stage2 and stage3)

PR bootstrap/81926
	* cp-objcp-common.c (cp_get_debug_type): Do only one lookup.

From-SVN: r253110
This commit is contained in:
Eric Botcazou 2017-09-22 20:20:40 +00:00 committed by Eric Botcazou
parent c15f0c23da
commit 0350ea29c0
2 changed files with 10 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2017-09-22 Eric Botcazou <ebotcazou@adacore.com>
PR bootstrap/81926
* cp-objcp-common.c (cp_get_debug_type): Do only one lookup
2017-09-22 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/81929

View File

@ -162,13 +162,13 @@ cp_get_debug_type (const_tree type)
types on the fly for the debug info only, they would not be attached
to any GC root and always be swept, so we would make the contents of
the debug info depend on the collection points. */
struct tree_map in, *h;
struct tree_map in, *h, **slot;
in.base.from = CONST_CAST_TREE (type);
in.hash = htab_hash_pointer (type);
h = debug_type_hash->find_with_hash (&in, in.hash);
if (h)
return h->to;
slot = debug_type_hash->find_slot_with_hash (&in, in.hash, INSERT);
if (*slot)
return (*slot)->to;
tree t = build_offset_type (TYPE_PTRMEMFUNC_OBJECT_TYPE (type),
TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type)));
@ -177,7 +177,7 @@ cp_get_debug_type (const_tree type)
h->base.from = CONST_CAST_TREE (type);
h->hash = htab_hash_pointer (type);
h->to = t;
*debug_type_hash->find_slot_with_hash (h, h->hash, INSERT) = h;
*slot = h;
return t;
}