Convert ipa-devirt to inchash
authorAndi Kleen <ak@linux.intel.com>
Fri, 1 Aug 2014 02:52:19 +0000 (02:52 +0000)
committerAndi Kleen <ak@gcc.gnu.org>
Fri, 1 Aug 2014 02:52:19 +0000 (02:52 +0000)
gcc/:

2014-07-31  Andi Kleen  <ak@linux.intel.com>

* ipa-devirt.c (polymorphic_call_target_hasher::hash):
Convert to inchash.

From-SVN: r213397

gcc/ChangeLog
gcc/ipa-devirt.c

index 641a78b4b6ef9d6d296ff08387ea06d40736f3ab..543acf96628f6691f4c123f670de2c71c832710c 100644 (file)
@@ -1,3 +1,8 @@
+2014-07-31  Andi Kleen  <ak@linux.intel.com>
+
+       * ipa-devirt.c (polymorphic_call_target_hasher::hash):
+       Convert to inchash.
+
 2014-07-31  Andi Kleen  <ak@linux.intel.com>
 
        * asan.c (asan_mem_ref_hasher::hash): Convert to inchash.
index 1c6d19dbc886c441d090b9954137a0926bc85f53..f79653a83238cc898921cae40ac96f0e427a333e 100644 (file)
@@ -1635,25 +1635,22 @@ struct polymorphic_call_target_hasher
 inline hashval_t
 polymorphic_call_target_hasher::hash (const value_type *odr_query)
 {
-  hashval_t hash;
+  inchash::hash hstate (odr_query->otr_token);
+
+  hstate.add_wide_int (odr_query->type->id);
+  hstate.merge_hash (TYPE_UID (odr_query->context.outer_type));
+  hstate.add_wide_int (odr_query->context.offset);
 
-  hash = iterative_hash_host_wide_int
-         (odr_query->otr_token,
-          odr_query->type->id);
-  hash = iterative_hash_hashval_t (TYPE_UID (odr_query->context.outer_type),
-                                  hash);
-  hash = iterative_hash_host_wide_int (odr_query->context.offset, hash);
   if (odr_query->context.speculative_outer_type)
     {
-      hash = iterative_hash_hashval_t
-              (TYPE_UID (odr_query->context.speculative_outer_type), hash);
-      hash = iterative_hash_host_wide_int (odr_query->context.speculative_offset,
-                                          hash);
+      hstate.merge_hash (TYPE_UID (odr_query->context.speculative_outer_type));
+      hstate.add_wide_int (odr_query->context.speculative_offset);
     }
-  return iterative_hash_hashval_t
-           (((int)odr_query->context.maybe_in_construction << 2)
-            | ((int)odr_query->context.speculative_maybe_derived_type << 1)
-            | (int)odr_query->context.maybe_derived_type, hash);
+  hstate.add_flag (odr_query->context.maybe_in_construction);
+  hstate.add_flag (odr_query->context.maybe_derived_type);
+  hstate.add_flag (odr_query->context.speculative_maybe_derived_type);
+  hstate.commit_flag ();
+  return hstate.end ();
 }
 
 /* Compare cache entries T1 and T2.  */