dbgcnt: print list after compilation
authorMartin Liska <mliska@suse.cz>
Tue, 6 Oct 2020 09:18:55 +0000 (11:18 +0200)
committerMartin Liska <mliska@suse.cz>
Tue, 6 Oct 2020 13:49:42 +0000 (15:49 +0200)
gcc/ChangeLog:

* common.opt: Remove -fdbg-cnt-list from deferred options.
* dbgcnt.c (dbg_cnt_set_limit_by_index): Make a copy
to original_limits.
(dbg_cnt_list_all_counters): Print also current counter value
and print to stderr.
* opts-global.c (handle_common_deferred_options): Do not handle
-fdbg-cnt-list.
* opts.c (common_handle_option): Likewise.
* toplev.c (finalize): Handle it after compilation here.

gcc/common.opt
gcc/dbgcnt.c
gcc/opts-global.c
gcc/opts.c
gcc/toplev.c

index 292c2de694ef4f42e60b37fca681189de8cfdec9..7e789d1c47f0f52cf7d6121e8354283cafeef991 100644 (file)
@@ -1202,7 +1202,7 @@ Common Report Var(flag_data_sections)
 Place data items into their own section.
 
 fdbg-cnt-list
-Common Report Var(common_deferred_options) Defer
+Common Report Var(flag_dbg_cnt_list)
 List all available debugging counters with their limits and counts.
 
 fdbg-cnt=
index 01893ce7238ff72958a271be1613581e42d6e3bf..2a2dd57507dccf7698241f176ad0c5cbc1776893 100644 (file)
@@ -45,6 +45,7 @@ static struct string2counter_map map[debug_counter_number_of_counters] =
 typedef std::pair<unsigned int, unsigned int> limit_tuple;
 
 static vec<limit_tuple> limits[debug_counter_number_of_counters];
+static vec<limit_tuple> original_limits[debug_counter_number_of_counters];
 
 static unsigned int count[debug_counter_number_of_counters];
 
@@ -134,6 +135,8 @@ dbg_cnt_set_limit_by_index (enum debug_counter index, const char *name,
        }
     }
 
+  original_limits[index] = limits[index].copy ();
+
   return true;
 }
 
@@ -226,25 +229,27 @@ void
 dbg_cnt_list_all_counters (void)
 {
   int i;
-  printf ("  %-30s %s\n", G_("counter name"), G_("closed intervals"));
-  printf ("-----------------------------------------------------------------\n");
+  fprintf (stderr, "  %-30s%-15s   %s\n", G_("counter name"),
+          G_("counter value"), G_("closed intervals"));
+  fprintf (stderr, "-----------------------------------------------------------------\n");
   for (i = 0; i < debug_counter_number_of_counters; i++)
     {
-      printf ("  %-30s ", map[i].name);
-      if (limits[i].exists ())
+      fprintf (stderr, "  %-30s%-15d   ", map[i].name, count[i]);
+      if (original_limits[i].exists ())
        {
-         for (int j = limits[i].length () - 1; j >= 0; j--)
+         for (int j = original_limits[i].length () - 1; j >= 0; j--)
            {
-             printf ("[%u, %u]", limits[i][j].first, limits[i][j].second);
+             fprintf (stderr, "[%u, %u]", original_limits[i][j].first,
+                      original_limits[i][j].second);
              if (j > 0)
-               printf (", ");
+               fprintf (stderr, ", ");
            }
-         putchar ('\n');
+         fprintf (stderr, "\n");
        }
       else
-       printf ("unset\n");
+       fprintf (stderr, "unset\n");
     }
-  printf ("\n");
+  fprintf (stderr, "\n");
 }
 
 #if CHECKING_P
index b024ab8e18fe28b7fa7a1429eb4c73144cd68f7e..1816acf805baec1aa5aa7f370ee31f6c43070047 100644 (file)
@@ -378,10 +378,6 @@ handle_common_deferred_options (void)
          dbg_cnt_process_opt (opt->arg);
          break;
 
-       case OPT_fdbg_cnt_list:
-         dbg_cnt_list_all_counters ();
-         break;
-
        case OPT_fdebug_prefix_map_:
          add_debug_prefix_map (opt->arg);
          break;
index 3bda59afced1dfae7b9dadc181209424a8ee3c24..da503c32dd0f1ea3050bdc683356e95a9071d06e 100644 (file)
@@ -2361,11 +2361,6 @@ common_handle_option (struct gcc_options *opts,
       /* Deferred.  */
       break;
 
-    case OPT_fdbg_cnt_list:
-      /* Deferred.  */
-      opts->x_exit_after_options = true;
-      break;
-
     case OPT_fdebug_prefix_map_:
     case OPT_ffile_prefix_map_:
       /* Deferred.  */
index a4cb8bb262ed485d2deae234d9416c59596ad279..8c1e1e1f44f905520641b17ff673f391c02521c5 100644 (file)
@@ -86,6 +86,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "optinfo-emit-json.h"
 #include "ipa-modref-tree.h"
 #include "ipa-modref.h"
+#include "dbgcnt.h"
 
 #if defined(DBX_DEBUGGING_INFO) || defined(XCOFF_DEBUGGING_INFO)
 #include "dbxout.h"
@@ -2213,6 +2214,9 @@ finalize (bool no_backend)
   if (profile_report)
     dump_profile_report ();
 
+  if (flag_dbg_cnt_list)
+    dbg_cnt_list_all_counters ();
+
   /* Language-specific end of compilation actions.  */
   lang_hooks.finish ();
 }