Re: [-mm patch] more updates for the gcc >= 3.2 requirement

From: Horst von Brand
Date: Fri Dec 16 2005 - 13:29:19 EST


Adrian Bunk <bunk@xxxxxxxxx> wrote:
> This patch contains some documentation updates and removes some code
> paths for gcc < 3.2.

[...]

> --- linux-2.6.15-rc5-mm3-full/arch/arm/kernel/asm-offsets.c.old 2005-12-15 13:34:55.000000000 +0100
> +++ linux-2.6.15-rc5-mm3-full/arch/arm/kernel/asm-offsets.c 2005-12-15 13:35:11.000000000 +0100
> @@ -27,11 +27,11 @@
> * GCC 3.2.0: incorrect function argument offset calculation.
> * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
> * (http://gcc.gnu.org/PR8896) and incorrect structure
> * initialisation in fs/jffs2/erase.c
> */
> -#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
> +#if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
> #error Your compiler is too buggy; it is known to miscompile kernels.
> #error Known good compilers: 3.3
> #endif

Better leave the original, in case some clown comes along with an ancient
compiler.

[...]

> --- linux-2.6.15-rc5-mm3-full/include/asm-ia64/spinlock.h.old 2005-12-15 13:38:00.000000000 +0100
> +++ linux-2.6.15-rc5-mm3-full/include/asm-ia64/spinlock.h 2005-12-15 13:38:07.000000000 +0100
> @@ -32,11 +32,11 @@
> static inline void
> __raw_spin_lock_flags (raw_spinlock_t *lock, unsigned long flags)
> {
> register volatile unsigned int *ptr asm ("r31") = &lock->lock;
>
> -#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
> +#if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)

Ditto.

[...]

> --- linux-2.6.15-rc5-mm3-full/include/asm-sparc64/system.h.old 2005-12-15 13:40:55.000000000 +0100
> +++ linux-2.6.15-rc5-mm3-full/include/asm-sparc64/system.h 2005-12-15 13:41:03.000000000 +0100
> @@ -191,15 +191,11 @@
> * the output value of 'last'. 'next' is not referenced again
> * past the invocation of switch_to in the scheduler, so we need
> * not preserve it's value. Hairy, but it lets us remove 2 loads
> * and 2 stores in this critical code path. -DaveM
> */
> -#if __GNUC__ >= 3
> #define EXTRA_CLOBBER ,"%l1"
> -#else
> -#define EXTRA_CLOBBER
> -#endif

If EXTRA_CLOBBER is now constant, you can get rid of it completely.

[...]

> --- linux-2.6.15-rc5-mm3-full/include/linux/byteorder/swabb.h.old 2005-12-15 13:41:52.000000000 +0100
> +++ linux-2.6.15-rc5-mm3-full/include/linux/byteorder/swabb.h 2005-12-15 13:42:00.000000000 +0100
> @@ -75,11 +75,11 @@
>
>
> /*
> * Allow constant folding
> */
> -#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
> +#if defined(__GNUC__) && defined(__OPTIMIZE__)

AFAIU, now __GNUC__ should be defined always. Even with intel's compiler
for compatibility, I'd assume. Perhaps we can get rid of it?

Nice job!
--
Dr. Horst H. von Brand User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria +56 32 654239
Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/