Commit 743af85b by Jason Merrill Committed by Jason Merrill

Core 1270

	Core 1270
	* call.c (build_aggr_conv): Call reshape_init.
	(convert_like_real): Likewise.
	* typeck2.c (process_init_constructor): Clear TREE_CONSTANT if
	not all constant.

From-SVN: r184876
parent dd94dde7
2012-03-03 Jason Merrill <jason@redhat.com>
Core 1270
* call.c (build_aggr_conv): Call reshape_init.
(convert_like_real): Likewise.
* typeck2.c (process_init_constructor): Clear TREE_CONSTANT if
not all constant.
* mangle.c (write_nested_name): Use decl_mangling_context.
(write_prefix, write_template_prefix): Likewise.
......
......@@ -886,6 +886,10 @@ build_aggr_conv (tree type, tree ctor, int flags)
tree field = next_initializable_field (TYPE_FIELDS (type));
tree empty_ctor = NULL_TREE;
ctor = reshape_init (type, ctor, tf_none);
if (ctor == error_mark_node)
return NULL;
for (; field; field = next_initializable_field (DECL_CHAIN (field)))
{
tree ftype = TREE_TYPE (field);
......@@ -5795,6 +5799,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
expr = build2 (COMPLEX_EXPR, totype, real, imag);
return fold_if_not_in_template (expr);
}
expr = reshape_init (totype, expr, complain);
return get_target_expr (digest_init (totype, expr, complain));
default:
......
......@@ -1392,7 +1392,10 @@ process_init_constructor (tree type, tree init, tsubst_flags_t complain)
TREE_TYPE (init) = type;
if (TREE_CODE (type) == ARRAY_TYPE && TYPE_DOMAIN (type) == NULL_TREE)
cp_complete_array_type (&TREE_TYPE (init), init, /*do_default=*/0);
if (!(flags & PICFLAG_NOT_ALL_CONSTANT))
if (flags & PICFLAG_NOT_ALL_CONSTANT)
/* Make sure TREE_CONSTANT isn't set from build_constructor. */
TREE_CONSTANT (init) = false;
else
{
TREE_CONSTANT (init) = 1;
if (!(flags & PICFLAG_NOT_ALL_SIMPLE))
......
2012-03-03 Jason Merrill <jason@redhat.com>
Core 1270
* g++.dg/cpp0x/initlist65.C: New.
PR c++/36797
* g++.dg/ext/is_empty2.C: New.
......
// Core 1270
// { dg-options -std=c++11 }
struct A
{
int i[2];
};
A f() { return {1,2}; }
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