https://gcc.gnu.org/g:e8c39611c61886dbbdb831163b5fcad6f5578dfa
commit r16-2543-ge8c39611c61886dbbdb831163b5fcad6f5578dfa Author: David Malcolm <dmalc...@redhat.com> Date: Fri Jul 25 15:13:42 2025 -0400 diagnostics: rename diagnostic_option_id to diagnostics::option_id and move to its own header No functional change intended. gcc/c-family/ChangeLog: * c-common.cc: Update for renaming of diagnostic_option_id to diagnostics::option_id. * c-common.h: Likewise. * c-cppbuiltin.cc: Likewise. * known-headers.cc: Likewise. * known-headers.h: Likewise. gcc/c/ChangeLog: * c-decl.cc: Update for renaming of diagnostic_option_id to diagnostics::option_id. * c-errors.cc: Likewise. * c-tree.h: Likewise. gcc/cobol/ChangeLog: * util.cc: Update for renaming of diagnostic_option_id to diagnostics::option_id. gcc/cp/ChangeLog: * cp-tree.h: Update for renaming of diagnostic_option_id to diagnostics::option_id. * decl.cc: Likewise. * error.cc: Likewise. * name-lookup.cc: Likewise. gcc/ChangeLog: * diagnostic-core.h: Include "diagnostics/option-id.h". (struct diagnostic_option_id): Move there, renaming to diagnostics::option_id. * diagnostic-global-context.cc: Update for renaming of diagnostic_option_id to diagnostics::option_id. * diagnostic.cc: Likewise. * diagnostic.h: Likewise. * diagnostics/context.h: Likewise. * diagnostics/diagnostic-info.h: Likewise. * diagnostics/lazy-paths.cc: Likewise. * diagnostics/option-classifier.cc: Likewise. * diagnostics/option-classifier.h: Likewise. * diagnostics/option-id.h: New file, taken from material in diagnostic-core.h. * diagnostics/selftest-context.cc: Update for renaming of diagnostic_option_id to diagnostics::option_id. * diagnostics/selftest-context.h: Likewise. * ipa-pure-const.cc: Likewise. * lto-wrapper.cc: Likewise. * opts-common.cc: Likewise. * opts-diagnostic.h: Likewise. * opts.cc: Likewise. * substring-locations.cc: Likewise. * substring-locations.h: Likewise. gcc/fortran/ChangeLog: * cpp.cc: Update for renaming of diagnostic_option_id to diagnostics::option_id. Signed-off-by: David Malcolm <dmalc...@redhat.com> Diff: --- gcc/c-family/c-common.cc | 2 +- gcc/c-family/c-common.h | 2 +- gcc/c-family/c-cppbuiltin.cc | 2 +- gcc/c-family/known-headers.cc | 7 ++--- gcc/c-family/known-headers.h | 4 +-- gcc/c/c-decl.cc | 2 +- gcc/c/c-errors.cc | 8 +++--- gcc/c/c-tree.h | 8 +++--- gcc/cobol/util.cc | 2 +- gcc/cp/cp-tree.h | 2 +- gcc/cp/decl.cc | 2 +- gcc/cp/error.cc | 2 +- gcc/cp/name-lookup.cc | 2 +- gcc/diagnostic-core.h | 50 +++++++++++------------------------- gcc/diagnostic-global-context.cc | 28 ++++++++++---------- gcc/diagnostic.cc | 24 ++++++++--------- gcc/diagnostic.h | 16 ++++++------ gcc/diagnostics/context.h | 44 +++++++++++++++---------------- gcc/diagnostics/diagnostic-info.h | 2 +- gcc/diagnostics/lazy-paths.cc | 12 ++++----- gcc/diagnostics/option-classifier.cc | 22 ++++++++-------- gcc/diagnostics/option-classifier.h | 12 ++++----- gcc/diagnostics/option-id.h | 49 +++++++++++++++++++++++++++++++++++ gcc/diagnostics/selftest-context.cc | 4 +-- gcc/diagnostics/selftest-context.h | 2 +- gcc/fortran/cpp.cc | 2 +- gcc/ipa-pure-const.cc | 2 +- gcc/lto-wrapper.cc | 4 +-- gcc/opts-common.cc | 2 +- gcc/opts-diagnostic.h | 6 ++--- gcc/opts.cc | 4 +-- gcc/substring-locations.cc | 8 +++--- gcc/substring-locations.h | 8 +++--- 33 files changed, 188 insertions(+), 158 deletions(-) diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc index 5b61b381741e..5e9fa659bed8 100644 --- a/gcc/c-family/c-common.cc +++ b/gcc/c-family/c-common.cc @@ -7025,7 +7025,7 @@ c_parse_error (const char *gmsgid, enum cpp_ttype token_type, /* Return the gcc option code associated with the reason for a cpp message, or 0 if none. */ -static diagnostic_option_id +static diagnostics::option_id c_option_controlling_cpp_diagnostic (enum cpp_warning_reason reason) { const struct cpp_reason_option_codes_t *entry; diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index 40b97e2d90e4..ed59801a725d 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -1265,7 +1265,7 @@ extern void c_stddef_cpp_builtins (void); extern void fe_file_change (const line_map_ordinary *); extern void c_parse_error (const char *, enum cpp_ttype, tree, unsigned char, rich_location *richloc); -extern diagnostic_option_id get_option_for_builtin_define (const char *macro_name); +extern diagnostics::option_id get_option_for_builtin_define (const char *macro_name); /* In c-ppoutput.cc */ extern void init_pp_output (FILE *); diff --git a/gcc/c-family/c-cppbuiltin.cc b/gcc/c-family/c-cppbuiltin.cc index 2f86b1fe0228..4aea90288631 100644 --- a/gcc/c-family/c-cppbuiltin.cc +++ b/gcc/c-family/c-cppbuiltin.cc @@ -1681,7 +1681,7 @@ c_cpp_builtins (cpp_reader *pfile) /* Given NAME, return the command-line option that would make it be a builtin define, or 0 if unrecognized. */ -diagnostic_option_id +diagnostics::option_id get_option_for_builtin_define (const char *name) { if (!strcmp (name, "_OPENACC")) diff --git a/gcc/c-family/known-headers.cc b/gcc/c-family/known-headers.cc index 7e0fa95a89d0..e3c011306399 100644 --- a/gcc/c-family/known-headers.cc +++ b/gcc/c-family/known-headers.cc @@ -329,9 +329,10 @@ suggest_missing_header::~suggest_missing_header () /* suggest_missing_option's ctor. */ -suggest_missing_option::suggest_missing_option (location_t loc, - const char *macro_name, - diagnostic_option_id option_id) +suggest_missing_option:: +suggest_missing_option (location_t loc, + const char *macro_name, + diagnostics::option_id option_id) : deferred_diagnostic (loc), m_name_str (macro_name), m_option_id (option_id) { gcc_assert (macro_name); diff --git a/gcc/c-family/known-headers.h b/gcc/c-family/known-headers.h index b1da757f6035..3ffe5f364ced 100644 --- a/gcc/c-family/known-headers.h +++ b/gcc/c-family/known-headers.h @@ -48,12 +48,12 @@ class suggest_missing_option : public deferred_diagnostic { public: suggest_missing_option (location_t loc, const char *name, - diagnostic_option_id option_id); + diagnostics::option_id option_id); ~suggest_missing_option (); private: const char *m_name_str; - diagnostic_option_id m_option_id; + diagnostics::option_id m_option_id; }; #endif /* GCC_KNOWN_HEADERS_H */ diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index acbe2b88e674..4bef43864a1f 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -4556,7 +4556,7 @@ lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind, location_t loc) /* Next, look for exact matches for builtin defines that would have been defined if the user had passed a command-line option (e.g. -fopenmp for "_OPENMP"). */ - diagnostic_option_id option_id + diagnostics::option_id option_id = get_option_for_builtin_define (IDENTIFIER_POINTER (name)); if (option_id.m_idx > 0) return name_hint diff --git a/gcc/c/c-errors.cc b/gcc/c/c-errors.cc index be3ad3d5cf1e..e91cafba56be 100644 --- a/gcc/c/c-errors.cc +++ b/gcc/c/c-errors.cc @@ -33,7 +33,7 @@ along with GCC; see the file COPYING3. If not see bool pedwarn_c23 (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { diagnostic_info diagnostic; @@ -77,7 +77,7 @@ pedwarn_c23 (location_t location, bool pedwarn_c11 (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { diagnostic_info diagnostic; @@ -122,7 +122,7 @@ pedwarn_c11 (location_t location, bool pedwarn_c99 (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { diagnostic_info diagnostic; @@ -164,7 +164,7 @@ pedwarn_c99 (location_t location, bool pedwarn_c90 (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { diagnostic_info diagnostic; diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h index 27a69ae2d8ba..bb0b113754e5 100644 --- a/gcc/c/c-tree.h +++ b/gcc/c/c-tree.h @@ -960,13 +960,13 @@ extern void c_bind (location_t, tree, bool); extern bool tag_exists_p (enum tree_code, tree); /* In c-errors.cc */ -extern bool pedwarn_c90 (location_t, diagnostic_option_id, const char *, ...) +extern bool pedwarn_c90 (location_t, diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); -extern bool pedwarn_c99 (location_t, diagnostic_option_id, const char *, ...) +extern bool pedwarn_c99 (location_t, diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); -extern bool pedwarn_c11 (location_t, diagnostic_option_id, const char *, ...) +extern bool pedwarn_c11 (location_t, diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); -extern bool pedwarn_c23 (location_t, diagnostic_option_id, const char *, ...) +extern bool pedwarn_c23 (location_t, diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern void add_note_about_new_keyword (location_t loc, tree keyword_id); diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc index ca53b2626897..81864100eaac 100644 --- a/gcc/cobol/util.cc +++ b/gcc/cobol/util.cc @@ -2149,7 +2149,7 @@ verify_format( const char gmsgid[] ) { } #endif -static const diagnostic_option_id option_zero; +static const diagnostics::option_id option_zero; size_t parse_error_inc(); void gcc_location_dump() { diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 150d921bee79..bafda3b38ccf 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -7455,7 +7455,7 @@ extern void maybe_warn_variadic_templates (void); extern void maybe_warn_cpp0x (cpp0x_warn_str str, location_t = input_location); extern bool pedwarn_cxx98 (location_t, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern location_t location_of (tree); extern void qualified_name_lookup_error (tree, tree, tree, diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index 0ac92f84b0e9..82af7100c5c9 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -11288,7 +11288,7 @@ grokfndecl (tree ctype, has_errored = true; emit_diagnostic (diag_kind, DECL_SOURCE_LOCATION (decl), - /*diagnostic_option_id=*/0, + /*diagnostics::option_id=*/0, "friend declaration of %qD specifies default " "arguments and isn%'t a definition", decl); } diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc index c4323889c249..f40f35781eb6 100644 --- a/gcc/cp/error.cc +++ b/gcc/cp/error.cc @@ -4929,7 +4929,7 @@ maybe_warn_variadic_templates (void) C++0x. */ bool pedwarn_cxx98 (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { diagnostic_info diagnostic; diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc index 9aa7c16f64b4..f5b36c954e13 100644 --- a/gcc/cp/name-lookup.cc +++ b/gcc/cp/name-lookup.cc @@ -7195,7 +7195,7 @@ suggest_alternatives_for_1 (location_t location, tree name, /* Look for exact matches for builtin defines that would have been defined if the user had passed a command-line option (e.g. -fopenmp for "_OPENMP"). */ - diagnostic_option_id option_id + diagnostics::option_id option_id = get_option_for_builtin_define (IDENTIFIER_POINTER (name)); if (option_id.m_idx > 0) return name_hint diff --git a/gcc/diagnostic-core.h b/gcc/diagnostic-core.h index 0132e955e061..64377279b356 100644 --- a/gcc/diagnostic-core.h +++ b/gcc/diagnostic-core.h @@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see #define GCC_DIAGNOSTIC_CORE_H #include "bversion.h" +#include "diagnostics/option-id.h" /* Constants used to discriminate diagnostics. */ typedef enum @@ -65,27 +66,6 @@ namespace diagnostics { class metadata; /* See diagnostics/metadata.h. */ } // namespace diagnostics -/* A class to use for the ID of an option that controls - a particular diagnostic. - This is just a wrapper around "int", but better documents - the intent of the code. */ - -struct diagnostic_option_id -{ - diagnostic_option_id () : m_idx (0) {} - - diagnostic_option_id (int idx) : m_idx (idx) {} - /* Ideally we'd take an enum opt_code here, but we don't - want to depend on its decl. */ - - bool operator== (diagnostic_option_id other) const - { - return m_idx == other.m_idx; - } - - int m_idx; -}; - extern const char *progname; extern const char *trim_filename (const char *); @@ -111,29 +91,29 @@ extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2) extern void internal_error_no_backtrace (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2) ATTRIBUTE_NORETURN; /* Pass one of the OPT_W* from options.h as the first parameter. */ -extern bool warning (diagnostic_option_id, +extern bool warning (diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); extern bool warning_n (location_t, - diagnostic_option_id, + diagnostics::option_id, unsigned HOST_WIDE_INT, const char *, const char *, ...) ATTRIBUTE_GCC_DIAG(4,6) ATTRIBUTE_GCC_DIAG(5,6); extern bool warning_n (rich_location *, - diagnostic_option_id, + diagnostics::option_id, unsigned HOST_WIDE_INT, const char *, const char *, ...) ATTRIBUTE_GCC_DIAG(4, 6) ATTRIBUTE_GCC_DIAG(5, 6); extern bool warning_at (location_t, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern bool warning_at (rich_location *, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern bool warning_meta (rich_location *, const diagnostics::metadata &, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(4,5); extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2); @@ -150,22 +130,22 @@ extern void fatal_error (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3) ATTRIBUTE_NORETURN; /* Pass one of the OPT_W* from options.h as the second parameter. */ extern bool pedwarn (location_t, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern bool pedwarn (rich_location *, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); extern bool permerror (rich_location *, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); extern bool permerror_opt (location_t, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern bool permerror_opt (rich_location *, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2); @@ -178,21 +158,21 @@ extern void inform_n (location_t, unsigned HOST_WIDE_INT, const char *, extern void verbatim (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2); extern bool emit_diagnostic (diagnostic_t, location_t, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(4,5); extern bool emit_diagnostic (diagnostic_t, rich_location *, - diagnostic_option_id, + diagnostics::option_id, const char *, ...) ATTRIBUTE_GCC_DIAG(4,5); extern bool emit_diagnostic_valist (diagnostic_t, location_t, - diagnostic_option_id, + diagnostics::option_id, const char *, va_list *) ATTRIBUTE_GCC_DIAG (4,0); extern bool emit_diagnostic_valist_meta (diagnostic_t, rich_location *, const diagnostics::metadata *, - diagnostic_option_id, + diagnostics::option_id, const char *, va_list *) ATTRIBUTE_GCC_DIAG (5,0); extern bool seen_error (void); diff --git a/gcc/diagnostic-global-context.cc b/gcc/diagnostic-global-context.cc index 84b606d9943f..c53af2e8c1f6 100644 --- a/gcc/diagnostic-global-context.cc +++ b/gcc/diagnostic-global-context.cc @@ -55,7 +55,7 @@ verbatim (const char *gmsgid, ...) bool emit_diagnostic (diagnostic_t kind, location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { auto_diagnostic_group d; @@ -73,7 +73,7 @@ emit_diagnostic (diagnostic_t kind, bool emit_diagnostic (diagnostic_t kind, rich_location *richloc, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { auto_diagnostic_group d; @@ -90,7 +90,7 @@ emit_diagnostic (diagnostic_t kind, bool emit_diagnostic_valist (diagnostic_t kind, location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, va_list *ap) { rich_location richloc (line_table, location); @@ -104,7 +104,7 @@ bool emit_diagnostic_valist_meta (diagnostic_t kind, rich_location *richloc, const diagnostics::metadata *metadata, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, va_list *ap) { return global_dc->diagnostic_impl (richloc, metadata, option_id, @@ -157,7 +157,7 @@ inform_n (location_t location, unsigned HOST_WIDE_INT n, to the relevant language specification but is likely to be buggy anyway. Returns true if the warning was printed, false if it was inhibited. */ bool -warning (diagnostic_option_id option_id, const char *gmsgid, ...) +warning (diagnostics::option_id option_id, const char *gmsgid, ...) { auto_diagnostic_group d; va_list ap; @@ -175,7 +175,7 @@ warning (diagnostic_option_id option_id, const char *gmsgid, ...) bool warning_at (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { auto_diagnostic_group d; @@ -192,7 +192,7 @@ warning_at (location_t location, bool warning_at (rich_location *richloc, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { gcc_assert (richloc); @@ -211,7 +211,7 @@ warning_at (rich_location *richloc, bool warning_meta (rich_location *richloc, const diagnostics::metadata &metadata, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { gcc_assert (richloc); @@ -229,7 +229,7 @@ warning_meta (rich_location *richloc, bool warning_n (rich_location *richloc, - diagnostic_option_id option_id, + diagnostics::option_id option_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, ...) { @@ -251,7 +251,7 @@ warning_n (rich_location *richloc, bool warning_n (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, ...) { @@ -281,7 +281,7 @@ warning_n (location_t location, bool pedwarn (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { auto_diagnostic_group d; @@ -298,7 +298,7 @@ pedwarn (location_t location, bool pedwarn (rich_location *richloc, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { gcc_assert (richloc); @@ -354,7 +354,7 @@ permerror (rich_location *richloc, const char *gmsgid, ...) bool permerror_opt (location_t location, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { auto_diagnostic_group d; @@ -371,7 +371,7 @@ permerror_opt (location_t location, bool permerror_opt (rich_location *richloc, - diagnostic_option_id option_id, + diagnostics::option_id option_id, const char *gmsgid, ...) { gcc_assert (richloc); diff --git a/gcc/diagnostic.cc b/gcc/diagnostic.cc index 382272e63dbc..86dffdd1e320 100644 --- a/gcc/diagnostic.cc +++ b/gcc/diagnostic.cc @@ -1152,18 +1152,18 @@ diagnostics::context::diagnostic_enabled (diagnostic_info *diagnostic) return true; } -/* Returns whether warning OPTION_ID is enabled at LOC. */ +/* Returns whether warning OPT_ID is enabled at LOC. */ bool diagnostics::context::warning_enabled_at (location_t loc, - diagnostic_option_id option_id) + diagnostics::option_id opt_id) { if (!diagnostic_report_warnings_p (this, loc)) return false; rich_location richloc (line_table, loc); diagnostic_info diagnostic = {}; - diagnostic.m_option_id = option_id; + diagnostic.m_option_id = opt_id; diagnostic.m_richloc = &richloc; diagnostic.m_message.m_richloc = &richloc; diagnostic.m_kind = DK_WARNING; @@ -1177,14 +1177,14 @@ diagnostics::context:: emit_diagnostic_with_group (diagnostic_t kind, rich_location &richloc, const diagnostics::metadata *metadata, - diagnostic_option_id option_id, + diagnostics::option_id opt_id, const char *gmsgid, ...) { begin_group (); va_list ap; va_start (ap, gmsgid); - bool ret = emit_diagnostic_with_group_va (kind, richloc, metadata, option_id, + bool ret = emit_diagnostic_with_group_va (kind, richloc, metadata, opt_id, gmsgid, &ap); va_end (ap); @@ -1200,12 +1200,12 @@ diagnostics::context:: emit_diagnostic_with_group_va (diagnostic_t kind, rich_location &richloc, const diagnostics::metadata *metadata, - diagnostic_option_id option_id, + diagnostics::option_id opt_id, const char *gmsgid, va_list *ap) { begin_group (); - bool ret = diagnostic_impl (&richloc, metadata, option_id, + bool ret = diagnostic_impl (&richloc, metadata, opt_id, gmsgid, ap, kind); end_group (); @@ -1493,7 +1493,7 @@ trim_filename (const char *name) bool diagnostics::context::diagnostic_impl (rich_location *richloc, const diagnostics::metadata *metadata, - diagnostic_option_id option_id, + diagnostics::option_id opt_id, const char *gmsgid, va_list *ap, diagnostic_t kind) { @@ -1502,13 +1502,13 @@ diagnostics::context::diagnostic_impl (rich_location *richloc, { diagnostic_set_info (&diagnostic, gmsgid, ap, richloc, m_permissive ? DK_WARNING : DK_ERROR); - diagnostic.m_option_id = (option_id.m_idx != -1 ? option_id : m_opt_permissive); + diagnostic.m_option_id = (opt_id.m_idx != -1 ? opt_id : m_opt_permissive); } else { diagnostic_set_info (&diagnostic, gmsgid, ap, richloc, kind); if (kind == DK_WARNING || kind == DK_PEDWARN) - diagnostic.m_option_id = option_id; + diagnostic.m_option_id = opt_id; } diagnostic.m_metadata = metadata; return report_diagnostic (&diagnostic); @@ -1519,7 +1519,7 @@ diagnostics::context::diagnostic_impl (rich_location *richloc, bool diagnostics::context::diagnostic_n_impl (rich_location *richloc, const diagnostics::metadata *metadata, - diagnostic_option_id option_id, + diagnostics::option_id opt_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, @@ -1539,7 +1539,7 @@ diagnostics::context::diagnostic_n_impl (rich_location *richloc, const char *text = ngettext (singular_gmsgid, plural_gmsgid, gtn); diagnostic_set_info_translated (&diagnostic, text, ap, richloc, kind); if (kind == DK_WARNING) - diagnostic.m_option_id = option_id; + diagnostic.m_option_id = opt_id; diagnostic.m_metadata = metadata; return report_diagnostic (&diagnostic); } diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index 76d74c80d4b3..69bc798c9b18 100644 --- a/gcc/diagnostic.h +++ b/gcc/diagnostic.h @@ -185,9 +185,9 @@ extern diagnostics::context *global_dc; inline void diagnostic_set_option_id (diagnostic_info *info, - diagnostic_option_id option_id) + diagnostics::option_id opt_id) { - info->m_option_id = option_id; + info->m_option_id = opt_id; } /* Diagnostic related functions. */ @@ -271,11 +271,11 @@ diagnostic_initialize_input_context (diagnostics::context *context, /* Force diagnostics controlled by OPTIDX to be kind KIND. */ inline diagnostic_t diagnostic_classify_diagnostic (diagnostics::context *context, - diagnostic_option_id option_id, + diagnostics::option_id opt_id, diagnostic_t kind, location_t where) { - return context->classify_diagnostic (option_id, kind, where); + return context->classify_diagnostic (opt_id, kind, where); } inline void @@ -389,15 +389,15 @@ extern char *build_message_string (const char *, ...) ATTRIBUTE_PRINTF_1; extern int num_digits (int); inline bool -warning_enabled_at (location_t loc, diagnostic_option_id option_id) +warning_enabled_at (location_t loc, diagnostics::option_id opt_id) { - return global_dc->warning_enabled_at (loc, option_id); + return global_dc->warning_enabled_at (loc, opt_id); } inline bool -option_unspecified_p (diagnostic_option_id option_id) +option_unspecified_p (diagnostics::option_id opt_id) { - return global_dc->option_unspecified_p (option_id); + return global_dc->option_unspecified_p (opt_id); } extern char *get_cwe_url (int cwe); diff --git a/gcc/diagnostics/context.h b/gcc/diagnostics/context.h index 7590c3307fc8..78663cdf1e56 100644 --- a/gcc/diagnostics/context.h +++ b/gcc/diagnostics/context.h @@ -56,17 +56,17 @@ class option_manager public: virtual ~option_manager () {} - /* Return 1 if option OPTION_ID is enabled, 0 if it is disabled, + /* 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 (diagnostic_option_id option_id) const = 0; + virtual int option_enabled_p (option_id opt_id) const = 0; - /* Return malloced memory for the name of the option OPTION_ID + /* 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 (diagnostic_option_id option_id, + virtual char *make_option_name (option_id opt_id, diagnostic_t orig_diag_kind, diagnostic_t diag_kind) const = 0; @@ -74,7 +74,7 @@ public: 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 (diagnostic_option_id option_id) const = 0; + virtual char *make_option_url (option_id opt_id) const = 0; }; /* A bundle of options relating to printing the user's source code @@ -363,23 +363,23 @@ public: void push_nesting_level (); void pop_nesting_level (); - bool warning_enabled_at (location_t loc, diagnostic_option_id option_id); + bool warning_enabled_at (location_t loc, option_id opt_id); - bool option_unspecified_p (diagnostic_option_id option_id) const + bool option_unspecified_p (option_id opt_id) const { - return m_option_classifier.option_unspecified_p (option_id); + return m_option_classifier.option_unspecified_p (opt_id); } bool emit_diagnostic_with_group (diagnostic_t kind, rich_location &richloc, const metadata *metadata, - diagnostic_option_id option_id, + option_id opt_id, const char *gmsgid, ...) ATTRIBUTE_GCC_DIAG(6,7); bool emit_diagnostic_with_group_va (diagnostic_t kind, rich_location &richloc, const metadata *metadata, - diagnostic_option_id option_id, + option_id opt_id, const char *gmsgid, va_list *ap) ATTRIBUTE_GCC_DIAG(6,0); @@ -392,12 +392,12 @@ public: report_global_digraph (const digraphs::lazy_digraph &); diagnostic_t - classify_diagnostic (diagnostic_option_id option_id, + classify_diagnostic (option_id opt_id, diagnostic_t new_kind, location_t where) { return m_option_classifier.classify_diagnostic (this, - option_id, + opt_id, new_kind, where); } @@ -508,29 +508,29 @@ public: } /* Option-related member functions. */ - inline bool option_enabled_p (diagnostic_option_id option_id) const + inline bool option_enabled_p (option_id opt_id) const { if (!m_option_mgr) return true; - return m_option_mgr->option_enabled_p (option_id); + return m_option_mgr->option_enabled_p (opt_id); } - inline char *make_option_name (diagnostic_option_id option_id, + inline char *make_option_name (option_id opt_id, diagnostic_t orig_diag_kind, diagnostic_t diag_kind) const { if (!m_option_mgr) return nullptr; - return m_option_mgr->make_option_name (option_id, + return m_option_mgr->make_option_name (opt_id, orig_diag_kind, diag_kind); } - inline char *make_option_url (diagnostic_option_id option_id) const + inline char *make_option_url (option_id opt_id) const { if (!m_option_mgr) return nullptr; - return m_option_mgr->make_option_url (option_id); + return m_option_mgr->make_option_url (opt_id); } void @@ -543,10 +543,10 @@ public: } bool diagnostic_impl (rich_location *, const metadata *, - diagnostic_option_id, const char *, + option_id, const char *, va_list *, diagnostic_t) ATTRIBUTE_GCC_DIAG(5,0); bool diagnostic_n_impl (rich_location *, const metadata *, - diagnostic_option_id, unsigned HOST_WIDE_INT, + option_id, unsigned HOST_WIDE_INT, const char *, const char *, va_list *, diagnostic_t) ATTRIBUTE_GCC_DIAG(7,0); @@ -612,7 +612,7 @@ public: void set_main_input_filename (const char *filename); void - set_permissive_option (diagnostic_option_id opt_permissive) + set_permissive_option (option_id opt_permissive) { m_opt_permissive = opt_permissive; } @@ -713,7 +713,7 @@ public: private: /* The option to associate with turning permerrors into warnings, if any. */ - diagnostic_option_id m_opt_permissive; + option_id m_opt_permissive; /* True if errors are fatal. */ bool m_fatal_errors; diff --git a/gcc/diagnostics/diagnostic-info.h b/gcc/diagnostics/diagnostic-info.h index f8107b1b2029..621f95a856a6 100644 --- a/gcc/diagnostics/diagnostic-info.h +++ b/gcc/diagnostics/diagnostic-info.h @@ -55,7 +55,7 @@ struct diagnostic_info /* The kind of diagnostic it is about. */ diagnostic_t m_kind; /* Which OPT_* directly controls this diagnostic. */ - diagnostic_option_id m_option_id; + option_id m_option_id; /* Inlining context containing locations for each call site along the inlining stack. */ diff --git a/gcc/diagnostics/lazy-paths.cc b/gcc/diagnostics/lazy-paths.cc index 6aaae7b0f983..216ad744a3b7 100644 --- a/gcc/diagnostics/lazy-paths.cc +++ b/gcc/diagnostics/lazy-paths.cc @@ -127,24 +127,24 @@ test_intraprocedural_path (pretty_printer *event_pp) /* Implementation of diagnostics::option_manager for which all options are disabled, for use in selftests. - Note that this is *not* called for diagnostic_option_id (0), which + Note that this is *not* called for option_id (0), which means "always warn" */ class all_warnings_disabled : public diagnostics::option_manager { public: - int option_enabled_p (diagnostic_option_id) const final override + int option_enabled_p (diagnostics::option_id) const final override { /* Treat all options as disabled. */ return 0; } - char *make_option_name (diagnostic_option_id, + char *make_option_name (diagnostics::option_id, diagnostic_t, diagnostic_t) const final override { return nullptr; } - char *make_option_url (diagnostic_option_id) const final override + char *make_option_url (diagnostics::option_id) const final override { return nullptr; } @@ -173,10 +173,10 @@ test_emission (pretty_printer *event_pp) test_rich_location rich_loc (*event_pp); ASSERT_FALSE (rich_loc.m_path.generated_p ()); - diagnostic_option_id option_id (42); // has to be non-zero + diagnostics::option_id opt_id (42); // has to be non-zero bool emitted = dc.emit_diagnostic_with_group (DK_WARNING, rich_loc, nullptr, - option_id, + opt_id, "this warning should be skipped"); ASSERT_FALSE (emitted); ASSERT_FALSE (rich_loc.m_path.generated_p ()); diff --git a/gcc/diagnostics/option-classifier.cc b/gcc/diagnostics/option-classifier.cc index 77bce36a7302..d3f0985d4647 100644 --- a/gcc/diagnostics/option-classifier.cc +++ b/gcc/diagnostics/option-classifier.cc @@ -122,18 +122,18 @@ option_classifier::pop (location_t where) diagnostic_t option_classifier::classify_diagnostic (const context *dc, - diagnostic_option_id option_id, + option_id opt_id, diagnostic_t new_kind, location_t where) { diagnostic_t old_kind; - if (option_id.m_idx < 0 - || option_id.m_idx >= m_n_opts + if (opt_id.m_idx < 0 + || opt_id.m_idx >= m_n_opts || new_kind >= DK_LAST_DIAGNOSTIC_KIND) return DK_UNSPECIFIED; - old_kind = m_classify_diagnostic[option_id.m_idx]; + old_kind = m_classify_diagnostic[opt_id.m_idx]; /* Handle pragmas separately, since we need to keep track of *where* the pragmas were. */ @@ -144,25 +144,25 @@ option_classifier::classify_diagnostic (const context *dc, /* Record the command-line status, so we can reset it back on DK_POP. */ if (old_kind == DK_UNSPECIFIED) { - old_kind = (!dc->option_enabled_p (option_id) + old_kind = (!dc->option_enabled_p (opt_id) ? DK_IGNORED : DK_ANY); - m_classify_diagnostic[option_id.m_idx] = old_kind; + m_classify_diagnostic[opt_id.m_idx] = old_kind; } classification_change_t *p; FOR_EACH_VEC_ELT_REVERSE (m_classification_history, i, p) - if (p->option == option_id.m_idx) + if (p->option == opt_id.m_idx) { old_kind = p->kind; break; } classification_change_t v - = { where, option_id.m_idx, new_kind }; + = { where, opt_id.m_idx, new_kind }; m_classification_history.safe_push (v); } else - m_classify_diagnostic[option_id.m_idx] = new_kind; + m_classify_diagnostic[opt_id.m_idx] = new_kind; return old_kind; } @@ -204,9 +204,9 @@ update_effective_level_from_pragmas (diagnostic_info *diagnostic) const continue; } - diagnostic_option_id option = p->option; + option_id opt_id = p->option; /* The option 0 is for all the diagnostics. */ - if (option == 0 || option == diagnostic->m_option_id) + if (opt_id == 0 || opt_id == diagnostic->m_option_id) { diagnostic_t kind = p->kind; if (kind != DK_UNSPECIFIED) diff --git a/gcc/diagnostics/option-classifier.h b/gcc/diagnostics/option-classifier.h index 809449ee71c9..045d18925d07 100644 --- a/gcc/diagnostics/option-classifier.h +++ b/gcc/diagnostics/option-classifier.h @@ -42,20 +42,20 @@ public: is empty, revert to the state based on command line parameters. */ void pop (location_t where); - bool option_unspecified_p (diagnostic_option_id option_id) const + bool option_unspecified_p (option_id opt_id) const { - return get_current_override (option_id) == DK_UNSPECIFIED; + return get_current_override (opt_id) == DK_UNSPECIFIED; } - diagnostic_t get_current_override (diagnostic_option_id option_id) const + diagnostic_t get_current_override (option_id opt_id) const { - gcc_assert (option_id.m_idx < m_n_opts); - return m_classify_diagnostic[option_id.m_idx]; + gcc_assert (opt_id.m_idx < m_n_opts); + return m_classify_diagnostic[opt_id.m_idx]; } diagnostic_t classify_diagnostic (const context *context, - diagnostic_option_id option_id, + option_id opt_id, diagnostic_t new_kind, location_t where); diff --git a/gcc/diagnostics/option-id.h b/gcc/diagnostics/option-id.h new file mode 100644 index 000000000000..4132775bb837 --- /dev/null +++ b/gcc/diagnostics/option-id.h @@ -0,0 +1,49 @@ +/* Declaration of struct diagnostics::option_id. + Copyright (C) 2024-2025 Free Software Foundation, Inc. + Contributed by David Malcolm <dmalc...@redhat.com>. + +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_H +#define GCC_DIAGNOSTICS_OPTION_ID_H + +namespace diagnostics { + +/* A class to use for the ID of an option that controls + a particular diagnostic. + This is just a wrapper around "int", but better documents + the intent of the code. */ + +struct option_id +{ + option_id () : m_idx (0) {} + + option_id (int idx) : m_idx (idx) {} + /* Ideally we'd take an enum opt_code here, but we don't + want to depend on its decl. */ + + bool operator== (option_id other) const + { + return m_idx == other.m_idx; + } + + int m_idx; +}; + +} // namespace diagnostics + +#endif /* ! GCC_DIAGNOSTICS_OPTION_ID_H */ diff --git a/gcc/diagnostics/selftest-context.cc b/gcc/diagnostics/selftest-context.cc index 5dd7364053be..880c169fa861 100644 --- a/gcc/diagnostics/selftest-context.cc +++ b/gcc/diagnostics/selftest-context.cc @@ -71,13 +71,13 @@ bool test_context::report (diagnostic_t kind, rich_location &richloc, const metadata *metadata_, - diagnostic_option_id option, + option_id opt_id, const char * fmt, ...) { va_list ap; va_start (ap, fmt); begin_group (); - bool result = diagnostic_impl (&richloc, metadata_, option, fmt, &ap, kind); + bool result = diagnostic_impl (&richloc, metadata_, opt_id, fmt, &ap, kind); end_group (); va_end (ap); return result; diff --git a/gcc/diagnostics/selftest-context.h b/gcc/diagnostics/selftest-context.h index 2bf07f1ef7c5..e1a96d5ab986 100644 --- a/gcc/diagnostics/selftest-context.h +++ b/gcc/diagnostics/selftest-context.h @@ -51,7 +51,7 @@ class test_context : public context report (diagnostic_t kind, rich_location &richloc, const metadata *, - diagnostic_option_id option, + option_id opt_id, const char * fmt, ...) ATTRIBUTE_GCC_DIAG(6,7); const char *test_show_locus (rich_location &richloc); diff --git a/gcc/fortran/cpp.cc b/gcc/fortran/cpp.cc index 1b7042056460..3e540072a5de 100644 --- a/gcc/fortran/cpp.cc +++ b/gcc/fortran/cpp.cc @@ -1063,7 +1063,7 @@ cb_used_define (cpp_reader *pfile, location_t line ATTRIBUTE_UNUSED, /* Return the gcc option code associated with the reason for a cpp message, or 0 if none. */ -static diagnostic_option_id +static diagnostics::option_id cb_cpp_diagnostic_cpp_option (enum cpp_warning_reason reason) { const struct cpp_reason_option_codes_t *entry; diff --git a/gcc/ipa-pure-const.cc b/gcc/ipa-pure-const.cc index 93297ed6767a..2519fb8a03bd 100644 --- a/gcc/ipa-pure-const.cc +++ b/gcc/ipa-pure-const.cc @@ -200,7 +200,7 @@ function_always_visible_to_compiler_p (tree decl) by the function. */ static hash_set<tree> * -suggest_attribute (diagnostic_option_id option, tree decl, bool known_finite, +suggest_attribute (diagnostics::option_id option, tree decl, bool known_finite, hash_set<tree> *warned_about, const char * attrib_name) { diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc index 27405e8092eb..ad204a778fd2 100644 --- a/gcc/lto-wrapper.cc +++ b/gcc/lto-wrapper.cc @@ -2274,11 +2274,11 @@ public: : gcc_diagnostic_option_manager (0 /* lang_mask */) { } - int option_enabled_p (diagnostic_option_id) const final override + int option_enabled_p (diagnostics::option_id) const final override { return true; } - char *make_option_name (diagnostic_option_id, + char *make_option_name (diagnostics::option_id, diagnostic_t, diagnostic_t) const final override { diff --git a/gcc/opts-common.cc b/gcc/opts-common.cc index 16486e7111cf..ebc23b4b00be 100644 --- a/gcc/opts-common.cc +++ b/gcc/opts-common.cc @@ -1874,7 +1874,7 @@ option_enabled (int opt_idx, unsigned lang_mask, void *opts) int compiler_diagnostic_option_manager:: -option_enabled_p (diagnostic_option_id opt_id) const +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 9b799e4b788a..d6382892a6b6 100644 --- a/gcc/opts-diagnostic.h +++ b/gcc/opts-diagnostic.h @@ -25,7 +25,7 @@ along with GCC; see the file COPYING3. If not see class gcc_diagnostic_option_manager : public diagnostics::option_manager { public: - char *make_option_url (diagnostic_option_id option_id) const final override; + char *make_option_url (diagnostics::option_id option_id) const final override; protected: gcc_diagnostic_option_manager (unsigned lang_mask) @@ -49,8 +49,8 @@ public: { } - int option_enabled_p (diagnostic_option_id option_id) const final override; - char *make_option_name (diagnostic_option_id option_id, + int option_enabled_p (diagnostics::option_id option_id) const final override; + char *make_option_name (diagnostics::option_id option_id, diagnostic_t orig_diag_kind, diagnostic_t diag_kind) const final override; diff --git a/gcc/opts.cc b/gcc/opts.cc index c1183972a5d3..cdf44aed4bb3 100644 --- a/gcc/opts.cc +++ b/gcc/opts.cc @@ -3736,7 +3736,7 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask, char * compiler_diagnostic_option_manager:: -make_option_name (diagnostic_option_id option_id, +make_option_name (diagnostics::option_id option_id, diagnostic_t orig_diag_kind, diagnostic_t diag_kind) const { @@ -3813,7 +3813,7 @@ get_option_url_suffix (int option_index, unsigned lang_mask) char * gcc_diagnostic_option_manager:: -make_option_url (diagnostic_option_id option_id) const +make_option_url (diagnostics::option_id option_id) const { if (option_id.m_idx) { diff --git a/gcc/substring-locations.cc b/gcc/substring-locations.cc index 990a8bd79fe1..59affc60a965 100644 --- a/gcc/substring-locations.cc +++ b/gcc/substring-locations.cc @@ -151,7 +151,7 @@ format_string_diagnostic_t (const substring_loc &fmt_loc, Return true if a warning was emitted, false otherwise. */ bool -format_string_diagnostic_t::emit_warning_n_va (diagnostic_option_id option_id, +format_string_diagnostic_t::emit_warning_n_va (diagnostics::option_id option_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, @@ -248,7 +248,7 @@ format_string_diagnostic_t::emit_warning_n_va (diagnostic_option_id option_id, /* Singular-only version of the above. */ bool -format_string_diagnostic_t::emit_warning_va (diagnostic_option_id option_id, +format_string_diagnostic_t::emit_warning_va (diagnostics::option_id option_id, const char *gmsgid, va_list *ap) const { @@ -258,7 +258,7 @@ format_string_diagnostic_t::emit_warning_va (diagnostic_option_id option_id, /* Variadic version of the above (singular only). */ bool -format_string_diagnostic_t::emit_warning (diagnostic_option_id option_id, +format_string_diagnostic_t::emit_warning (diagnostics::option_id option_id, const char *gmsgid, ...) const { @@ -273,7 +273,7 @@ format_string_diagnostic_t::emit_warning (diagnostic_option_id option_id, /* Variadic version of the above (singular vs plural). */ bool -format_string_diagnostic_t::emit_warning_n (diagnostic_option_id option_id, +format_string_diagnostic_t::emit_warning_n (diagnostics::option_id option_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, diff --git a/gcc/substring-locations.h b/gcc/substring-locations.h index fee7a8914ddd..32427dc8b8be 100644 --- a/gcc/substring-locations.h +++ b/gcc/substring-locations.h @@ -90,23 +90,23 @@ class format_string_diagnostic_t /* Functions for emitting a warning about a format string. */ - bool emit_warning_va (diagnostic_option_id option_id, + bool emit_warning_va (diagnostics::option_id option_id, const char *gmsgid, va_list *ap) const ATTRIBUTE_GCC_DIAG (3, 0); - bool emit_warning_n_va (diagnostic_option_id option_id, + bool emit_warning_n_va (diagnostics::option_id option_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, va_list *ap) const ATTRIBUTE_GCC_DIAG (4, 0) ATTRIBUTE_GCC_DIAG (5, 0); - bool emit_warning (diagnostic_option_id option_id, + bool emit_warning (diagnostics::option_id option_id, const char *gmsgid, ...) const ATTRIBUTE_GCC_DIAG (3, 4); - bool emit_warning_n (diagnostic_option_id option_id, + bool emit_warning_n (diagnostics::option_id option_id, unsigned HOST_WIDE_INT n, const char *singular_gmsgid, const char *plural_gmsgid, ...) const