[ Please CC me I am not subcribed to this ML ] Quote from <https://lkml.org/lkml/2018/9/20/901>:
The Compiler Attributes series is an effort to disentangle the include/linux/compiler*.h headers and bring them up to date. The main idea behind the series is to use feature checking macros (i.e. __has_attribute) instead of compiler version checks (e.g. GCC_VERSION), which are compiler-agnostic (so they can be shared, reducing the size of compiler-specific headers) and version-agnostic. Other related improvements have been performed in the headers as well, which on top of the use of __has_attribute it has amounted to a significant simplification of these headers (e.g. GCC_VERSION is now only guarding 4 non-attribute macros). This series should also help the efforts to support compiling the kernel with clang and icc. A fair amount of documentation and comments have also been added, clarified or removed; and the headers are now more readable, which should help kernel developers in general. The series was triggered due to the move to gcc >= 4.6. In turn, this series has also triggered Sparse to gain the ability to recognize __has_attribute on its own. Finally, the nonstring variable attribute series has been applied on top of this one. You can also fetch it from: https://github.com/ojeda/linux/tree/compiler-attributes-v5 Enjoy! Cheers, Miguel Cc: Andreas Dilger <[email protected]> Cc: Masahiro Yamada <[email protected]> Cc: Michal Marek <[email protected]> Cc: Steven Rostedt <[email protected]> Cc: Mauro Carvalho Chehab <[email protected]> Cc: Olof Johansson <[email protected]> Cc: Konstantin Ryabitsev <[email protected]> Cc: David S. Miller <[email protected]> Cc: Andrey Ryabinin <[email protected]> Cc: Kees Cook <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Paul Lawrence <[email protected]> Cc: Sandipan Das <[email protected]> Cc: Andrey Konovalov <[email protected]> Cc: David Woodhouse <[email protected]> Cc: Will Deacon <[email protected]> Cc: Philippe Ombredanne <[email protected]> Cc: Paul Burton <[email protected]> Cc: David Rientjes <[email protected]> Cc: Willy Tarreau <[email protected]> Cc: Martin Sebor <[email protected]> Cc: Christopher Li <[email protected]> Cc: Jonathan Corbet <[email protected]> Cc: Theodore Ts'o <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: Rasmus Villemoes <[email protected]> Cc: Joe Perches <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Dominique Martinet <[email protected]> Cc: Stefan Agner <[email protected]> Cc: Luc Van Oostenryck <[email protected]> Cc: Nick Desaulniers <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] v4 -> v5 * Removed the 2 __naked patches, since Greg just applied them to master; and rebased on top of that. The only change in the range-diff is in "Compiler Attributes: always use the extra-underscores syntax" due to the move of __naked to compiler_types.h. * Applied the nonstring series on top of this one (last 4 patches). Rationale: - the nonstring series would anyway be modified again by this one (so it has been rebased after the general cleanup). - ext4's "local" nonstring was merged - easier to manage (and easier to see the end result) The first 2 patches of the last 4 add the warning back at W=1 and add the __nonstring attribute. The other two serve as an example of usage and as a cleanup. * Cc lists removed from each commit; using a single list in the cover letter; and a new, revised list of Cc (wider audience). Miguel Ojeda (15): Compiler Attributes: remove unused attributes Compiler Attributes: always use the extra-underscores syntax Compiler Attributes: remove unneeded tests Compiler Attributes: homogenize __must_be_array Compiler Attributes: remove unneeded sparse (__CHECKER__) tests Compiler Attributes: add missing SPDX ID in compiler_types.h Compiler Attributes: use feature checks instead of version checks Compiler Attributes: KENTRY used twice the "used" attribute Compiler Attributes: remove uses of __attribute__ from compiler.h Compiler Attributes: add Doc/process/programming-language.rst Compiler Attributes: add MAINTAINERS entry Compiler Attributes: add support for __nonstring (gcc >= 8) Compiler Attributes: enable -Wstringop-truncation on W=1 (gcc >= 8) Compiler Attributes: auxdisplay: panel: use __nonstring Compiler Attributes: ext4: remove local __nonstring definition Documentation/process/index.rst | 1 + .../process/programming-language.rst | 45 +++ MAINTAINERS | 5 + drivers/auxdisplay/panel.c | 7 +- fs/ext4/ext4.h | 9 - include/linux/compiler-clang.h | 5 - include/linux/compiler-gcc.h | 70 +---- include/linux/compiler-intel.h | 9 - include/linux/compiler.h | 19 +- include/linux/compiler_attributes.h | 258 ++++++++++++++++++ include/linux/compiler_types.h | 101 +------ scripts/Makefile.extrawarn | 1 + 12 files changed, 341 insertions(+), 189 deletions(-) create mode 100644 Documentation/process/programming-language.rst create mode 100644 include/linux/compiler_attributes.h -- 2.17.1 Tested-by: Sedat Dilek <[email protected]> (against Linux v4.19-rc5 and built with LLVM/Clang v7)
