+2007-07-05 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/32639
+ * alias.c (get_alias_set): Tread METHOD_TYPE the same as
+ FUNCTION_TYPE.
+ * tree-ssa.c (useless_type_conversion_p): Check canonical
+ types early.
+
2007-07-05 Anatoly Sokolov <aesok@post.ru>
* config/avr/avr.md (zero_extendqihi2, zero_extendqisi2,
/* There are no objects of FUNCTION_TYPE, so there's no point in
using up an alias set for them. (There are, of course, pointers
and references to functions, but that's different.) */
- else if (TREE_CODE (t) == FUNCTION_TYPE)
+ else if (TREE_CODE (t) == FUNCTION_TYPE
+ || TREE_CODE (t) == METHOD_TYPE)
set = 0;
/* Unless the language specifies otherwise, let vector types alias
if (inner_type == outer_type)
return true;
+ /* If we know the canonical types, compare them. */
+ if (TYPE_CANONICAL (inner_type)
+ && TYPE_CANONICAL (inner_type) == TYPE_CANONICAL (outer_type))
+ return true;
+
/* Changes in machine mode are never useless conversions. */
if (TYPE_MODE (inner_type) != TYPE_MODE (outer_type))
return false;
if (TREE_CODE (inner_type) != TREE_CODE (outer_type))
return false;
- /* If we know the canonical types, compare them. */
- if (TYPE_CANONICAL (inner_type)
- && TYPE_CANONICAL (inner_type) == TYPE_CANONICAL (outer_type))
- return true;
-
/* ??? Add structural equivalence check. */
/* ??? This should eventually just return false. */