I've spent some time to get our kernel compiled with LLVM/clang-9.0.0
It's not tested at all. Feel free to try it.
-O3 in clang works differently so it catches some error when compiling
APPLESMC module, so I've disabled it.
objtool makefile needed a patch to skip user CFLAGS redefinition.
Saa716x patch needs to be disabled as it generated some warnings which was
VirtualBox module for disabled because using some GCC specific pragmas.
Iirc FreeBSD got some patches to build Vbox with clang.
I had to use LLVM tools like ar, objcopy, nm etc.
LLD generates lots of warnings due to enabled ICF and gc-secrions together.