mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
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 <[email protected]> Suggested-by: Eli Friedman <[email protected]> Suggested-by: Joe Perches <[email protected]> Signed-off-by: Nick Desaulniers <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
899fbc33fd
commit
815f0ddb34
9 changed files with 133 additions and 253 deletions
4
mm/ksm.c
4
mm/ksm.c
|
|
@ -652,9 +652,9 @@ static void remove_node_from_stable_tree(struct stable_node *stable_node)
|
|||
* list_head to stay clear from the rb_parent_color union
|
||||
* (aligned and different than any node) and also different
|
||||
* from &migrate_nodes. This will verify that future list.h changes
|
||||
* don't break STABLE_NODE_DUP_HEAD.
|
||||
* don't break STABLE_NODE_DUP_HEAD. Only recent gcc can handle it.
|
||||
*/
|
||||
#if GCC_VERSION >= 40903 /* only recent gcc can handle it */
|
||||
#if defined(GCC_VERSION) && GCC_VERSION >= 40903
|
||||
BUILD_BUG_ON(STABLE_NODE_DUP_HEAD <= &migrate_nodes);
|
||||
BUILD_BUG_ON(STABLE_NODE_DUP_HEAD >= &migrate_nodes + 1);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue