aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2025-08-04 10:45:30 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2025-08-04 10:45:30 -0400
commit268ec60da01c67d346df9504fb2a60050259738d (patch)
treed19b5bdbeeb35e7289bfe5b971870ea1848906c2
parent3cff171b243f4d59b1b93a171050633f5eb5bf5e (diff)
downloadgcc-268ec60da01c67d346df9504fb2a60050259738d.zip
gcc-268ec60da01c67d346df9504fb2a60050259738d.tar.gz
gcc-268ec60da01c67d346df9504fb2a60050259738d.tar.bz2
diagnostics: rename option_manager to option_id_manager and split out from context.h
This patch splits out class option_manager to its own header, and renames it to class option_id_manager to better describe its purpose. No functional change intended. gcc/ChangeLog: * diagnostics/context.cc: Update for renaming of option_manager to option_id_manager and of context::m_option_mgr to context::m_option_id_mgr. * diagnostics/context.h: Likewise, moving class declaration to a new diagnostics/option-id-manager.h. * diagnostics/lazy-paths.cc: Likewise. * diagnostics/option-id-manager.h: New file, from material in diagnostics/context.h. * lto-wrapper.cc: Update for renaming of option_manager to option_id_manager. * opts-common.cc: Likewise. * opts-diagnostic.h: Likewise. * opts.cc: Likewise. * toplev.cc: Likewise. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
-rw-r--r--gcc/diagnostics/context.cc14
-rw-r--r--gcc/diagnostics/context.h54
-rw-r--r--gcc/diagnostics/lazy-paths.cc6
-rw-r--r--gcc/diagnostics/option-id-manager.h56
-rw-r--r--gcc/lto-wrapper.cc13
-rw-r--r--gcc/opts-common.cc2
-rw-r--r--gcc/opts-diagnostic.h19
-rw-r--r--gcc/opts.cc4
-rw-r--r--gcc/toplev.cc8
9 files changed, 103 insertions, 73 deletions
diff --git a/gcc/diagnostics/context.cc b/gcc/diagnostics/context.cc
index 85f7d2a..4d33f97 100644
--- a/gcc/diagnostics/context.cc
+++ b/gcc/diagnostics/context.cc
@@ -170,7 +170,7 @@ context::initialize (int n_opts)
m_text_callbacks.m_html_start_span
= default_start_span_fn<to_html>;
m_text_callbacks.m_end_diagnostic = default_text_finalizer;
- m_option_mgr = nullptr;
+ m_option_id_mgr = nullptr;
m_urlifier_stack = new auto_vec<urlifier_stack_node> ();
m_last_location = UNKNOWN_LOCATION;
m_client_aux_data = nullptr;
@@ -337,8 +337,8 @@ context::finish ()
m_client_data_hooks = nullptr;
}
- delete m_option_mgr;
- m_option_mgr = nullptr;
+ delete m_option_id_mgr;
+ m_option_id_mgr = nullptr;
if (m_urlifier_stack)
{
@@ -465,11 +465,11 @@ context::set_original_argv (unique_argv original_argv)
}
void
-context::set_option_manager (std::unique_ptr<option_manager> mgr,
- unsigned lang_mask)
+context::set_option_id_manager (std::unique_ptr<option_id_manager> mgr,
+ unsigned lang_mask)
{
- delete m_option_mgr;
- m_option_mgr = mgr.release ();
+ delete m_option_id_mgr;
+ m_option_id_mgr = mgr.release ();
m_lang_mask = lang_mask;
}
diff --git a/gcc/diagnostics/context.h b/gcc/diagnostics/context.h
index f47370b..1a26431 100644
--- a/gcc/diagnostics/context.h
+++ b/gcc/diagnostics/context.h
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see
#include "lazily-created.h"
#include "unique-argv.h"
#include "diagnostics/option-classifier.h"
+#include "diagnostics/option-id-manager.h"
#include "diagnostics/context-options.h"
namespace diagnostics {
@@ -81,35 +82,6 @@ typedef void (*text_finalizer_fn) (text_sink &,
const diagnostic_info *,
enum kind);
-/* Abstract base class for the diagnostic subsystem to make queries
- about command-line options. */
-
-class option_manager
-{
-public:
- virtual ~option_manager () {}
-
- /* Return 1 if option OPT_ID is enabled, 0 if it is disabled,
- or -1 if it isn't a simple on-off switch
- (or if the value is unknown, typically set later in target). */
- virtual int option_enabled_p (option_id opt_id) const = 0;
-
- /* Return malloced memory for the name of the option OPT_ID
- which enabled a diagnostic, originally of type ORIG_DIAG_KIND but
- possibly converted to DIAG_KIND by options such as -Werror.
- May return NULL if no name is to be printed.
- May be passed 0 as well as the index of a particular option. */
- virtual char *make_option_name (option_id opt_id,
- enum kind orig_diag_kind,
- enum kind diag_kind) const = 0;
-
- /* Return malloced memory for a URL describing the option that controls
- a diagnostic.
- May return NULL if no URL is available.
- May be passed 0 as well as the index of a particular option. */
- virtual char *make_option_url (option_id opt_id) const = 0;
-};
-
/* A bundle of options relating to printing the user's source code
(potentially with a margin, underlining, labels, etc). */
@@ -334,7 +306,7 @@ struct counters
- an optional urlifier to inject URLs into formatted messages
- counting the number of diagnostics reported of each kind
(class diagnostics::counters)
- - calling out to a option_manager to determine if
+ - calling out to a option_id_manager to determine if
a particular warning is enabled or disabled
- tracking pragmas that enable/disable warnings in a range of
source code
@@ -546,32 +518,32 @@ public:
/* Option-related member functions. */
inline bool option_enabled_p (option_id opt_id) const
{
- if (!m_option_mgr)
+ if (!m_option_id_mgr)
return true;
- return m_option_mgr->option_enabled_p (opt_id);
+ return m_option_id_mgr->option_enabled_p (opt_id);
}
inline char *make_option_name (option_id opt_id,
enum kind orig_diag_kind,
enum kind diag_kind) const
{
- if (!m_option_mgr)
+ if (!m_option_id_mgr)
return nullptr;
- return m_option_mgr->make_option_name (opt_id,
- orig_diag_kind,
- diag_kind);
+ return m_option_id_mgr->make_option_name (opt_id,
+ orig_diag_kind,
+ diag_kind);
}
inline char *make_option_url (option_id opt_id) const
{
- if (!m_option_mgr)
+ if (!m_option_id_mgr)
return nullptr;
- return m_option_mgr->make_option_url (opt_id);
+ return m_option_id_mgr->make_option_url (opt_id);
}
void
- set_option_manager (std::unique_ptr<option_manager> mgr,
- unsigned lang_mask);
+ set_option_id_manager (std::unique_ptr<option_id_manager> option_id_mgr,
+ unsigned lang_mask);
unsigned get_lang_mask () const
{
@@ -808,7 +780,7 @@ private:
/* Owned by the context; this would be a std::unique_ptr if
context had a proper ctor. */
- option_manager *m_option_mgr;
+ option_id_manager *m_option_id_mgr;
unsigned m_lang_mask;
/* A stack of optional hooks for adding URLs to quoted text strings in
diff --git a/gcc/diagnostics/lazy-paths.cc b/gcc/diagnostics/lazy-paths.cc
index 4934651..f246eea 100644
--- a/gcc/diagnostics/lazy-paths.cc
+++ b/gcc/diagnostics/lazy-paths.cc
@@ -125,12 +125,12 @@ test_intraprocedural_path (pretty_printer *event_pp)
"double `free'");
}
-/* Implementation of diagnostics::option_manager for which all
+/* Implementation of diagnostics::option_id_manager for which all
options are disabled, for use in selftests.
Note that this is *not* called for option_id (0), which
means "always warn" */
-class all_warnings_disabled : public diagnostics::option_manager
+class all_warnings_disabled : public diagnostics::option_id_manager
{
public:
int option_enabled_p (diagnostics::option_id) const final override
@@ -168,7 +168,7 @@ test_emission (pretty_printer *event_pp)
is skipped. */
{
test_context dc;
- dc.set_option_manager (std::make_unique<all_warnings_disabled> (), 0);
+ dc.set_option_id_manager (std::make_unique<all_warnings_disabled> (), 0);
test_rich_location rich_loc (*event_pp);
ASSERT_FALSE (rich_loc.m_path.generated_p ());
diff --git a/gcc/diagnostics/option-id-manager.h b/gcc/diagnostics/option-id-manager.h
new file mode 100644
index 0000000..08add5b
--- /dev/null
+++ b/gcc/diagnostics/option-id-manager.h
@@ -0,0 +1,56 @@
+/* Hooks for giving client-specific meaning to option ids.
+ 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_OPTION_ID_MANAGER_H
+#define GCC_DIAGNOSTICS_OPTION_ID_MANAGER_H
+
+namespace diagnostics {
+
+/* Abstract base class for the diagnostic subsystem to make queries
+ about command-line options. */
+
+class option_id_manager
+{
+public:
+ virtual ~option_id_manager () {}
+
+ /* Return 1 if option OPT_ID is enabled, 0 if it is disabled,
+ or -1 if it isn't a simple on-off switch
+ (or if the value is unknown, typically set later in target). */
+ virtual int option_enabled_p (option_id opt_id) const = 0;
+
+ /* Return malloced memory for the name of the option OPT_ID
+ which enabled a diagnostic, originally of type ORIG_DIAG_KIND but
+ possibly converted to DIAG_KIND by options such as -Werror.
+ May return NULL if no name is to be printed.
+ May be passed 0 as well as the index of a particular option. */
+ virtual char *make_option_name (option_id opt_id,
+ enum kind orig_diag_kind,
+ enum kind diag_kind) const = 0;
+
+ /* Return malloced memory for a URL describing the option that controls
+ a diagnostic.
+ May return NULL if no URL is available.
+ May be passed 0 as well as the index of a particular option. */
+ virtual char *make_option_url (option_id opt_id) const = 0;
+};
+
+} // namespace diagnostics
+
+#endif /* ! GCC_DIAGNOSTICS_OPTION_ID_MANAGER_H */
diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc
index cb293f2..03fca97 100644
--- a/gcc/lto-wrapper.cc
+++ b/gcc/lto-wrapper.cc
@@ -2265,13 +2265,14 @@ cont:
obstack_free (&argv_obstack, NULL);
}
-/* Concrete implementation of diagnostic_option_manager for LTO. */
+/* Concrete implementation of diagnostics::option_id_manager for LTO. */
-class lto_diagnostic_option_manager : public gcc_diagnostic_option_manager
+class lto_diagnostic_option_id_manager
+ : public gcc_diagnostic_option_id_manager
{
public:
- lto_diagnostic_option_manager ()
- : gcc_diagnostic_option_manager (0 /* lang_mask */)
+ lto_diagnostic_option_id_manager ()
+ : gcc_diagnostic_option_id_manager (0 /* lang_mask */)
{
}
int option_enabled_p (diagnostics::option_id) const final override
@@ -2307,8 +2308,8 @@ main (int argc, char *argv[])
diagnostic_initialize (global_dc, 0);
diagnostic_color_init (global_dc);
diagnostic_urls_init (global_dc);
- global_dc->set_option_manager
- (::make_unique<lto_diagnostic_option_manager> (), 0);
+ global_dc->set_option_id_manager
+ (::make_unique<lto_diagnostic_option_id_manager> (), 0);
if (atexit (lto_wrapper_cleanup) != 0)
fatal_error (input_location, "%<atexit%> failed");
diff --git a/gcc/opts-common.cc b/gcc/opts-common.cc
index 91cad49..e6d7f4d 100644
--- a/gcc/opts-common.cc
+++ b/gcc/opts-common.cc
@@ -1876,7 +1876,7 @@ option_enabled (int opt_idx, unsigned lang_mask, void *opts)
}
int
-compiler_diagnostic_option_manager::
+compiler_diagnostic_option_id_manager::
option_enabled_p (diagnostics::option_id opt_id) const
{
return option_enabled (opt_id.m_idx, m_lang_mask, m_opts);
diff --git a/gcc/opts-diagnostic.h b/gcc/opts-diagnostic.h
index 4fa4ea8..25ade86 100644
--- a/gcc/opts-diagnostic.h
+++ b/gcc/opts-diagnostic.h
@@ -20,30 +20,31 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_OPTS_DIAGNOSTIC_H
#define GCC_OPTS_DIAGNOSTIC_H
-/* Abstract subclass of diagnostics::option_manager for gcc options. */
+/* Abstract subclass of diagnostics::option_id_manager for gcc options. */
-class gcc_diagnostic_option_manager : public diagnostics::option_manager
+class gcc_diagnostic_option_id_manager : public diagnostics::option_id_manager
{
public:
char *make_option_url (diagnostics::option_id option_id) const final override;
protected:
- gcc_diagnostic_option_manager (unsigned lang_mask)
+ gcc_diagnostic_option_id_manager (unsigned lang_mask)
: m_lang_mask (lang_mask)
{}
unsigned m_lang_mask;
};
-/* Concrete implementation of diagnostic_option_manager for compiler. */
+/* Concrete implementation of diagnostics::option_id_manager for compiler. */
-class compiler_diagnostic_option_manager : public gcc_diagnostic_option_manager
+class compiler_diagnostic_option_id_manager
+ : public gcc_diagnostic_option_id_manager
{
public:
- compiler_diagnostic_option_manager (const diagnostics::context &context,
- unsigned lang_mask,
- void *opts)
- : gcc_diagnostic_option_manager (lang_mask),
+ compiler_diagnostic_option_id_manager (const diagnostics::context &context,
+ unsigned lang_mask,
+ void *opts)
+ : gcc_diagnostic_option_id_manager (lang_mask),
m_context (context),
m_opts (opts)
{
diff --git a/gcc/opts.cc b/gcc/opts.cc
index c21e66b..b6d25bf 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3744,7 +3744,7 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask,
as -Werror. */
char *
-compiler_diagnostic_option_manager::
+compiler_diagnostic_option_id_manager::
make_option_name (diagnostics::option_id option_id,
enum diagnostics::kind orig_diag_kind,
enum diagnostics::kind diag_kind) const
@@ -3823,7 +3823,7 @@ get_option_url_suffix (int option_index, unsigned lang_mask)
which enabled a diagnostic. */
char *
-gcc_diagnostic_option_manager::
+gcc_diagnostic_option_id_manager::
make_option_url (diagnostics::option_id option_id) const
{
if (option_id.m_idx)
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 70dbb3e..d349d83 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1096,10 +1096,10 @@ general_init (const char *argv0, bool init_signals, unique_argv original_argv)
(global_options_init.x_flag_diagnostics_show_highlight_colors);
global_dc->set_internal_error_callback (internal_error_function);
const unsigned lang_mask = lang_hooks.option_lang_mask ();
- global_dc->set_option_manager
- (std::make_unique<compiler_diagnostic_option_manager> (*global_dc,
- lang_mask,
- &global_options),
+ global_dc->set_option_id_manager
+ (std::make_unique<compiler_diagnostic_option_id_manager> (*global_dc,
+ lang_mask,
+ &global_options),
lang_mask);
global_dc->push_owned_urlifier (make_gcc_urlifier (lang_mask));