Linus Torvalds On GCC 4.9: Pure & Utter Crap

In a kernel mailing list thread about a random panic in a load balance function with the in-development Linux 3.16 kernel, Torvalds looked at the code being generated by GCC 4.9 and was disgusted with the output.
The Linux kernel creator wrote:
Ok, so I'm looking at the code generation and your compiler is pure and utter *shit*.
Adding Jakub to the cc, because gcc-4.9.0 seems to be terminally broken.
Lookie here, your compiler does some absolutely insane things with the spilling, including spilling a *constant*. For chrissake, that compiler shouldn't have been allowed to graduate from kindergarten. We're talking "sloth that was dropped on the head as a baby" level retardation levels
Torvalds went on to say, "Note the contents of -136(%rbp). Seriously. That's an _immediate_constant_ that the compiler is spilling. Somebody needs to raise that as a gcc bug. Because it damn well is some seriously crazy shit."
Linus ended his mailing list tirade with, "Anyway, this is not a kernel bug. This is your compiler creating completely broken code. We may need to add a warning to make sure nobody compiles with gcc-4.9.0, and the Debian people should probably downgrate their shiny new compiler." GCC 4.9.0 was released back in April while GCC 4.9.1 was recently released and there's no word if the issue persists on that first point release or kernel developers should pull back to GCC 4.8 for the time being.
On Friday, Torvalds opened Bug 61904 concerning incorrect stack red-zoning on x86-64 code generation for GCC 4.9 with the bug not yet being resolved. For now it's likely best to use GCC 4.8, which remains the default compiler on most Linux distributions except those that have seen major releases this summer. Linus hasn't said if he's personally tried compiling the Linux kernel with LLVM's Clang, which is becoming a reality with recent kernel versions.
80 Comments