On Tue, 2018-08-21 at 09:57 -0700, Nick Desaulniers wrote: > On Tue, Aug 21, 2018 at 9:33 AM Joe Perches <j...@perches.com> wrote: > > > > On Tue, 2018-08-21 at 15:48 +0900, Masahiro Yamada wrote: > > > Commit cafa0010cd51 ("Raise the minimum required gcc version to 4.6") > > > missed the fact that <linux/compiler-gcc.h> is included by Clang > > > as well as by GCC. > > > > > > Clang actually defines __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ > > > and it looks like GCC 4.2.1. > > > > > > $ scripts/gcc-version.sh -p clang > > > 040201 > > > > > > If you try to build the kernel with Clang, you will get the > > > "Sorry, your compiler is too old - please upgrade it." > > > followed by a bunch of "unknown attribute" warnings. > > > > > > Add !defined(__clang__) to the minimum version check. > > > > > > Also, revive the version test blocks for versions >= 4.2.1 > > > in order to disable features not supported by Clang. > > > > What is the minimum clang version required to compile the kernel? > > Depends on the architecture and which kernel version/LTS branch you're > using. I'm trying to backport fixes to LTS branches, but sometimes a > compiler upgrade is required. I know that's not great, but I'm > actively trying to fix it.
Can you enumerate these dependencies please. > > What features are not supported by the minimum clang version? And enumerate this too please. Uglifying the compiler-gcc file to support clang features that can be overridden in compiler-clang.h instead is not a good way to fix compilation for clang. But still, whatever features in the various clang versions that need accommodation also need listing out in compiler-clang.h, not in compiler-gcc.h > $ git describe --contains e501ce9 | sed 's/~.*//' > v4.17-rc1 Thanks, but I know this. The question remains, if clang can't compile v4.17, why does it immediately matter for v4.19? Why wouldn't overriding the clang __GNUC_<foo> #defines in compiler-gcc.h work acceptably with adding whatever is necessary to compiler-clang.h? I'll experiment with a compiler-clang.h patch.