Commit f038ec69 by Nathan Froyd Committed by Nathan Froyd

* typeck2.c (build_x_arrow): Make types_memoized a VEC.

From-SVN: r160119
parent bb9a7f51
2010-06-01 Nathan Froyd <froydnj@codesourcery.com>
* typeck2.c (build_x_arrow): Make types_memoized a VEC.
2010-06-01 Arnaud Charlet <charlet@adacore.com> 2010-06-01 Arnaud Charlet <charlet@adacore.com>
Matthew Gingell <gingell@adacore.com> Matthew Gingell <gingell@adacore.com>
......
...@@ -1400,9 +1400,9 @@ tree ...@@ -1400,9 +1400,9 @@ tree
build_x_arrow (tree expr) build_x_arrow (tree expr)
{ {
tree orig_expr = expr; tree orig_expr = expr;
tree types_memoized = NULL_TREE;
tree type = TREE_TYPE (expr); tree type = TREE_TYPE (expr);
tree last_rval = NULL_TREE; tree last_rval = NULL_TREE;
VEC(tree,gc) *types_memoized = NULL;
if (type == error_mark_node) if (type == error_mark_node)
return error_mark_node; return error_mark_node;
...@@ -1421,19 +1421,20 @@ build_x_arrow (tree expr) ...@@ -1421,19 +1421,20 @@ build_x_arrow (tree expr)
/*overloaded_p=*/NULL, /*overloaded_p=*/NULL,
tf_warning_or_error))) tf_warning_or_error)))
{ {
tree t;
unsigned ix;
if (expr == error_mark_node) if (expr == error_mark_node)
return error_mark_node; return error_mark_node;
if (value_member (TREE_TYPE (expr), types_memoized)) for (ix = 0; VEC_iterate (tree, types_memoized, ix, t); ix++)
{ if (TREE_TYPE (expr) == t)
error ("circular pointer delegation detected"); {
return error_mark_node; error ("circular pointer delegation detected");
} return error_mark_node;
else }
{
types_memoized = tree_cons (NULL_TREE, TREE_TYPE (expr), VEC_safe_push (tree, gc, types_memoized, TREE_TYPE (expr));
types_memoized);
}
last_rval = expr; last_rval = expr;
} }
......
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