c++: overload dumper
authorNathan Sidwell <nathan@acm.org>
Mon, 24 Aug 2020 13:28:37 +0000 (06:28 -0700)
committerNathan Sidwell <nathan@acm.org>
Mon, 24 Aug 2020 13:28:37 +0000 (06:28 -0700)
I frequently need to look at overload sets, and debug_node spews more
information than is useful, most of the time.  Here's a dumper for
overloads, that just tells you their full name and where they came from.

gcc/cp
* ptree.c (debug_overload): New.

gcc/cp/ptree.c

index dfc244fdceb27379de9affcea41badea9185ffd3..11833e3b4da05b34d8ef1358abf436c7154d7153 100644 (file)
@@ -321,3 +321,19 @@ debug_tree (cp_expr node)
 {
   debug_tree (node.get_value());
 }
+
+DEBUG_FUNCTION void
+debug_overload (tree node)
+{
+  FILE *file = stdout;
+
+  for (lkp_iterator iter (node); iter; ++iter)
+    {
+      tree decl = *iter;
+      auto xloc = expand_location (DECL_SOURCE_LOCATION (decl));
+      auto fullname = decl_as_string (decl, 0);
+
+      fprintf (file, "%p: %s:%d:%d \"%s\"\n", (void *)decl,
+              xloc.file, xloc.line, xloc.column, fullname);
+    }
+}