Just use LLVM:
http://llvm.org/
And the kernel can be compiled using LLVM and Clang, but not quite in all configurations. But compiling mainline kernel for x86 using LLVM was achieved some years ago.
Many of these extensions which the Linux kernel relies on have been added to LLVM, but obviously not all, and from the looks of it some never will, which means either Linux needs to refrain from using said extensions, or building Linux using LLVM will continue to require patching.