mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
2002-01-04 Daniel Jacobowitz <drow@mvista.com>
* valops.c (find_overload_match): Accept obj as a reference parameter. Update it before returning. * value.h (find_overload_match): Update prototype. * eval.c (evaluate_subexp_standard): Pass object to find_overload_match by reference.
This commit is contained in:
parent
a3aa38ee6c
commit
7f8c928258
@ -1,3 +1,11 @@
|
||||
2002-01-04 Daniel Jacobowitz <drow@mvista.com>
|
||||
|
||||
* valops.c (find_overload_match): Accept obj as a
|
||||
reference parameter. Update it before returning.
|
||||
* value.h (find_overload_match): Update prototype.
|
||||
* eval.c (evaluate_subexp_standard): Pass object to
|
||||
find_overload_match by reference.
|
||||
|
||||
2002-01-03 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* valarith.c: Replace value_ptr with struct value pointer. Remove
|
||||
|
@ -845,7 +845,7 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||
|
||||
(void) find_overload_match (arg_types, nargs, tstr,
|
||||
1 /* method */ , 0 /* strict match */ ,
|
||||
arg2 /* the object */ , NULL,
|
||||
&arg2 /* the object */ , NULL,
|
||||
&valp, NULL, &static_memfuncp);
|
||||
|
||||
|
||||
|
12
gdb/valops.c
12
gdb/valops.c
@ -2636,12 +2636,13 @@ value_find_oload_method_list (struct value **argp, char *method, int offset,
|
||||
|
||||
int
|
||||
find_overload_match (struct type **arg_types, int nargs, char *name, int method,
|
||||
int lax, struct value *obj, struct symbol *fsym,
|
||||
int lax, struct value **objp, struct symbol *fsym,
|
||||
struct value **valp, struct symbol **symp, int *staticp)
|
||||
{
|
||||
int nparms;
|
||||
struct type **parm_types;
|
||||
int champ_nparms = 0;
|
||||
struct value *obj = (objp ? *objp : NULL);
|
||||
|
||||
short oload_champ = -1; /* Index of best overloaded function */
|
||||
short oload_ambiguous = 0; /* Current ambiguity state for overload resolution */
|
||||
@ -2865,6 +2866,15 @@ find_overload_match (struct type **arg_types, int nargs, char *name, int method,
|
||||
xfree (func_name);
|
||||
}
|
||||
|
||||
if (objp)
|
||||
{
|
||||
if (TYPE_CODE (VALUE_TYPE (temp)) != TYPE_CODE_PTR
|
||||
&& TYPE_CODE (VALUE_TYPE (*objp)) == TYPE_CODE_PTR)
|
||||
{
|
||||
temp = value_addr (temp);
|
||||
}
|
||||
*objp = temp;
|
||||
}
|
||||
return oload_incompatible ? 100 : (oload_non_standard ? 10 : 0);
|
||||
}
|
||||
|
||||
|
@ -388,7 +388,7 @@ extern struct fn_field *value_find_oload_method_list (struct value **, char *,
|
||||
|
||||
extern int find_overload_match (struct type **arg_types, int nargs,
|
||||
char *name, int method, int lax,
|
||||
struct value *obj, struct symbol *fsym,
|
||||
struct value **objp, struct symbol *fsym,
|
||||
struct value **valp, struct symbol **symp,
|
||||
int *staticp);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user