On May 21, 2015 6:06:18 PM GMT+02:00, Jan Hubicka <hubi...@ucw.cz> wrote: >Hi, >this patch removes call to comp_type_attributes (wich happens for >METHOD_TYPE and FUNCTION_TYPE only). This does not make sense, because >type attributes may change in variants and pointers should be >considered >compatible. > >We did not get any trouble from this only because we do not really use >canonical types of functions for anything. > >Bootstrapped/regtested x86_64-linux, OK?
OK. Richard. >Honza > > * tree.c (gimple_canonical_types_compatible_p) Do not compare > type attributes. > (verify_type): Drop METHOD_TYPE FIXME; update FUNCTION_TYPE FIXME. >Index: tree.c >=================================================================== >--- tree.c (revision 223490) >+++ tree.c (working copy) >@@ -12837,9 +12837,6 @@ gimple_canonical_types_compatible_p (con > trust_type_canonical)) > return false; > >- if (!comp_type_attributes (t1, t2)) >- return false; >- > if (TYPE_ARG_TYPES (t1) == TYPE_ARG_TYPES (t2)) > return true; > else >@@ -12939,10 +12936,9 @@ verify_type (const_tree t) >/* Method and function types can not be used to address memory and thus >TYPE_CANONICAL really matters only for determining useless conversions. > >- FIXME: C++ FE does not agree with >gimple_canonical_types_compatible_p >- here. gimple_canonical_types_compatible_p calls >comp_type_attributes >- while for C++ FE the attributes does not make difference. */ >- else if (TREE_CODE (t) == FUNCTION_TYPE || TREE_CODE (t) == >METHOD_TYPE) >+ FIXME: C++ FE produce declarations of builtin functions that are >not >+ compatible with main variants. */ >+ else if (TREE_CODE (t) == FUNCTION_TYPE) > ; > else if (t != ct > /* FIXME: gimple_canonical_types_compatible_p can not compare types