OSDN Git Service

* expr.c (type_assertion_hash): Hash type uids rather than
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Nov 2007 06:27:47 +0000 (06:27 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Nov 2007 06:27:47 +0000 (06:27 +0000)
tree pointers.

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

gcc/java/ChangeLog
gcc/java/expr.c

index 852028a..6cac0b8 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
+
+       * expr.c (type_assertion_hash): Hash type uids rather than
+       tree pointers.
+
 2007-11-17  David Daney  <ddaney@avtrex.com>
            Andrew Haley  <aph@redhat.com>
 
index 1eceaad..8311fbc 100644 (file)
@@ -433,8 +433,27 @@ type_assertion_hash (const void *p)
   const type_assertion *k_p = p;
   hashval_t hash = iterative_hash (&k_p->assertion_code, sizeof
                                   k_p->assertion_code, 0);
-  hash = iterative_hash (&k_p->op1, sizeof k_p->op1, hash);
-  return iterative_hash (&k_p->op2, sizeof k_p->op2, hash);
+
+  switch (k_p->assertion_code)
+    {
+    case JV_ASSERT_TYPES_COMPATIBLE:
+      hash = iterative_hash (&TYPE_UID (k_p->op2), sizeof TYPE_UID (k_p->op2),
+                            hash);
+      /* Fall through.  */
+
+    case JV_ASSERT_IS_INSTANTIABLE:
+      hash = iterative_hash (&TYPE_UID (k_p->op1), sizeof TYPE_UID (k_p->op1),
+                            hash);
+      /* Fall through.  */
+
+    case JV_ASSERT_END_OF_TABLE:
+      break;
+
+    default:
+      gcc_unreachable ();
+    }
+
+  return hash;
 }
 
 /* Add an entry to the type assertion table for the given class.