Commit 0136dc74 by Jason Merrill Committed by Jason Merrill

re PR c++/48132 ([C++0x] Internal compiler error on array of std::complex with -std=c++0x)

	PR c++/48132
	* decl.c (check_array_designated_initializer): Allow integer index.
	(reshape_init_array_1): Set index on the elements.

From-SVN: r171068
parent f8f12278
2011-03-16 Jason Merrill <jason@redhat.com>
PR c++/48132
* decl.c (check_array_designated_initializer): Allow integer index.
(reshape_init_array_1): Set index on the elements.
2011-03-16 Jason Merrill <jason@redhat.com>
PR c++/48113
* typeck.c (convert_for_initialization): Use
perform_implicit_conversion_flags.
......
......@@ -4596,6 +4596,9 @@ check_array_designated_initializer (const constructor_elt *ce)
if (ce->index == error_mark_node)
error ("name used in a GNU-style designated "
"initializer for an array");
else if (TREE_CODE (ce->index) == INTEGER_CST)
/* An index added by reshape_init. */
return true;
else
{
gcc_assert (TREE_CODE (ce->index) == IDENTIFIER_NODE);
......@@ -4899,7 +4902,8 @@ reshape_init_array_1 (tree elt_type, tree max_index, reshape_iter *d)
elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false);
if (elt_init == error_mark_node)
return error_mark_node;
CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), NULL_TREE, elt_init);
CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init),
size_int (index), elt_init);
}
return new_init;
......
2011-03-16 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/constexpr-array3.C: New.
2011-03-16 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/sfinae6.C: New.
* gcc/testsuite/g++.dg/cpp0x/initlist38.C: Adjust expected error.
* gcc/testsuite/g++.dg/cpp0x/pr45908.C: Likewise.
......
// PR c++/48132
// { dg-options -std=c++0x }
struct C
{
constexpr C (int x) : c (x) {}
int c;
};
void
foo ()
{
C a[] = { C (0) };
}
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