https://gcc.gnu.org/g:11518c841dda4d417573e41ded69bd1469ad6d1f
commit r16-2557-g11518c841dda4d417573e41ded69bd1469ad6d1f Author: Thomas Schwinge <tschwi...@baylibre.com> Date: Sat Jul 26 15:31:33 2025 +0200 diagnostics: move diagnostic.c to diagnostics/context.cc: restore build with GCC 5 Building with GCC 5, with commit 8d9d9515f5db9bab758e484f3956033150931de5 "diagnostics: move diagnostic.c to diagnostics/context.cc", we got: ../../source-gcc/gcc/diagnostics/context.cc: In member function ‘bool diagnostics::context::diagnostic_impl(rich_location*, const diagnostics::metadata*, diagnostics::option_id, const char*, __va_list_tag (*)[1], diagnostics::kind)’: ../../source-gcc/gcc/diagnostics/context.cc:1514:15: error: ‘kind’ is not a class, namespace, or enumeration if (kind == kind::permerror) ^ ../../source-gcc/gcc/diagnostics/context.cc:1517:22: error: ‘kind’ is not a class, namespace, or enumeration m_permissive ? kind::warning : kind::error); ^ ../../source-gcc/gcc/diagnostics/context.cc:1517:38: error: ‘kind’ is not a class, namespace, or enumeration m_permissive ? kind::warning : kind::error); ^ ../../source-gcc/gcc/diagnostics/context.cc:1523:19: error: ‘kind’ is not a class, namespace, or enumeration if (kind == kind::warning || kind == kind::pedwarn) ^ ../../source-gcc/gcc/diagnostics/context.cc:1523:44: error: ‘kind’ is not a class, namespace, or enumeration if (kind == kind::warning || kind == kind::pedwarn) ^ ../../source-gcc/gcc/diagnostics/context.cc: In member function ‘bool diagnostics::context::diagnostic_n_impl(rich_location*, const diagnostics::metadata*, diagnostics::option_id, long unsigned int, const char*, const char*, __va_list_tag (*)[1], diagnostics::kind)’: ../../source-gcc/gcc/diagnostics/context.cc:1554:15: error: ‘kind’ is not a class, namespace, or enumeration if (kind == kind::warning) ^ make[2]: *** [Makefile:1212: diagnostics/context.o] Error 1 Resolve this similar to, for example, commit r14-4521-g08d0f840dc7ad212ab75d094373b01cbfc004e67 "analyzer: fix build with gcc < 6". gcc/ * diagnostics/context.cc (context::diagnostic_impl) (context::diagnostic_n_impl): In presence of formal parameter 'kind', explicitly state 'diagnostics::' scope for 'kind' enum. Diff: --- gcc/diagnostics/context.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gcc/diagnostics/context.cc b/gcc/diagnostics/context.cc index 9b235c8426d4..0dbc14810395 100644 --- a/gcc/diagnostics/context.cc +++ b/gcc/diagnostics/context.cc @@ -1511,16 +1511,19 @@ context::diagnostic_impl (rich_location *richloc, va_list *ap, enum kind kind) { diagnostic_info diagnostic; - if (kind == kind::permerror) + if (kind == diagnostics::kind::permerror) { diagnostic_set_info (&diagnostic, gmsgid, ap, richloc, - m_permissive ? kind::warning : kind::error); + (m_permissive + ? diagnostics::kind::warning + : diagnostics::kind::error)); 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 == kind::warning || kind == kind::pedwarn) + if (kind == diagnostics::kind::warning + || kind == diagnostics::kind::pedwarn) diagnostic.m_option_id = opt_id; } diagnostic.m_metadata = metadata; @@ -1551,7 +1554,7 @@ 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 == kind::warning) + if (kind == diagnostics::kind::warning) diagnostic.m_option_id = opt_id; diagnostic.m_metadata = metadata; return report_diagnostic (&diagnostic);