> This looks good.  But let's call it debug_type_hash instead.  OK with
> that change.

Thanks.  It occured to me that we don't need to look up the type twice when we 
need to insert it so I have installed the attached patchlet as obvious after 
boostrapping/regtesting on x86-64/Linux.


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

-- 
Eric Botcazou
Index: cp-objcp-common.c
===================================================================
--- cp-objcp-common.c	(revision 253049)
+++ cp-objcp-common.c	(working copy)
@@ -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;
     }

Reply via email to