From: Jason Merrill Date: Thu, 3 Mar 2016 22:43:14 +0000 (-0500) Subject: * call.c (build_aggr_conv): Use get_nsdmi. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=45c3e69bb74bf1342737233a21833181686c72e1;p=gcc.git * call.c (build_aggr_conv): Use get_nsdmi. From-SVN: r233947 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a7ae483c33d..6eae6fd9197 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 8d5582a5191..3ad3bd52d9d 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 00000000000..71830cdab03 --- /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 {}; }