On May 21, 2015 6:02:27 PM GMT+02:00, Jan Hubicka <hubi...@ucw.cz> wrote: >Hi, >this patch drops TYPE_METHOD_BASETYPE from hash_canonical_type. It is >not >compared by gimple_canonical_types_compatible_p and thus it can only >corrupt the hashtable by having two entries that are equal but having >different >hash. > >Theoretically we may want later distinguish the method pointer by >basetypes, >but the THIS pointer has proper type anyway and this all makes sense >only >if we start handling pointers properly. Definitely we will need to do >that >in both functions, not only here. > >Bootstrapped/regtested x86_64-linux, OK?
OK Richard. >Honza > > * lto.c (hash_canonical_type): Do not hash TYPE_METHOD_BASETYPE. >Index: lto/lto.c >=================================================================== >--- lto/lto.c (revision 223490) >+++ lto/lto.c (working copy) >@@ -372,10 +376,6 @@ hash_canonical_type (tree type) > unsigned na; > tree p; > >- /* For method types also incorporate their parent class. */ >- if (TREE_CODE (type) == METHOD_TYPE) >- iterative_hash_canonical_type (TYPE_METHOD_BASETYPE (type), hstate); >- > iterative_hash_canonical_type (TREE_TYPE (type), hstate); > > for (p = TYPE_ARG_TYPES (type), na = 0; p; p = TREE_CHAIN (p))