summaryrefslogtreecommitdiff
path: root/gdb/valarith.c
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2011-10-14 20:22:15 +0000
committerKeith Seitz <keiths@redhat.com>2011-10-14 20:22:15 +0000
commit2e3e0cb4304527bf4623292f6f5916cd84de5887 (patch)
tree21302fa3ff165c6e2cffd6542c4eeab1e57ca6c9 /gdb/valarith.c
parent0da82f3c14ad2432adc79035db74f1bec0d3a581 (diff)
downloadgdb-2e3e0cb4304527bf4623292f6f5916cd84de5887.tar.gz
PR c++/13225
* eval.c (evaluate_subexp_standard): Do not construct an array of types; pass the value array directly to find_overload_match. * gdbtypes.h (NULL_POINTER_CONVERSION_BADNESS): Declare. (rank_function): Take an array of values instead of types. (rank_one_type): Add struct value * parameter. * gdbtypes.c (NULL_POINTER_CONVERSION_BADNESS): Define. (rank_function): For each argument, pass the argument's value to rank_one_type. (rank_one_type): Add VALUE parameter. If the parameter type is a pointer and the argument type is an integer, return NULL_POINTER_CONVERSION_BADNESS if VALUE is zero. Update all calls to rank_one_type, passing NULL for new VALUE parameter. * valarith.c (value_user_defined_cpp_op): Do not construct an array of types; pass the value array directly to find_overload_match. * valops.c (find_overload_method_list): Take an array of values instead of types. Save the type of OBJP for later use. Update calls to find_oload_champ, and find_oload_champ_namespace. (find_oload_champ_namespace): Take an array of values instead of types. (find_oload_champ_namespace_loop): Likewise. (find_oload_champ): Likewise. (classify_oload_match): Inspect all arguments until INCOMPATIBLE is found. Return the worst badness found otherwise. (compare_parameters): Update call to rank_one_type. * value.h (find_overload_match): Take an array of values instead of types.
Diffstat (limited to 'gdb/valarith.c')
-rw-r--r--gdb/valarith.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/gdb/valarith.c b/gdb/valarith.c
index 68f649f3c07..3250cc7a1fc 100644
--- a/gdb/valarith.c
+++ b/gdb/valarith.c
@@ -335,15 +335,8 @@ value_user_defined_cpp_op (struct value **args, int nargs, char *operator,
struct symbol *symp = NULL;
struct value *valp = NULL;
- struct type **arg_types;
- int i;
- arg_types = (struct type **) alloca (nargs * (sizeof (struct type *)));
- /* Prepare list of argument types for overload resolution. */
- for (i = 0; i < nargs; i++)
- arg_types[i] = value_type (args[i]);
-
- find_overload_match (arg_types, nargs, operator, BOTH /* could be method */,
+ find_overload_match (args, nargs, operator, BOTH /* could be method */,
0 /* strict match */, &args[0], /* objp */
NULL /* pass NULL symbol since symbol is unknown */,
&valp, &symp, static_memfuncp, 0);