aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2011-01-01 11:05:41 +0000
committerKai Tietz <ktietz@gcc.gnu.org>2011-01-01 12:05:41 +0100
commit220e83ca20ee9254033fd5a6adec8a18d5ef6eb9 (patch)
tree965dc756aaa48aec86a2a583feae2d461252558b /gcc/tree.c
parent49e38883586f5bcca7dc763550b541c4c83f135e (diff)
downloadgcc-220e83ca20ee9254033fd5a6adec8a18d5ef6eb9.zip
gcc-220e83ca20ee9254033fd5a6adec8a18d5ef6eb9.tar.gz
gcc-220e83ca20ee9254033fd5a6adec8a18d5ef6eb9.tar.bz2
ChangeLog gcc/
2011-01-01 Kai Tietz <kai.tietz@onevision.com> PR target/38662 * tree.c (type_hash_eq): Call language hook for METHOD_TYPEs, too. ChangeLog gcc/cp 2011-01-01 Kai Tietz <kai.tietz@onevision.com> PR target/38662 * tree.c (cxx_type_hash_eq): Allow METHOD_TYPE, too. ChangeLog gcc/testsuite 2011-01-01 Kai Tietz <kai.tietz@onevision.com> PR target/38662 * g++.dg/eh/pr38662.C: New testcase. From-SVN: r168389
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index cc95d70..be2cf98 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -6007,15 +6007,16 @@ type_hash_eq (const void *va, const void *vb)
return TYPE_OFFSET_BASETYPE (a->type) == TYPE_OFFSET_BASETYPE (b->type);
case METHOD_TYPE:
- return (TYPE_METHOD_BASETYPE (a->type) == TYPE_METHOD_BASETYPE (b->type)
- && (TYPE_ARG_TYPES (a->type) == TYPE_ARG_TYPES (b->type)
- || (TYPE_ARG_TYPES (a->type)
- && TREE_CODE (TYPE_ARG_TYPES (a->type)) == TREE_LIST
- && TYPE_ARG_TYPES (b->type)
- && TREE_CODE (TYPE_ARG_TYPES (b->type)) == TREE_LIST
- && type_list_equal (TYPE_ARG_TYPES (a->type),
- TYPE_ARG_TYPES (b->type)))));
-
+ if (TYPE_METHOD_BASETYPE (a->type) == TYPE_METHOD_BASETYPE (b->type)
+ && (TYPE_ARG_TYPES (a->type) == TYPE_ARG_TYPES (b->type)
+ || (TYPE_ARG_TYPES (a->type)
+ && TREE_CODE (TYPE_ARG_TYPES (a->type)) == TREE_LIST
+ && TYPE_ARG_TYPES (b->type)
+ && TREE_CODE (TYPE_ARG_TYPES (b->type)) == TREE_LIST
+ && type_list_equal (TYPE_ARG_TYPES (a->type),
+ TYPE_ARG_TYPES (b->type)))))
+ break;
+ return 0;
case ARRAY_TYPE:
return TYPE_DOMAIN (a->type) == TYPE_DOMAIN (b->type);