aboutsummaryrefslogtreecommitdiff
path: root/gdb/valops.c
diff options
context:
space:
mode:
authorSiva Chandra <sivachandra@chromium.org>2014-02-27 05:51:46 -0800
committerSiva Chandra <sivachandra@chromium.org>2014-02-28 15:03:22 -0800
commit9cf953733af60dbcd554cd744c560637233449bb (patch)
tree817f0d5aa4f70855951d342b9cd2bcae0f0cd1e1 /gdb/valops.c
parent7b3858e08a9c9c7bfc57315ef2f9fa3996d02053 (diff)
downloadgdb-9cf953733af60dbcd554cd744c560637233449bb.zip
gdb-9cf953733af60dbcd554cd744c560637233449bb.tar.gz
gdb-9cf953733af60dbcd554cd744c560637233449bb.tar.bz2
Remove the unnecesary argument METHOD to valops.c:find_oload_champ.
* valops.c (find_oload_champ): Remove unneccesary argument METHOD. (find_overload_match): Update call to find_oload_champ. (find_oload_champ_namespace_loop): Likewise
Diffstat (limited to 'gdb/valops.c')
-rw-r--r--gdb/valops.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/gdb/valops.c b/gdb/valops.c
index 9d2218f..cf195a3 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -69,7 +69,7 @@ int find_oload_champ_namespace_loop (struct value **, int,
struct badness_vector **, int *,
const int no_adl);
-static int find_oload_champ (struct value **, int, int, int,
+static int find_oload_champ (struct value **, int, int,
struct fn_field *, struct symbol **,
struct badness_vector **);
@@ -2469,9 +2469,9 @@ find_overload_match (struct value **args, int nargs,
if (fns_ptr)
{
gdb_assert (TYPE_DOMAIN_TYPE (fns_ptr[0].type) != NULL);
- method_oload_champ = find_oload_champ (args, nargs, method,
+ method_oload_champ = find_oload_champ (args, nargs,
num_fns, fns_ptr,
- oload_syms, &method_badness);
+ NULL, &method_badness);
method_match_quality =
classify_oload_match (method_badness, nargs,
@@ -2784,7 +2784,7 @@ find_oload_champ_namespace_loop (struct value **args, int nargs,
while (new_oload_syms[num_fns])
++num_fns;
- new_oload_champ = find_oload_champ (args, nargs, 0, num_fns,
+ new_oload_champ = find_oload_champ (args, nargs, num_fns,
NULL, new_oload_syms,
&new_oload_champ_bv);
@@ -2823,15 +2823,16 @@ find_oload_champ_namespace_loop (struct value **args, int nargs,
/* Look for a function to take NARGS args of ARGS. Find
the best match from among the overloaded methods or functions
- (depending on METHOD) given by FNS_PTR or OLOAD_SYMS, respectively.
- The number of methods/functions in the list is given by NUM_FNS.
+ given by FNS_PTR or OLOAD_SYMS, respectively. One, and only one of
+ FNS_PTR and OLOAD_SYMS can be non-NULL. The number of
+ methods/functions in the non-NULL list is given by NUM_FNS.
Return the index of the best match; store an indication of the
quality of the match in OLOAD_CHAMP_BV.
It is the caller's responsibility to free *OLOAD_CHAMP_BV. */
static int
-find_oload_champ (struct value **args, int nargs, int method,
+find_oload_champ (struct value **args, int nargs,
int num_fns, struct fn_field *fns_ptr,
struct symbol **oload_syms,
struct badness_vector **oload_champ_bv)
@@ -2845,31 +2846,37 @@ find_oload_champ (struct value **args, int nargs, int method,
int oload_ambiguous = 0;
/* 0 => no ambiguity, 1 => two good funcs, 2 => incomparable funcs. */
+ /* A champion can be found among methods alone, or among functions
+ alone, but not both. */
+ gdb_assert ((fns_ptr != NULL) + (oload_syms != NULL) == 1);
+
*oload_champ_bv = NULL;
/* Consider each candidate in turn. */
for (ix = 0; ix < num_fns; ix++)
{
int jj;
- int static_offset = oload_method_static (method, fns_ptr, ix);
+ int static_offset;
int nparms;
struct type **parm_types;
- if (method)
+ if (fns_ptr != NULL)
{
nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (fns_ptr, ix));
+ static_offset = oload_method_static (1, fns_ptr, ix);
}
else
{
/* If it's not a method, this is the proper place. */
nparms = TYPE_NFIELDS (SYMBOL_TYPE (oload_syms[ix]));
+ static_offset = 0;
}
/* Prepare array of parameter types. */
parm_types = (struct type **)
xmalloc (nparms * (sizeof (struct type *)));
for (jj = 0; jj < nparms; jj++)
- parm_types[jj] = (method
+ parm_types[jj] = (fns_ptr != NULL
? (TYPE_FN_FIELD_ARGS (fns_ptr, ix)[jj].type)
: TYPE_FIELD_TYPE (SYMBOL_TYPE (oload_syms[ix]),
jj));
@@ -2907,7 +2914,7 @@ find_oload_champ (struct value **args, int nargs, int method,
xfree (parm_types);
if (overload_debug)
{
- if (method)
+ if (fns_ptr)
fprintf_filtered (gdb_stderr,
"Overloaded method instance %s, # of parms %d\n",
fns_ptr[ix].physname, nparms);