]> git.hungrycats.org Git - linux/commitdiff
gcc-4.1.0 is bust
authorAndrew Morton <akpm@osdl.org>
Tue, 22 May 2007 21:50:21 +0000 (23:50 +0200)
committerAdrian Bunk <bunk@stusta.de>
Tue, 22 May 2007 21:50:21 +0000 (23:50 +0200)
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 <wait_hpet_tick>:
  1a:   55                      push   %ebp
  1b:   89 e5                   mov    %esp,%ebp
  1d:   eb fe                   jmp    1d <wait_hpet_tick+0x3>

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.

Adrian Bunk:
Changed from a #warning to an #error for 2.6.16.

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
init/main.c

index 5edd3013d810896519679acc6abb759307ccda45..847397be23a6b509bf86adbbf2aafa7c476bb631 100644 (file)
 #error Sorry, your GCC is too old. It builds incorrect kernels.
 #endif
 
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 0
+#error 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);