[PATCH] Add clang specific warnings suppress macros
Sam James
sam@gentoo.org
Sat Dec 21 22:52:09 GMT 2024
"H.J. Lu" <hjl.tools@gmail.com> writes:
> On Sun, Dec 22, 2024 at 6:23 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>>
>> 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(+)
>>
>> 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 */
>> --
>> 2.47.1
>>
>
> This patch is needed by other patches to suppress Clang warnings.
Could you send the remaining set as a series if it is not too much
trouble, then I will try get them reviewed tonight (at least the bulk)? Thanks.
More information about the Libc-alpha
mailing list