-/* Copyright (C) 2017-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2022 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
# define DIAGNOSTIC_IGNORE(option) \
_Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option))
+# define DIAGNOSTIC_ERROR(option) \
+ _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic error option))
#else
# define DIAGNOSTIC_PUSH
# define DIAGNOSTIC_POP
DIAGNOSTIC_IGNORE ("-Wdeprecated-declarations")
# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER \
DIAGNOSTIC_IGNORE ("-Wdeprecated-register")
-# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
- DIAGNOSTIC_IGNORE ("-Wunused-function")
# if __has_warning ("-Wenum-compare-switch")
# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \
DIAGNOSTIC_IGNORE ("-Wenum-compare-switch")
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
+# define DIAGNOSTIC_ERROR_SWITCH \
+ DIAGNOSTIC_ERROR ("-Wswitch")
+
#elif defined (__GNUC__) /* GCC */
-# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
- DIAGNOSTIC_IGNORE ("-Wunused-function")
+# if __GNUC__ >= 7
+# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER \
+ DIAGNOSTIC_IGNORE ("-Wregister")
+# endif
# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \
DIAGNOSTIC_IGNORE ("-Wstringop-truncation")
+# define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD \
+ DIAGNOSTIC_IGNORE ("-Wstringop-overread")
+
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
+/* GCC 4.8's "diagnostic push/pop" seems broken when using this, -Wswitch
+ remains enabled at the error level even after a pop. Therefore, don't
+ use it for GCC < 5. */
+# if __GNUC__ >= 5
+# define DIAGNOSTIC_ERROR_SWITCH DIAGNOSTIC_ERROR ("-Wswitch")
+# endif
+
#endif
#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE
# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
#endif
-#ifndef DIAGNOSTIC_IGNORE_UNUSED_FUNCTION
-# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION
-#endif
-
#ifndef DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
#endif
# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION
#endif
+#ifndef DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
+# define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
+#endif
+
#ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
#endif
+#ifndef DIAGNOSTIC_ERROR_SWITCH
+# define DIAGNOSTIC_ERROR_SWITCH
+#endif
+
#endif /* DIAGNOSTICS_H */