Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
Pushed to trunk as r16-2764-g74f59bf10dfef1.

gcc/ChangeLog:
        * diagnostics/context.h: Move struct counters to its own header
        and include it.
        * diagnostics/counters.h: New file, from the above.
---
 gcc/diagnostics/context.h  | 23 +----------------
 gcc/diagnostics/counters.h | 51 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 22 deletions(-)
 create mode 100644 gcc/diagnostics/counters.h

diff --git a/gcc/diagnostics/context.h b/gcc/diagnostics/context.h
index e83cbf3ddb81..a5f1a41967b4 100644
--- a/gcc/diagnostics/context.h
+++ b/gcc/diagnostics/context.h
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostics/option-id-manager.h"
 #include "diagnostics/context-options.h"
 #include "diagnostics/source-printing-options.h"
+#include "diagnostics/counters.h"
 
 namespace diagnostics {
 
@@ -215,28 +216,6 @@ private:
   enum diagnostics_escape_format m_escape_format;
 };
 
-/* A collection of counters of diagnostics, per-kind
-   (e.g. "3 errors and 1 warning"), for use by both context
-   and by diagnostics::buffer.  */
-
-struct counters
-{
-  counters ();
-
-  void dump (FILE *out, int indent) const;
-  void DEBUG_FUNCTION dump () const { dump (stderr, 0); }
-
-  int get_count (enum kind kind) const
-  {
-    return m_count_for_kind[static_cast<size_t> (kind)];
-  }
-
-  void move_to (counters &dest);
-  void clear ();
-
-  int m_count_for_kind[static_cast<size_t> (kind::last_diagnostic_kind)];
-};
-
 /* This class encapsulates the state of the diagnostics subsystem
    as a whole (either directly, or via owned objects of other classes, to
    avoid global variables).
diff --git a/gcc/diagnostics/counters.h b/gcc/diagnostics/counters.h
new file mode 100644
index 000000000000..42db3feff7cc
--- /dev/null
+++ b/gcc/diagnostics/counters.h
@@ -0,0 +1,51 @@
+/* Counts of per-kind diagnostics.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_DIAGNOSTICS_COUNTERS_H
+#define GCC_DIAGNOSTICS_COUNTERS_H
+
+#include "diagnostics/kinds.h"
+
+namespace diagnostics {
+
+/* A collection of counters of diagnostics, per-kind
+   (e.g. "3 errors and 1 warning"), for use by both diagnostics::context
+   and by diagnostics::buffer.  */
+
+struct counters
+{
+  counters ();
+
+  void dump (FILE *out, int indent) const;
+  void DEBUG_FUNCTION dump () const { dump (stderr, 0); }
+
+  int get_count (enum kind kind) const
+  {
+    return m_count_for_kind[static_cast<size_t> (kind)];
+  }
+
+  void move_to (counters &dest);
+  void clear ();
+
+  int m_count_for_kind[static_cast<size_t> (kind::last_diagnostic_kind)];
+};
+
+} // namespace diagnostics
+
+#endif /* ! GCC_DIAGNOSTICS_COUNTERS_H */
-- 
2.26.3

Reply via email to