A patch that's in my local tree for quite some time. This removes redundant tests.
LTO bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2012-07-13 Richard Guenther <rguent...@suse.de> * gimple.c (gimple_types_compatible_p_1): Remove redundant type attribute comparisons. (gimple_canonical_types_compatible_p): Likewise. Index: gcc/gimple.c =================================================================== --- gcc/gimple.c (revision 189311) +++ gcc/gimple.c (working copy) @@ -3422,10 +3422,6 @@ gimple_types_compatible_p_1 (tree t1, tr goto different_types; } - /* If their attributes are not the same they can't be the same type. */ - if (!attribute_list_equal (TYPE_ATTRIBUTES (t1), TYPE_ATTRIBUTES (t2))) - goto different_types; - /* Do type-specific comparisons. */ switch (TREE_CODE (t1)) { @@ -4449,10 +4445,6 @@ gimple_canonical_types_compatible_p (tre return true; } - /* If their attributes are not the same they can't be the same type. */ - if (!attribute_list_equal (TYPE_ATTRIBUTES (t1), TYPE_ATTRIBUTES (t2))) - return false; - /* Do type-specific comparisons. */ switch (TREE_CODE (t1)) { @@ -4499,13 +4491,6 @@ gimple_canonical_types_compatible_p (tre } case METHOD_TYPE: - /* Method types should belong to the same class. */ - if (!gimple_canonical_types_compatible_p - (TYPE_METHOD_BASETYPE (t1), TYPE_METHOD_BASETYPE (t2))) - return false; - - /* Fallthru */ - case FUNCTION_TYPE: /* Function types are the same if the return type and arguments types are the same. */