Hi, This bug exposes two problems with inferior function calling. First (and foremost), the user is attempting to do something like: (gdb) p my_function $1 = ... my_function (char *) (gdb) p my_function(0) Cannot resolve function my_function to any overloaded instance This occurs because the parser interprets "0" as an integer, and the evaluator does not allow integer to pointer conversion. I cannot really think of a reason why gdb shouldn't be more permissive of this, as long as the INT will fit into a pointer. Second, for a function which takes multiple arguments, classify_oload_match would not inspect all arguments. Instead it would return immediately upon finding any INCOMPATIBLE or NONSTANDARD ranking. For incompatible, this is okay -- subsequent arguments' ranks don't matter anymore. However if we find NONSTANDARD, that doesn't mean that subsequent arguments' rankings should be dismissed, since one of these could be INCOMPATIBLE. Tested on x86_64 with no regressions. Keith ChangeLog 2011-10-11 Keith Seitz c++/13225 * gdbtypes.h (NS_POINTER_CONVERSION_BADNESS): Update comment. * gdbtypes.c (rank_one_type): Size permitting, allow int to pointer conversion. * valops.c (classify_oload_match): Inspect all arguments until INCOMPATIBLE is found. Return the worst badness found otherwise. testsuite/ChangeLog: 2011-10-11 Keith Seitz c++/13225 * gdb.cp/converts.cc (foo3_1): New function. * gdb.cp/converts.exp: Add test for int to pointer conversion. Add test to check if all arguments are checked for incompatible conversion BADNESS.