OSDN Git Service

* pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Jan 2003 01:38:24 +0000 (01:38 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Jan 2003 01:38:24 +0000 (01:38 +0000)
(hash_local_specialization): New function.
(register_local_specialization): Revert 2003-01-05 change.
(instantiate_decl): Use hash_local_specialization when creating
the local_specializations table.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60971 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/pt.c

index b1b1a75..6e5e223 100644 (file)
@@ -1,5 +1,11 @@
 2003-01-06  Mark Mitchell  <mark@codesourcery.com>
 
+       * pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
+       (hash_local_specialization): New function.
+       (register_local_specialization): Revert 2003-01-05 change.
+       (instantiate_decl): Use hash_local_specialization when creating
+       the local_specializations table.
+       
        * decl2.c (mark_used): Do not synthesize thunks.
 
        * class.c (layout_class_type): Correct handling of unnamed
index 05e9826..f7a9114 100644 (file)
@@ -745,7 +745,9 @@ static tree
 retrieve_local_specialization (tmpl)
      tree tmpl;
 {
-  tree spec = (tree) htab_find (local_specializations, tmpl);
+  tree spec = 
+    (tree) htab_find_with_hash (local_specializations, tmpl,
+                               htab_hash_pointer (tmpl));
   return spec ? TREE_PURPOSE (spec) : NULL_TREE;
 }
 
@@ -922,6 +924,14 @@ eq_local_specializations (const void *p1, const void *p2)
   return TREE_VALUE ((tree) p1) == (tree) p2;
 }
 
+/* Hash P1, an entry in the local specializations table.  */
+
+static hashval_t
+hash_local_specialization (const void* p1)
+{
+  return htab_hash_pointer (TREE_VALUE ((tree) p1));
+}
+
 /* Like register_specialization, but for local declarations.  We are
    registering SPEC, an instantiation of TMPL.  */
 
@@ -932,7 +942,8 @@ register_local_specialization (spec, tmpl)
 {
   void **slot;
 
-  slot = htab_find_slot (local_specializations, tmpl, INSERT);
+  slot = htab_find_slot_with_hash (local_specializations, tmpl, 
+                                  htab_hash_pointer (tmpl), INSERT);
   *slot = build_tree_list (spec, tmpl);
 }
 
@@ -10308,7 +10319,7 @@ instantiate_decl (d, defer_ok)
 
       /* Set up the list of local specializations.  */
       local_specializations = htab_create (37, 
-                                          htab_hash_pointer,
+                                          hash_local_specialization,
                                           eq_local_specializations,
                                           NULL);