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);

Reply via email to