@@ -1633,17 +1633,15 @@ struct polymorphic_call_target_hasher
inline hashval_t
polymorphic_call_target_hasher::hash (const value_type *odr_query)
{
- hashval_t hash;
-
- 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);
- return iterative_hash_hashval_t
- (((int)odr_query->context.maybe_in_construction << 1)
- | (int)odr_query->context.maybe_derived_type, hash);
+ inchash hstate (odr_query->otr_token);
+
+ hstate.add_wide_int (odr_query->type->id);
+ hstate.add_wide_int (TYPE_UID (odr_query->context.outer_type));
+ hstate.add_wide_int (odr_query->context.offset);
+ hstate.add_flag (odr_query->context.maybe_in_construction);
+ hstate.add_flag (odr_query->context.maybe_derived_type);
+ hstate.commit_flag ();
+ return hstate.end ();
}
/* Compare cache entries T1 and T2. */
From: Andi Kleen <ak@linux.intel.com> gcc/: 2014-07-25 Andi Kleen <ak@linux.intel.com> * ipa-devirt.c (polymorphic_call_target_hasher::hash): Convert to inchash. --- gcc/ipa-devirt.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-)