From: Eric Botcazou Date: Fri, 22 Sep 2017 20:20:25 +0000 (+0000) Subject: re PR bootstrap/81926 (go/parse.o differs between stage2 and stage3) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d68d0df68c2554379ff97c4b8eddd214938f3594;p=gcc.git 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: r253109 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6288dcaf727..58e6f25ff20 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-09-22 Eric Botcazou + + PR bootstrap/81926 + * cp-objcp-common.c (cp_get_debug_type): Do only one lookup. + 2017-09-22 Jakub Jelinek PR sanitizer/81929 diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c index 183e7f7bf57..267fcca7319 100644 --- a/gcc/cp/cp-objcp-common.c +++ b/gcc/cp/cp-objcp-common.c @@ -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; }