Commit 31d06664 by Jason Merrill Committed by Jason Merrill

* tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.

From-SVN: r162378
parent 557165ae
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)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment