If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

LLVM/Clang 3.3 Should Be Close To Building Linux Kernel

04-18-2013, 11:20 AM

Phoronix: LLVM/Clang 3.3 Should Be Close To Building Linux Kernel

Developing are reaching a point where the mainline LLVM/Clang compiler in an "out of the box" configuration can compile the mainline Linux kernel with only a few patches against the kernel's source tree. This summer's release of LLVM/Clang 3.3 should be a big milestone...

Comment

I would call LLVM/Clang complete ONLY when it compiles the Linux kernel without the need for any patches to the kernel code as well as the resulting finished binary behaving the same way as the gcc-compiled kernel binaries without unexplained crashes or bugs. The kernel should be written portably so ALL compilers can compile it cleanly and any gcc-isms should be refactored.

Comment

I think the reason it doesn't compile the kernel at the moment is due to gcc-isms, and that the patches simply remove those/replace them with something portable.

Ahh, that makes sense...removing the gcc-isms and replacing them with code more in line with the standards is a good thing and that alone should help reduce bugs. Most of those gcc-isms are mainly workarounds for some gcc bugs common in older gcc's so rewriting those sections of code portably should help clean that up.

Comment

Or they were extensions requested by kernel devs to have more control over the resulting code, which is a good thing. Haven't looked at the patches to see whether any such code is removed or if it's only portability changes.

Comment

Ahh, that makes sense...removing the gcc-isms and replacing them with code more in line with the standards is a good thing and that alone should help reduce bugs. Most of those gcc-isms are mainly workarounds for some gcc bugs common in older gcc's so rewriting those sections of code portably should help clean that up.

The VLAIS (Variable Length Arrays In Structs) makes the code a lot more readable and understandable, which likely reduces the number of bugs. The kernel devs have already objected to removing them for LLVM. It isn't clear what the final solution will be, because it doesn't sound like LLVM is interested in supporting them, either.