Commit 69e3fb7d by Paolo Carlini Committed by Paolo Carlini

re PR c++/54501 (infinite recursion on illegal code)

/cp
2012-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54501
	* decl.c (reshape_init_array_1): Avoid infinite loops.

/testsuite
2012-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54501
	* g++.dg/init/array30.C: New.
	* g++.dg/init/array31.C: Likewise.

From-SVN: r192592
parent abe6d88d
2012-10-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54501
* decl.c (reshape_init_array_1): Avoid infinite loops.
2012-10-15 Alexandre Oliva <aoliva@redhat.com>
Paolo Carlini <paolo.carlini@oracle.com>
......
......@@ -5040,6 +5040,7 @@ reshape_init_array_1 (tree elt_type, tree max_index, reshape_iter *d,
++index)
{
tree elt_init;
constructor_elt *old_cur = d->cur;
check_array_designated_initializer (d->cur, index);
elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false,
......@@ -5050,6 +5051,10 @@ reshape_init_array_1 (tree elt_type, tree max_index, reshape_iter *d,
size_int (index), elt_init);
if (!TREE_CONSTANT (elt_init))
TREE_CONSTANT (new_init) = false;
/* This can happen with an invalid initializer (c++/54501). */
if (d->cur == old_cur && !sized_array_p)
break;
}
return new_init;
......
2012-10-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54501
* g++.dg/init/array30.C: New.
* g++.dg/init/array31.C: Likewise.
2012-10-18 Tobias Burnus <burnus@net-b.de>
PR fortran/54884
......
// PR c++/54501
// { dg-options "" }
int main()
{
int a[][0] = {0}; // { dg-error "too many" }
}
// PR c++/54501
// { dg-options "" }
struct A
{
int i[0];
int j;
};
struct A a = { 1 };
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