Commit 455c08cb by Richard Henderson Committed by Richard Henderson

re PR middle-end/21894 (Invalid operand to binary operator with nested function)

        PR 21894
        * tree-nested.c (convert_local_reference): Save and restore val_only
        around component_ref and friends.  Clear walk_subtrees by default.

From-SVN: r102832
parent febfc59a
2005-08-06 Richard Henderson <rth@redhat.com>
PR 21894
* tree-nested.c (convert_local_reference): Save and restore val_only
around component_ref and friends. Clear walk_subtrees by default.
2005-08-06 Peter O'Gorman <peter@pogma.com>
PR 21366
......
/* PR 21105 */
void
CheckFile ()
{
char tagname[10];
char *a = tagname;
int validate ()
{
return (a == tagname + 4);
}
if (a == tagname)
validate ();
}
......@@ -950,7 +950,9 @@ convert_local_reference (tree *tp, int *walk_subtrees, void *data)
struct walk_stmt_info *wi = data;
struct nesting_info *info = wi->info;
tree t = *tp, field, x;
bool save_val_only;
*walk_subtrees = 0;
switch (TREE_CODE (t))
{
case VAR_DECL:
......@@ -989,9 +991,7 @@ convert_local_reference (tree *tp, int *walk_subtrees, void *data)
break;
case ADDR_EXPR:
{
bool save_val_only = wi->val_only;
save_val_only = wi->val_only;
wi->val_only = false;
wi->is_lhs = false;
wi->changed = false;
......@@ -1016,7 +1016,6 @@ convert_local_reference (tree *tp, int *walk_subtrees, void *data)
if (save_val_only)
*tp = tsi_gimplify_val (wi->info, t, &wi->tsi);
}
}
break;
case REALPART_EXPR:
......@@ -1028,6 +1027,7 @@ convert_local_reference (tree *tp, int *walk_subtrees, void *data)
/* Go down this entire nest and just look at the final prefix and
anything that describes the references. Otherwise, we lose track
of whether a NOP_EXPR or VIEW_CONVERT_EXPR needs a simple value. */
save_val_only = wi->val_only;
wi->val_only = true;
wi->is_lhs = false;
for (; handled_component_p (t); tp = &TREE_OPERAND (t, 0), t = *tp)
......@@ -1055,6 +1055,7 @@ convert_local_reference (tree *tp, int *walk_subtrees, void *data)
}
wi->val_only = false;
walk_tree (tp, convert_local_reference, wi, NULL);
wi->val_only = save_val_only;
break;
default:
......
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