mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 22:51:06 +08:00
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
This commit is contained in:
parent
aa0e52dbd5
commit
33598a1b8e
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
13
gcc/expr.c
13
gcc/expr.c
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user