* call.c (build_aggr_conv): Use get_nsdmi.
authorJason Merrill <jason@redhat.com>
Thu, 3 Mar 2016 22:43:14 +0000 (17:43 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 3 Mar 2016 22:43:14 +0000 (17:43 -0500)
From-SVN: r233947

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C [new file with mode: 0644]

index a7ae483c33d5261bc1d2b5fbf4dc445fee9854c1..6eae6fd919714eb07f52e3e52d1fc44ab4a5e9de 100644 (file)
@@ -1,5 +1,7 @@
 2016-03-03  Jason Merrill  <jason@redhat.com>
 
+       * call.c (build_aggr_conv): Use get_nsdmi.
+
        PR c++/51406
        * typeck.c (build_static_cast_1): Avoid folding back to lvalue.
 
index 8d5582a5191b0ce88b33a51379509f04d8f978a5..3ad3bd52d9dc91345a0b6c19976bbbd0e1c7662f 100644 (file)
@@ -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 (file)
index 0000000..71830cd
--- /dev/null
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++14 } }
+
+struct A
+{
+  A(int);
+};
+
+struct B
+{
+  A a{42};
+};
+
+B f() { return {}; }