include/linux/compiler*.h: make compiler-*.h mutually exclusive
Commitcafa0010cd
("Raise the minimum required gcc version to 4.6") recently exposed a brittle part of the build for supporting non-gcc compilers. Both Clang and ICC define __GNUC__, __GNUC_MINOR__, and __GNUC_PATCHLEVEL__ for quick compatibility with code bases that haven't added compiler specific checks for __clang__ or __INTEL_COMPILER. This is brittle, as they happened to get compatibility by posing as a certain version of GCC. This broke when upgrading the minimal version of GCC required to build the kernel, to a version above what ICC and Clang claim to be. Rather than always including compiler-gcc.h then undefining or redefining macros in compiler-intel.h or compiler-clang.h, let's separate out the compiler specific macro definitions into mutually exclusive headers, do more proper compiler detection, and keep shared definitions in compiler_types.h. Fixes:cafa0010cd
("Raise the minimum required gcc version to 4.6") Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com> Suggested-by: Eli Friedman <efriedma@codeaurora.org> Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
899fbc33fd
commit
815f0ddb34
@@ -1131,7 +1131,8 @@ out:
|
||||
* gcc 4.7 and 4.8 on arm get an ICEs when inlining unmap_and_move(). Work
|
||||
* around it.
|
||||
*/
|
||||
#if (GCC_VERSION >= 40700 && GCC_VERSION < 40900) && defined(CONFIG_ARM)
|
||||
#if defined(CONFIG_ARM) && \
|
||||
defined(GCC_VERSION) && GCC_VERSION < 40900 && GCC_VERSION >= 40700
|
||||
#define ICE_noinline noinline
|
||||
#else
|
||||
#define ICE_noinline
|
||||
|
Reference in New Issue
Block a user