[PATCH 22/39] Add clang specific warnings suppress macros

Sam James sam@gentoo.org
Sun Dec 22 04:41:53 GMT 2024


"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>


More information about the Libc-alpha mailing list