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
