Also, please cc me and the llvm mailing list on all changes to include/linux/compiler-clang.h. I see now on lore there's further patches here than just this single patch I was cc'ed on. On Mon, Mar 7, 2022 at 11:25 AM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > On Fri, Mar 4, 2022 at 2:47 PM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > > > From: Nathan Chancellor <nathan@xxxxxxxxxx> > > > > Add __diag macros similar to those in compiler-gcc.h, so that warnings > > that need to be adjusted for specific cases but not globally can be > > ignored when building with clang. > > > > Cc: Nathan Chancellor <nathan@xxxxxxxxxx> > > Cc: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > > Cc: llvm@xxxxxxxxxxxxxxx > > Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> > > [ Kartikeya: wrote commit message ] > > Signed-off-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > > --- > > include/linux/compiler-clang.h | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h > > index 3c4de9b6c6e3..f1aa41d520bd 100644 > > --- a/include/linux/compiler-clang.h > > +++ b/include/linux/compiler-clang.h > > The equivalent functionality for GCC has > 357 #ifndef __diag_GCC > 358 #define __diag_GCC(version, severity, string) > 359 #endif > in include/linux/compiler_types.h. Should this patch as well? (at > least #define __diag_clang`)? > > > @@ -68,3 +68,25 @@ > > > > #define __nocfi __attribute__((__no_sanitize__("cfi"))) > > #define __cficanonical __attribute__((__cfi_canonical_jump_table__)) > > + > > +/* > > + * Turn individual warnings and errors on and off locally, depending > > + * on version. > > + */ > > +#define __diag_clang(version, severity, s) \ > > + __diag_clang_ ## version(__diag_clang_ ## severity s) > > + > > +/* Severity used in pragma directives */ > > +#define __diag_clang_ignore ignored > > +#define __diag_clang_warn warning > > +#define __diag_clang_error error > > These severities match GCC. I wonder if rather than copy+pasting these > over, we could rework __diag_ignore, __diag_warn, and __diag_error to > not invoke a compiler-suffixed macro and rather pass the compiler > along (or make it implicit since we know CONFIG_CC_IS_CLANG vs > CONFIG_CC_IS_GCC)? We can probably land this than follow up on better > code-reuse between compilers for diagnostics. > > > + > > +#define __diag_str1(s) #s > > +#define __diag_str(s) __diag_str1(s) > > +#define __diag(s) _Pragma(__diag_str(clang diagnostic s)) > > + > > +#if CONFIG_CLANG_VERSION >= 110000 > > +#define __diag_clang_11(s) __diag(s) > > +#else > > +#define __diag_clang_11(s) > > +#endif > > -- > > 2.35.1 > > > > > -- > Thanks, > ~Nick Desaulniers -- Thanks, ~Nick Desaulniers