From: Jason Merrill Date: Mon, 11 May 2020 18:05:46 +0000 (-0400) Subject: c++: Remove LOOKUP_EXPLICIT_TMPL_ARGS. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=08434b02e2903c60517f64f3bc3070992001d3b5;p=gcc.git c++: Remove LOOKUP_EXPLICIT_TMPL_ARGS. This flag is redundant with the explicit_targs field in the overload candidate information. gcc/cp/ChangeLog 2020-05-11 Jason Merrill * 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. --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9831c253668..f92c6416ee6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2020-05-11 Jason Merrill + + * 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. + 2020-05-11 Jason Merrill * decl.c (compute_array_index_type_loc): Stabilize before building 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 **args, } else { - int flags = LOOKUP_NORMAL; - /* If fn is template_id_expr, the call has explicit template arguments - (e.g. func(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 **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; 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. */