This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 4/7] Convert ipa-devirt to inchash
- From: Andi Kleen <andi at firstfloor dot org>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Andi Kleen <ak at linux dot intel dot com>
- Date: Wed, 30 Jul 2014 07:23:42 -0700
- Subject: [PATCH 4/7] Convert ipa-devirt to inchash
- Authentication-results: sourceware.org; auth=none
- References: <1406730225-25896-1-git-send-email-andi at firstfloor dot org> <1406730225-25896-2-git-send-email-andi at firstfloor dot org> <1406730225-25896-3-git-send-email-andi at firstfloor dot org> <1406730225-25896-4-git-send-email-andi at firstfloor dot org>
From: Andi Kleen <ak@linux.intel.com>
gcc/:
2014-07-30 Andi Kleen <ak@linux.intel.com>
* ipa-devirt.c (polymorphic_call_target_hasher::hash):
Convert to inchash.
---
gcc/ipa-devirt.c | 27 ++++++++++++---------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 4b5b2a6..fc2c31f 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -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. */
--
2.0.1