diff options
Diffstat (limited to 'gcc/cp/call.c')
-rw-r--r-- | gcc/cp/call.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 1326902..8f33ab5 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -7717,8 +7717,11 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) } /* N3276 magic doesn't apply to nested calls. */ - int decltype_flag = (complain & tf_decltype); + tsubst_flags_t decltype_flag = (complain & tf_decltype); complain &= ~tf_decltype; + /* No-Cleanup doesn't apply to nested calls either. */ + tsubst_flags_t no_cleanup_complain = complain; + complain &= ~tf_no_cleanup; /* Find maximum size of vector to hold converted arguments. */ parmlen = list_length (parm); @@ -7916,7 +7919,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) if (flags & LOOKUP_NO_CONVERSION) conv->user_conv_p = true; - tsubst_flags_t arg_complain = complain & (~tf_no_cleanup); + tsubst_flags_t arg_complain = complain; if (!conversion_warning) arg_complain &= ~tf_warning; @@ -8164,7 +8167,8 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) 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, + no_cleanup_complain); else return cp_build_indirect_ref (argarray[0], RO_NULL, complain); } @@ -9062,7 +9066,6 @@ build_new_method_call_1 (tree instance, tree fns, vec<tree, va_gc> **args, static member function. */ instance = mark_type_use (instance); - /* Figure out whether to skip the first argument for the error message we will display to users if an error occurs. We don't want to display any compiler-generated arguments. The "this" |