* tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.
From-SVN: r162378
This commit is contained in:
parent
557165ae94
commit
31d06664e6
@ -1,5 +1,7 @@
|
||||
2010-07-21 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.
|
||||
|
||||
* parser.c (cp_parser_init_declarator): Pass LOOKUP_NORMAL
|
||||
to cp_finish_decl.
|
||||
|
||||
|
@ -2023,11 +2023,21 @@ cp_tree_equal (tree t1, tree t2)
|
||||
/* We need to do this when determining whether or not two
|
||||
non-type pointer to member function template arguments
|
||||
are the same. */
|
||||
if (!(same_type_p (TREE_TYPE (t1), TREE_TYPE (t2))
|
||||
/* The first operand is RTL. */
|
||||
&& TREE_OPERAND (t1, 0) == TREE_OPERAND (t2, 0)))
|
||||
if (!same_type_p (TREE_TYPE (t1), TREE_TYPE (t2))
|
||||
|| CONSTRUCTOR_NELTS (t1) != CONSTRUCTOR_NELTS (t2))
|
||||
return false;
|
||||
return cp_tree_equal (TREE_OPERAND (t1, 1), TREE_OPERAND (t2, 1));
|
||||
{
|
||||
tree field, value;
|
||||
unsigned int i;
|
||||
FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (t1), i, field, value)
|
||||
{
|
||||
constructor_elt *elt2 = CONSTRUCTOR_ELT (t2, i);
|
||||
if (!cp_tree_equal (field, elt2->index)
|
||||
|| !cp_tree_equal (value, elt2->value))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
case TREE_LIST:
|
||||
if (!cp_tree_equal (TREE_PURPOSE (t1), TREE_PURPOSE (t2)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user