Message ID | 20241222000509.2205895-23-hjl.tools@gmail.com |
---|---|
State | Accepted |
Commit | b2556550a0f952b2a841a0b4bddc999c2df1b233 |
Headers | show |
Series | [01/39] conform: Use -dD instead of -dN on compiler invocation | expand |
"H.J. Lu" <hjl.tools@gmail.com> writes: > From: Adhemerval Zanella <adhemerval.zanella@linaro.org> s/suppress/suppression/ in title > > Four new macros are added: > > * DIAG_{PUSH,POP}_NEEDS_COMMENT_CLANG are similar to > DIAG_{PUSH,POP}_NEEDS_COMMENT, but enable clang specific pragmas to > handle warnings for options only supported by clang. > > * DIAG_IGNORE_NEEDS_COMMENT_{CLANG,GCC} are similar to > DIAG_IGNORE_NEEDS_COMMENT, but enable the warning suppression only > for the referenced compiler. > --- > include/libc-diag.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/libc-diag.h b/include/libc-diag.h > index 4b1c916756..7666a386f3 100644 > --- a/include/libc-diag.h > +++ b/include/libc-diag.h > @@ -38,6 +38,16 @@ > /* Pop diagnostic state. */ > #define DIAG_POP_NEEDS_COMMENT _Pragma ("GCC diagnostic pop") > > +/* These macros are used to push/pop diagnostic states for warnings only > + supported by clang. */ > +#ifdef __clang__ > +# define DIAG_PUSH_NEEDS_COMMENT_CLANG _Pragma ("clang diagnostic push") > +# define DIAG_POP_NEEDS_COMMENT_CLANG _Pragma ("clang diagnostic pop") > +#else > +# define DIAG_PUSH_NEEDS_COMMENT_CLANG > +# define DIAG_POP_NEEDS_COMMENT_CLANG > +#endif > + > #define _DIAG_STR1(s) #s > #define _DIAG_STR(s) _DIAG_STR1(s) > > @@ -71,4 +81,16 @@ > # define DIAG_IGNORE_Os_NEEDS_COMMENT(version, option) > #endif > > +/* Similar to DIAG_IGNORE_NEEDS_COMMENT, these macros should be used > + to suppress warning supported by the specific compiler. */ > +#ifndef __clang__ > +# define DIAG_IGNORE_NEEDS_COMMENT_GCC(VERSION, WARNING) \ > + DIAG_IGNORE_NEEDS_COMMENT (VERSION, WARNING) > +# define DIAG_IGNORE_NEEDS_COMMENT_CLANG(version, option) > +#else > +# define DIAG_IGNORE_NEEDS_COMMENT_GCC(VERSION, WARNING) > +# define DIAG_IGNORE_NEEDS_COMMENT_CLANG(version, option) \ > + _Pragma (_DIAG_STR (clang diagnostic ignored option)) > +#endif > + > #endif /* libc-diag.h */ Okay, although I'm not sure how much we'll want to use it: as Joseph said before, if we're adding many of these, there's a decent chance we want -Wno-x instead (especially as it often indicates something which might come up with GCC too, like -Wfortify-source warnings). But it's fine. Reviewed-by: Sam James <sam@gentoo.org>
diff --git a/include/libc-diag.h b/include/libc-diag.h index 4b1c916756..7666a386f3 100644 --- a/include/libc-diag.h +++ b/include/libc-diag.h @@ -38,6 +38,16 @@ /* Pop diagnostic state. */ #define DIAG_POP_NEEDS_COMMENT _Pragma ("GCC diagnostic pop") +/* These macros are used to push/pop diagnostic states for warnings only + supported by clang. */ +#ifdef __clang__ +# define DIAG_PUSH_NEEDS_COMMENT_CLANG _Pragma ("clang diagnostic push") +# define DIAG_POP_NEEDS_COMMENT_CLANG _Pragma ("clang diagnostic pop") +#else +# define DIAG_PUSH_NEEDS_COMMENT_CLANG +# define DIAG_POP_NEEDS_COMMENT_CLANG +#endif + #define _DIAG_STR1(s) #s #define _DIAG_STR(s) _DIAG_STR1(s) @@ -71,4 +81,16 @@ # define DIAG_IGNORE_Os_NEEDS_COMMENT(version, option) #endif +/* Similar to DIAG_IGNORE_NEEDS_COMMENT, these macros should be used + to suppress warning supported by the specific compiler. */ +#ifndef __clang__ +# define DIAG_IGNORE_NEEDS_COMMENT_GCC(VERSION, WARNING) \ + DIAG_IGNORE_NEEDS_COMMENT (VERSION, WARNING) +# define DIAG_IGNORE_NEEDS_COMMENT_CLANG(version, option) +#else +# define DIAG_IGNORE_NEEDS_COMMENT_GCC(VERSION, WARNING) +# define DIAG_IGNORE_NEEDS_COMMENT_CLANG(version, option) \ + _Pragma (_DIAG_STR (clang diagnostic ignored option)) +#endif + #endif /* libc-diag.h */
From: Adhemerval Zanella <adhemerval.zanella@linaro.org> Four new macros are added: * DIAG_{PUSH,POP}_NEEDS_COMMENT_CLANG are similar to DIAG_{PUSH,POP}_NEEDS_COMMENT, but enable clang specific pragmas to handle warnings for options only supported by clang. * DIAG_IGNORE_NEEDS_COMMENT_{CLANG,GCC} are similar to DIAG_IGNORE_NEEDS_COMMENT, but enable the warning suppression only for the referenced compiler. --- include/libc-diag.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)