patches/gcc/4.3.1/230-pr34571.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Sep 12 23:38:18 2010 +0200 (2010-09-12)
changeset 2120 48de021b3a9e
parent 746 b150d6f590fc
permissions -rw-r--r--
arch/mips: add experimental mips64 samples

Both toolchains were tested to successfully:
- _build_ busybox, giving respectively an n32 and an n64 binary
although it has not been run-tested.
- build linux-2.6.36-rc3 for Loongson, giving an n64 vmlinux
(which is expected, due to the way the kernel is built),
and the kernel properly boots!

Credits are due to Julien MOUTHINO (julm on freenode#uClibc) for
testing that the kernel boots on his hardware! Cheers! ;-)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.1/gentoo/64_all_gcc43-pr34571.patch
     2 http://gcc.gnu.org/PR34571
     3 
     4 2007-12-26  Rask Ingemann Lambertsen  <rask@sygehus.dk>
     5 
     6 	PR target/34571
     7 	* config/alpha/alpha.c (alpha_cannot_force_const_mem): Use
     8 	symbolic_operand.
     9 	* varasm.c (output_constant_pool_1): Fix typo.
    10 
    11 diff -durN gcc-4.3.1.orig/gcc/config/alpha/alpha.c gcc-4.3.1/gcc/config/alpha/alpha.c
    12 --- gcc-4.3.1.orig/gcc/config/alpha/alpha.c	2008-02-07 18:45:24.000000000 +0100
    13 +++ gcc-4.3.1/gcc/config/alpha/alpha.c	2008-06-10 14:58:24.000000000 +0200
    14 @@ -1113,8 +1113,7 @@
    15  static bool
    16  alpha_cannot_force_const_mem (rtx x)
    17  {
    18 -  enum rtx_code code = GET_CODE (x);
    19 -  return code == SYMBOL_REF || code == LABEL_REF || code == CONST;
    20 +  return symbolic_operand (x, GET_MODE (x));
    21  }
    22  
    23  /* We do not allow indirect calls to be optimized into sibling calls, nor
    24 diff -durN gcc-4.3.1.orig/gcc/varasm.c gcc-4.3.1/gcc/varasm.c
    25 --- gcc-4.3.1.orig/gcc/varasm.c	2007-12-05 22:55:10.000000000 +0100
    26 +++ gcc-4.3.1/gcc/varasm.c	2008-06-10 14:58:24.000000000 +0200
    27 @@ -3710,7 +3710,7 @@
    28        /* FALLTHRU  */
    29  
    30      case LABEL_REF:
    31 -      tmp = XEXP (x, 0);
    32 +      tmp = XEXP (tmp, 0);
    33        gcc_assert (!INSN_DELETED_P (tmp));
    34        gcc_assert (!NOTE_P (tmp)
    35  		  || NOTE_KIND (tmp) != NOTE_INSN_DELETED);