This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] canonical type hashing
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Nathan Sidwell <nathan at acm dot org>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 3 May 2017 13:32:34 +0200
- Subject: Re: [PATCH] canonical type hashing
- Authentication-results: sourceware.org; auth=none
- References: <8086ef34-79d4-1fff-8f89-bd4b2444473b@acm.org>
On Tue, May 2, 2017 at 3:50 PM, Nathan Sidwell <nathan@acm.org> wrote:
> On the modules branch, I need rematerialize canonical types and the like
> from a read-in serialized tree.
>
> I discovered the canonical-type hash table is fed a bespoke hash value by
> each type creator. There was no generic type hasher :( The rationale
> appears to allow each type constuctor to just specialize its needs.
> Excitingly, a generic type hasher is hiding inside
> build_type_attribute_qual_variant. So I broke it out of there and
> generalized it a bit more.
>
> The type hashers had diverged from the attribute-variant hasher. This is
> not an error, because the attribute variant version was creating variants
> with non-null attributes, so guaranteed different But it was confusing.
>
> This generic hasher is slightly different to the bespoke hashers in a few
> places. One place of note was the vector type hasher, which mixed {elt-type,
> num-elts, vector-mode}, but vector-mode is entirely determined by the first
> two object, so mixing it in doesn't add any entropy. I dropped the mode.
>
> I still kept generating the hashvalue separate to the type_hash_canon call
> itself. Perhaps a future patch could change that, but I didn't want to much
> churn in this patch.
>
> I've included Jakub's recent TYPE_TYPELESS_STORAGE changes. (And notice that
> the attribute-type hasher wasn't dealing with it.)
>
> booted and tested on x86_64-linux-gnu, ok?
Looks ok to me. The new function name 'type_hash_default' is a little
odd, maybe
name it type_hash_canon_hash instead?
Thanks,
Richard.
> nathan
> --
> Nathan Sidwell