On 01/24/2017 09:13 AM, Nathan Sidwell wrote:
On 01/23/2017 05:01 PM, Jason Merrill wrote:

I suppose adding a tsubst flag isn't too horrible.  But then we also
need to audit other uses of build_value_init to decide whether they
should build a cleanup or not.

@@ -8055,7 +8055,8 @@ build_over_call (struct z_candidate *can
       else if (default_ctor_p (fn))
        {
          if (is_dummy_object (argarray[0]))
-           return force_target_expr (DECL_CONTEXT (fn), void_node, complain);
+           return force_target_expr (DECL_CONTEXT (fn), void_node,
+                                     complain | tf_no_cleanup);

This is the wrong place for this; we don't know at this point whether we're in a new-expression or actually creating a temporary. I think we want to add this flag in the call to build_value_init from build_new_1. And look at other calls to build_value_init to see if they want it as well.

Jason

Reply via email to