Hi,
a lot of time ago I noticed that these parameters are unused: should I
prepare a ChangeLog for the below or we have stylistic, etc, reasons for
keeping the parameters?
Thanks,
Paolo.
PS: I also see many int return types in the various unify* which could
as well be bool. Opinions about that?
////////////////////
Index: pt.c
===================================================================
--- pt.c (revision 209420)
+++ pt.c (working copy)
@@ -5377,7 +5377,7 @@ has_value_dependent_address (tree op)
call.c */
static int
-unify_success (bool /*explain_p*/)
+unify_success (void)
{
return 0;
}
@@ -5392,7 +5392,7 @@ unify_parameter_deduction_failure (bool explain_p,
}
static int
-unify_invalid (bool /*explain_p*/)
+unify_invalid (void)
{
return 1;
}
@@ -16085,13 +16085,13 @@ check_non_deducible_conversion (tree parm, tree ar
type = arg;
if (same_type_p (parm, type))
- return unify_success (explain_p);
+ return unify_success ();
if (strict == DEDUCE_CONV)
{
if (can_convert_arg (type, parm, NULL_TREE, flags,
explain_p ? tf_warning_or_error : tf_none))
- return unify_success (explain_p);
+ return unify_success ();
}
else if (strict != DEDUCE_EXACT)
{
@@ -16098,7 +16098,7 @@ check_non_deducible_conversion (tree parm, tree ar
if (can_convert_arg (parm, type,
TYPE_P (arg) ? NULL_TREE : arg,
flags, explain_p ? tf_warning_or_error : tf_none))
- return unify_success (explain_p);
+ return unify_success ();
}
if (strict == DEDUCE_EXACT)
@@ -16249,11 +16249,11 @@ unify_one_argument (tree tparms, tree targs, tree
int arg_strict;
if (arg == error_mark_node || parm == error_mark_node)
- return unify_invalid (explain_p);
+ return unify_invalid ();
if (arg == unknown_type_node)
/* We can't deduce anything from this, but we might get all the
template args from other function args. */
- return unify_success (explain_p);
+ return unify_success ();
/* Implicit conversions (Clause 4) will be performed on a function
argument to convert it to the type of the corresponding function
@@ -16269,7 +16269,7 @@ unify_one_argument (tree tparms, tree targs, tree
&& TYPE_P (parm) && !uses_deducible_template_parms (parm))
/* For function parameters with only non-deducible template parameters,
just return. */
- return unify_success (explain_p);
+ return unify_success ();
switch (strict)
{
@@ -16314,7 +16314,7 @@ unify_one_argument (tree tparms, tree targs, tree
if (resolve_overloaded_unification
(tparms, targs, parm, arg, strict,
arg_strict, explain_p))
- return unify_success (explain_p);
+ return unify_success ();
return unify_overload_resolution_failure (explain_p, arg);
}
@@ -16321,7 +16321,7 @@ unify_one_argument (tree tparms, tree targs, tree
arg_expr = arg;
arg = unlowered_expr_type (arg);
if (arg == error_mark_node)
- return unify_invalid (explain_p);
+ return unify_invalid ();
}
arg_strict |=
@@ -16548,7 +16548,7 @@ type_unification_real (tree tparms,
SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (targs, TREE_VEC_LENGTH (targs));
#endif
- return unify_success (explain_p);
+ return unify_success ();
}
/* Subroutine of type_unification_real. Args are like the variables
@@ -17242,7 +17242,7 @@ unify_pack_expansion (tree tparms, tree targs, tre
}
}
- return unify_success (explain_p);
+ return unify_success ();
}
/* Handle unification of the domain of an array. PARM_DOM and ARG_DOM are
@@ -17369,12 +17369,12 @@ unify (tree tparms, tree targs, tree parm, tree ar
parm = TREE_OPERAND (parm, 0);
if (arg == error_mark_node)
- return unify_invalid (explain_p);
+ return unify_invalid ();
if (arg == unknown_type_node
|| arg == init_list_type_node)
/* We can't deduce anything from this, but we might get all the
template args from other function args. */
- return unify_success (explain_p);
+ return unify_success ();
/* If PARM uses template parameters, then we can't bail out here,
even if ARG == PARM, since we won't record unifications for the
@@ -17381,7 +17381,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
template parameters. We might need them if we're trying to
figure out which of two things is more specialized. */
if (arg == parm && !uses_template_parms (parm))
- return unify_success (explain_p);
+ return unify_success ();
/* Handle init lists early, so the rest of the function can assume
we're dealing with a type. */
@@ -17401,7 +17401,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
/* We can only deduce from an initializer list argument if the
parameter is std::initializer_list or an array; otherwise this
is a non-deduced context. */
- return unify_success (explain_p);
+ return unify_success ();
if (TREE_CODE (parm) == ARRAY_TYPE)
elttype = TREE_TYPE (parm);
@@ -17413,7 +17413,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
int elt_strict = strict;
if (elt == error_mark_node)
- return unify_invalid (explain_p);
+ return unify_invalid ();
if (!BRACE_ENCLOSED_INITIALIZER_P (elt))
{
@@ -17436,7 +17436,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
tree max = size_int (CONSTRUCTOR_NELTS (arg));
tree idx = compute_array_index_type (NULL_TREE, max, tf_none);
if (idx == error_mark_node)
- return unify_invalid (explain_p);
+ return unify_invalid ();
return unify_array_domain (tparms, targs, TYPE_DOMAIN (parm),
idx, explain_p);
}
@@ -17450,7 +17450,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
targ = listify (targ);
TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx) = targ;
}
- return unify_success (explain_p);
+ return unify_success ();
}
/* Immediately reject some pairs that won't unify because of
@@ -17485,7 +17485,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
/* In a type which contains a nested-name-specifier, template
argument values cannot be deduced for template parameters used
within the nested-name-specifier. */
- return unify_success (explain_p);
+ return unify_success ();
case TEMPLATE_TYPE_PARM:
case TEMPLATE_TEMPLATE_PARM:
@@ -17492,7 +17492,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
case BOUND_TEMPLATE_TEMPLATE_PARM:
tparm = TREE_VALUE (TREE_VEC_ELT (tparms, 0));
if (error_operand_p (tparm))
- return unify_invalid (explain_p);
+ return unify_invalid ();
if (TEMPLATE_TYPE_LEVEL (parm)
!= template_decl_level (tparm))
@@ -17502,7 +17502,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
if (TREE_CODE (arg) == TREE_CODE (parm)
&& (is_auto (parm) ? is_auto (arg)
: same_type_p (parm, arg)))
- return unify_success (explain_p);
+ return unify_success ();
else
return unify_type_mismatch (explain_p, parm, arg);
}
@@ -17510,7 +17510,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
targ = TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx);
tparm = TREE_VALUE (TREE_VEC_ELT (tparms, idx));
if (error_operand_p (tparm))
- return unify_invalid (explain_p);
+ return unify_invalid ();
/* Check for mixed types and values. */
if ((TREE_CODE (parm) == TEMPLATE_TYPE_PARM
@@ -17599,7 +17599,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
entire template argument list is a non-deduced
context. */
if (PACK_EXPANSION_P (TREE_VEC_ELT (parmvec, i)))
- return unify_success (explain_p);
+ return unify_success ();
if (TREE_VEC_LENGTH (argvec) < len - parm_variadic_p)
return unify_too_few_arguments (explain_p,
@@ -17632,7 +17632,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
/* Simple cases: Value already set, does match or doesn't. */
if (targ != NULL_TREE && template_args_equal (targ, arg))
- return unify_success (explain_p);
+ return unify_success ();
else if (targ)
return unify_inconsistency (explain_p, parm, targ, arg);
}
@@ -17651,11 +17651,11 @@ unify (tree tparms, tree targs, tree parm, tree ar
arg = cp_build_qualified_type_real
(arg, cp_type_quals (arg) & ~cp_type_quals (parm), tf_none);
if (arg == error_mark_node)
- return unify_invalid (explain_p);
+ return unify_invalid ();
/* Simple cases: Value already set, does match or doesn't. */
if (targ != NULL_TREE && same_type_p (targ, arg))
- return unify_success (explain_p);
+ return unify_success ();
else if (targ)
return unify_inconsistency (explain_p, parm, targ, arg);
@@ -17688,12 +17688,12 @@ unify (tree tparms, tree targs, tree parm, tree ar
return unify_method_type_error (explain_p, arg);
TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx) = arg;
- return unify_success (explain_p);
+ return unify_success ();
case TEMPLATE_PARM_INDEX:
tparm = TREE_VALUE (TREE_VEC_ELT (tparms, 0));
if (error_operand_p (tparm))
- return unify_invalid (explain_p);
+ return unify_invalid ();
if (TEMPLATE_PARM_LEVEL (parm)
!= template_decl_level (tparm))
@@ -17742,7 +17742,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
else if (uses_template_parms (tparm))
/* We haven't deduced the type of this parameter yet. Try again
later. */
- return unify_success (explain_p);
+ return unify_success ();
else
return unify_type_mismatch (explain_p, tparm, TREE_TYPE (arg));
@@ -17754,7 +17754,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
arg = strip_typedefs_expr (arg);
TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx) = arg;
- return unify_success (explain_p);
+ return unify_success ();
case PTRMEM_CST:
{
@@ -17818,7 +17818,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
if (TYPE_DOMAIN (parm) != NULL_TREE)
return unify_array_domain (tparms, targs, TYPE_DOMAIN (parm),
TYPE_DOMAIN (arg), explain_p);
- return unify_success (explain_p);
+ return unify_success ();
case REAL_TYPE:
case COMPLEX_TYPE:
@@ -17838,7 +17838,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
/* As far as unification is concerned, this wins. Later checks
will invalidate it if necessary. */
- return unify_success (explain_p);
+ return unify_success ();
/* Types INTEGER_CST and MINUS_EXPR can come from array bounds. */
/* Type INTEGER_CST can come from ordinary constant template args. */
@@ -17849,7 +17849,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
if (TREE_CODE (arg) != INTEGER_CST)
return unify_template_argument_mismatch (explain_p, parm, arg);
return (tree_int_cst_equal (parm, arg)
- ? unify_success (explain_p)
+ ? unify_success ()
: unify_template_argument_mismatch (explain_p, parm, arg));
case TREE_VEC:
@@ -17877,7 +17877,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
P contains a pack expansion that is not the last
template argument, the entire template argument list
is a non-deduced context. */
- return unify_success (explain_p);
+ return unify_success ();
}
}
@@ -17903,7 +17903,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
return unify_pack_expansion (tparms, targs, parm, arg,
DEDUCE_EXACT,
/*subr=*/true, explain_p);
- return unify_success (explain_p);
+ return unify_success ();
}
case RECORD_TYPE:
@@ -17966,7 +17966,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
}
else if (!same_type_ignoring_top_level_qualifiers_p (parm, arg))
return unify_type_mismatch (explain_p, parm, arg);
- return unify_success (explain_p);
+ return unify_success ();
case METHOD_TYPE:
case FUNCTION_TYPE:
@@ -18038,7 +18038,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
return unify (tparms, targs, DECL_INITIAL (parm), arg, strict,
explain_p);
if (arg != integral_constant_value (parm))
return unify_template_argument_mismatch (explain_p, parm, arg);
- return unify_success (explain_p);
+ return unify_success ();
case FIELD_DECL:
case TEMPLATE_DECL:
@@ -18062,11 +18062,11 @@ unify (tree tparms, tree targs, tree parm, tree ar
case UNDERLYING_TYPE:
/* Cannot deduce anything from TYPEOF_TYPE, DECLTYPE_TYPE,
or UNDERLYING_TYPE nodes. */
- return unify_success (explain_p);
+ return unify_success ();
case ERROR_MARK:
/* Unification fails if we hit an error node. */
- return unify_invalid (explain_p);
+ return unify_invalid ();
case INDIRECT_REF:
if (REFERENCE_REF_P (parm))
@@ -18077,7 +18077,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
default:
/* An unresolved overload is a nondeduced context. */
if (is_overloaded_fn (parm) || type_unknown_p (parm))
- return unify_success (explain_p);
+ return unify_success ();
gcc_assert (EXPR_P (parm));
/* We must be looking at an expression. This can happen with
@@ -18103,7 +18103,7 @@ unify (tree tparms, tree targs, tree parm, tree ar
&& !template_args_equal (parm, arg))
return unify_expression_unequal (explain_p, parm, arg);
else
- return unify_success (explain_p);
+ return unify_success ();
}
}
#undef RECUR_AND_CHECK_FAILURE