From: jason Date: Thu, 3 Mar 2016 22:43:14 +0000 (+0000) Subject: * call.c (build_aggr_conv): Use get_nsdmi. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f3d9faad4f66c5da2503b2034d9c5b05843ea12a;p=thirdparty%2Fgcc.git * call.c (build_aggr_conv): Use get_nsdmi. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233947 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a7ae483c33d5..6eae6fd91971 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2016-03-03 Jason Merrill + * call.c (build_aggr_conv): Use get_nsdmi. + PR c++/51406 * typeck.c (build_static_cast_1): Avoid folding back to lvalue. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 8d5582a5191b..3ad3bd52d9dc 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -897,6 +897,8 @@ build_aggr_conv (tree type, tree ctor, int flags, tsubst_flags_t complain) if (i < CONSTRUCTOR_NELTS (ctor)) val = CONSTRUCTOR_ELT (ctor, i)->value; + else if (DECL_INITIAL (field)) + val = get_nsdmi (field, /*ctor*/false); else if (TREE_CODE (ftype) == REFERENCE_TYPE) /* Value-initialization of reference is ill-formed. */ return NULL; diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C new file mode 100644 index 000000000000..71830cdab036 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C @@ -0,0 +1,13 @@ +// { dg-do compile { target c++14 } } + +struct A +{ + A(int); +}; + +struct B +{ + A a{42}; +}; + +B f() { return {}; }