[v2,1/4] include: Add macro to ignore -Wuser-defined-warnings

Message ID 2ce08418715c662152290077e1bbc92ee1cf0f10.1663835104.git.research_trasio@irq.a4lg.com
State Committed
Headers
Series gdb: (includes PR28413), Suppress some general warnings if built with Clang |

Commit Message

Tsukasa OI Sept. 22, 2022, 8:25 a.m. UTC
  User-defined warnings (on Clang, "-Wuser-defined-warnings") can be harmful
if we have specified "-Werror" and we have no control to disable the warning
ourself.  The particular example is Gnulib.

Gnulib generates a warning if the system version of certain functions
are used (to redirect the developer to use Gnulib version).  However,
it can be harmful if we cannot easily replace them (e.g. the target is in
the standard C++ library).

The new DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS macro can be helpful on such
cases.  A typical use of this macro is to place this macro before including
certain system headers.

include/ChangeLog:

	* diagnostics.h (DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS): New.
---
 include/diagnostics.h | 9 +++++++++
 1 file changed, 9 insertions(+)
  

Comments

Nick Clifton Sept. 22, 2022, 11:26 a.m. UTC | #1
Hi Tsukasa,

> include/ChangeLog:
> 
> 	* diagnostics.h (DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS): New.

Patch approved - please apply.

Cheers
   Nick
  

Patch

diff --git a/include/diagnostics.h b/include/diagnostics.h
index 3da88282261..dbe6288d3d6 100644
--- a/include/diagnostics.h
+++ b/include/diagnostics.h
@@ -63,6 +63,11 @@ 
 # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
   DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
 
+# if __has_warning ("-Wuser-defined-warnings")
+#  define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS \
+   DIAGNOSTIC_IGNORE ("-Wuser-defined-warnings")
+# endif
+
 # define DIAGNOSTIC_ERROR_SWITCH \
   DIAGNOSTIC_ERROR ("-Wswitch")
 
@@ -121,6 +126,10 @@ 
 # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
 #endif
 
+#ifndef DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS
+# define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS
+#endif
+
 #ifndef DIAGNOSTIC_ERROR_SWITCH
 # define DIAGNOSTIC_ERROR_SWITCH
 #endif