Patchwork [pushed] gdb: improve debug output of function overload resolution

login
register
mail settings
Submitter Simon Marchi (Code Review)
Date Nov. 29, 2019, 11:24 a.m.
Message ID <20191129112408.1784520AF6@gnutoolchain-gerrit.osci.io>
Download mbox | patch
Permalink /patch/36376/
State New
Headers show

Comments

Simon Marchi (Code Review) - Nov. 29, 2019, 11:24 a.m.
The original change was created by Tankut Baris Aktemur.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/735
......................................................................

gdb: improve debug output of function overload resolution

Function overload resolution prints debug output if turned on via the
'set debug overload' command.  The output includes the badness vector
(BV).  For each function, this vector contains a badness value of the
length of parameters as its first element.  So, BV[0] does not
correspond to a parameter.  The badness values of parameters start
with BV[1].

A badness value is a pair; it contains a rank and a subrank.  Printing
both fields provides useful information.

Improve printing the badness vector along these lines.

gdb/ChangeLog:
2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* valops.c (find_oload_champ): Improve debug output.

Change-Id: I771017e7afbbaf4809e2238a9b23274f55c61f55
---
M gdb/ChangeLog
M gdb/valops.c
2 files changed, 12 insertions(+), 3 deletions(-)

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a3c0670..4b7e506 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@ 
 2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
+	* valops.c (find_oload_champ): Improve debug output.
+
+2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
 	* valops.c (find_oload_champ): Print part of debug messages
 	before the badness vector is std::move'd.
 
diff --git a/gdb/valops.c b/gdb/valops.c
index 8af53de..e3fc2dc 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3039,10 +3039,15 @@ 
 			      "%s # of parms %d\n",
 			      functions[ix]->demangled_name (),
 			      (int) parm_types.size ());
-	  for (jj = 0; jj < args.size () - static_offset; jj++)
+
+	  fprintf_filtered (gdb_stderr,
+			    "...Badness of length : {%d, %d}\n",
+			    bv[0].rank, bv[0].subrank);
+
+	  for (jj = 1; jj < bv.size (); jj++)
 	    fprintf_filtered (gdb_stderr,
-			      "...Badness @ %d : %d\n",
-			      jj, bv[jj].rank);
+			      "...Badness of arg %d : {%d, %d}\n",
+			      jj, bv[jj].rank, bv[jj].subrank);
 	}
 
       if (oload_champ_bv->empty ())