diff mbox

Do not compare type attributes in gimple_canonical_types_compatible_p

Message ID 20150521160618.GB22694@kam.mff.cuni.cz
State New
Headers show

Commit Message

Jan Hubicka May 21, 2015, 4:06 p.m. UTC
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?

Honza

	* tree.c (gimple_canonical_types_compatible_p) Do not compare
	type attributes.
	(verify_type): Drop METHOD_TYPE FIXME; update FUNCTION_TYPE FIXME.

Comments

Richard Biener May 21, 2015, 4:44 p.m. UTC | #1
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
diff mbox

Patch

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