This flag is redundant with the explicit_targs field in the overload candidate information.
Tested x86_64-pc-linux-gnu, applying to trunk. gcc/cp/ChangeLog 2020-05-11 Jason Merrill <ja...@redhat.com> * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Remove. * call.c (build_new_function_call): Don't set it. (build_new_method_call_1): Likewise. (build_over_call): Check cand->explicit_targs instead. --- gcc/cp/cp-tree.h | 4 +--- gcc/cp/call.c | 14 ++------------ 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index c4b81428e14..f7c11bcf838 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -5603,10 +5603,8 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, TYPENAME_FLAG }; /* Used in calls to store_init_value to suppress its usual call to digest_init. */ #define LOOKUP_ALREADY_DIGESTED (LOOKUP_DEFAULTED << 1) -/* An instantiation with explicit template arguments. */ -#define LOOKUP_EXPLICIT_TMPL_ARGS (LOOKUP_ALREADY_DIGESTED << 1) /* Like LOOKUP_NO_TEMP_BIND, but also prevent binding to xvalues. */ -#define LOOKUP_NO_RVAL_BIND (LOOKUP_EXPLICIT_TMPL_ARGS << 1) +#define LOOKUP_NO_RVAL_BIND (LOOKUP_ALREADY_DIGESTED << 1) /* Used by case_conversion to disregard non-integral conversions. */ #define LOOKUP_NO_NON_INTEGRAL (LOOKUP_NO_RVAL_BIND << 1) /* Used for delegating constructors in order to diagnose self-delegation. */ diff --git a/gcc/cp/call.c b/gcc/cp/call.c index dbce3866fd8..aca12c74c25 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4600,15 +4600,7 @@ build_new_function_call (tree fn, vec<tree, va_gc> **args, } else { - int flags = LOOKUP_NORMAL; - /* If fn is template_id_expr, the call has explicit template arguments - (e.g. func<int>(5)), communicate this info to build_over_call - through flags so that later we can use it to decide whether to warn - about peculiar null pointer conversion. */ - if (TREE_CODE (fn) == TEMPLATE_ID_EXPR) - flags |= LOOKUP_EXPLICIT_TMPL_ARGS; - - result = build_over_call (cand, flags, complain); + result = build_over_call (cand, LOOKUP_NORMAL, complain); } if (flag_coroutines @@ -8773,7 +8765,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) if (null_node_p (arg) && DECL_TEMPLATE_INFO (fn) && cand->template_decl - && !(flags & LOOKUP_EXPLICIT_TMPL_ARGS)) + && !cand->explicit_targs) conversion_warning = false; /* Set user_conv_p on the argument conversions, so rvalue/base handling @@ -10345,8 +10337,6 @@ build_new_method_call_1 (tree instance, tree fns, vec<tree, va_gc> **args, if (call != error_mark_node) { - if (explicit_targs) - flags |= LOOKUP_EXPLICIT_TMPL_ARGS; /* Now we know what function is being called. */ if (fn_p) *fn_p = fn; base-commit: 2b2d298ff845ab7a07ffbd51da79473736da3324 -- 2.18.1