Commit 33598a1b by Bernd Schmidt Committed by Bernd Schmidt

re PR middle-end/27620 (g++.dg/init/array15.C uses 4MB stack space)

	PR middle-end/27620
	* expr.c (safe_from_p): Handle CONSTRUCTOR again.

From-SVN: r113850
parent aa0e52db
2005-05-17 Bernd Schmidt <bernd.schmidt@analog.com>
PR middle-end/27620
* expr.c (safe_from_p): Handle CONSTRUCTOR again.
2006-05-17 Jakub Jelinek <jakub@redhat.com>
PR middle-end/27415
......
......@@ -6075,6 +6075,19 @@ safe_from_p (rtx x, tree exp, int top_p)
return safe_from_p (x, exp, 0);
}
}
else if (TREE_CODE (exp) == CONSTRUCTOR)
{
constructor_elt *ce;
unsigned HOST_WIDE_INT idx;
for (idx = 0;
VEC_iterate (constructor_elt, CONSTRUCTOR_ELTS (exp), idx, ce);
idx++)
if ((ce->index != NULL_TREE && !safe_from_p (x, ce->index, 0))
|| !safe_from_p (x, ce->value, 0))
return 0;
return 1;
}
else if (TREE_CODE (exp) == ERROR_MARK)
return 1; /* An already-visited SAVE_EXPR? */
else
......
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