tree.c (cxx_printable_name): Compare FUNCTION_DECL uids rather than pointers.
authorJakub Jelinek <jakub@redhat.com>
Tue, 25 Sep 2007 10:30:21 +0000 (12:30 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 25 Sep 2007 10:30:21 +0000 (12:30 +0200)
* tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
rather than pointers.

From-SVN: r128761

gcc/cp/ChangeLog
gcc/cp/tree.c

index 0effc4bc2a5c312402df12195a1bfc35aea590d0..991a669d4070d7c0565181c2c24d265c5f6fd89a 100644 (file)
@@ -1,10 +1,14 @@
+2007-09-25  Jakub Jelinek  <jakub@redhat.com>
+
+       * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
+       rather than pointers.
+
 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
 
        PR c++/14688
         * search.c (check_final_overrider): Fail if
        targetm.comp_type_attributes returns 0.
 
-
 2007-09-24  Jason Merrill  <jason@redhat.com>
 
        PR c++/33239
index 77aac702f208d0e6b3aca1194d6cb6069b7cbf5d..11181c2b4256cca977a23eb02d08102fd88bdbff 100644 (file)
@@ -1155,7 +1155,7 @@ build_overload (tree decl, tree chain)
 const char *
 cxx_printable_name (tree decl, int v)
 {
-  static tree decl_ring[PRINT_RING_SIZE];
+  static unsigned int uid_ring[PRINT_RING_SIZE];
   static char *print_ring[PRINT_RING_SIZE];
   static int ring_counter;
   int i;
@@ -1168,7 +1168,7 @@ cxx_printable_name (tree decl, int v)
 
   /* See if this print name is lying around.  */
   for (i = 0; i < PRINT_RING_SIZE; i++)
-    if (decl_ring[i] == decl)
+    if (uid_ring[i] == DECL_UID (decl))
       /* yes, so return it.  */
       return print_ring[i];
 
@@ -1177,18 +1177,18 @@ cxx_printable_name (tree decl, int v)
 
   if (current_function_decl != NULL_TREE)
     {
-      if (decl_ring[ring_counter] == current_function_decl)
+      if (uid_ring[ring_counter] == DECL_UID (current_function_decl))
        ring_counter += 1;
       if (ring_counter == PRINT_RING_SIZE)
        ring_counter = 0;
-      gcc_assert (decl_ring[ring_counter] != current_function_decl);
+      gcc_assert (uid_ring[ring_counter] != DECL_UID (current_function_decl));
     }
 
   if (print_ring[ring_counter])
     free (print_ring[ring_counter]);
 
   print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v));
-  decl_ring[ring_counter] = decl;
+  uid_ring[ring_counter] = DECL_UID (decl);
   return print_ring[ring_counter];
 }
 \f