Do not compare type attributes in gimple_canonical_types_compatible_p

Richard Biener rguenther@suse.de
Thu May 21 16:49:00 GMT 2015


On May 21, 2015 6:06:18 PM GMT+02:00, Jan Hubicka <hubicka@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




More information about the Gcc-patches mailing list