Commit 5fb4d142 by Jason Merrill Committed by Jason Merrill

re PR c++/61994 (constexpr vector array ICE)

	PR c++/61994
	* init.c (build_vec_init): Leave atype an ARRAY_TYPE
	if we're just returning an INIT_EXPR.

From-SVN: r213688
parent d06a312a
2014-08-06 Jason Merrill <jason@redhat.com>
PR c++/61994
* init.c (build_vec_init): Leave atype an ARRAY_TYPE
if we're just returning an INIT_EXPR.
2014-08-06 Jason Merrill <jason@redhat.com>
Braden Obrzut <admin@maniacsvault.net>
* pt.c (check_explicit_specialization): Don't test
......
......@@ -3840,6 +3840,13 @@ build_vec_init (tree base, tree maxindex, tree init,
stmt_expr = finish_init_stmts (is_global, stmt_expr, compound_stmt);
current_stmt_tree ()->stmts_are_full_exprs_p = destroy_temps;
if (errors)
return error_mark_node;
if (const_init)
return build2 (INIT_EXPR, atype, obase, const_init);
/* Now make the result have the correct type. */
if (TREE_CODE (atype) == ARRAY_TYPE)
{
......@@ -3849,12 +3856,6 @@ build_vec_init (tree base, tree maxindex, tree init,
TREE_NO_WARNING (stmt_expr) = 1;
}
current_stmt_tree ()->stmts_are_full_exprs_p = destroy_temps;
if (const_init)
return build2 (INIT_EXPR, atype, obase, const_init);
if (errors)
return error_mark_node;
return stmt_expr;
}
......
// PR c++/61994
// { dg-do compile { target c++11 } }
struct A { int i,j; };
struct X {
A a = {1,1};
};
constexpr X table[1][1] = {{ {} }};
#define SA(X) static_assert(X,#X)
SA(table[0][0].a.i == 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