On 12/2/19 7:31 PM, Marek Polacek wrote:
@@ -1967,8 +1978,23 @@ expand_default_init (tree binfo, tree true_exp, tree 
exp, tree init, int flags,
        tree ctor_name = (true_exp == exp
                        ? complete_ctor_identifier : base_ctor_identifier);
+ /* Given class A,
+
+          A a(1, 2);
+
+        can mean a call to a constructor A::A(int, int), if present.  If not,
+        but A is an aggregate, we will try aggregate initialization.  */
        rval = build_special_member_call (exp, ctor_name, &parms, binfo, flags,
                                        complain);
+      if (BRACE_ENCLOSED_INITIALIZER_P (rval))
+       {
+         gcc_assert (cxx_dialect >= cxx2a);
+         rval = digest_init (type, rval, tf_warning_or_error);
+         rval = build2 (INIT_EXPR, type, exp, rval);
+         /* So that we do finish_expr_stmt below.  Don't return here, we
+            need to release PARMS.  */
+         TREE_SIDE_EFFECTS (rval) = 1;
+       }

Can we still get a CONSTRUCTOR here after the change to build_new_method_call_1?

Jason

Reply via email to