From: Andrew Morton Date: Thu, 7 Dec 2006 04:39:59 +0000 (-0800) Subject: [PATCH] gcc-4.1.0 is bust X-Git-Tag: v2.6.20-rc1~145^2^2~71 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=f1a60dbf68061e5a5364cbc723786b355637ffd3;p=linux-2.6-omap-h63xx.git [PATCH] gcc-4.1.0 is bust Keith says Compiling 2.6.19-rc6 with gcc version 4.1.0 (SUSE Linux), wait_hpet_tick is optimized away to a never ending loop and the kernel hangs on boot in timer setup. 0000001a : 1a: 55 push %ebp 1b: 89 e5 mov %esp,%ebp 1d: eb fe jmp 1d This is not a problem with gcc 3.3.5. Adding barrier() calls to wait_hpet_tick does not help, making the variables volatile does. And the consensus is that gcc-4.1.0 is busted. Suse went and shipped gcc-4.1.0 so we cannot ban it. Add a warning. Cc: Keith Owens Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/init/main.c b/init/main.c index 36f608a7cfb..46508300d6b 100644 --- a/init/main.c +++ b/init/main.c @@ -73,6 +73,10 @@ #error Sorry, your GCC is too old. It builds incorrect kernels. #endif +#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 0 +#warning gcc-4.1.0 is known to miscompile the kernel. A different compiler version is recommended. +#endif + static int init(void *); extern void init_IRQ(void);