gcc 4.2.4 support
[openwrt/staging/chunkeey.git] / toolchain / gcc / patches / 4.2.4 / 905-avr32_fix_folding_machine_reorg_optimizations.patch
1 Index: gcc-4.2.3/gcc/config/avr32/avr32.c
2 ===================================================================
3 --- gcc-4.2.3.orig/gcc/config/avr32/avr32.c 2008-05-21 13:45:58.533289214 +0200
4 +++ gcc-4.2.3/gcc/config/avr32/avr32.c 2008-05-21 13:45:59.762288215 +0200
5 @@ -6323,23 +6323,24 @@
6 /* If used any other place than as a pointer or as the
7 destination register we failed */
8 if (!(single_set (scan)
9 - && GET_CODE (PATTERN (scan)) == SET
10 - && ((MEM_P (SET_DEST (PATTERN (scan)))
11 - && REG_P (XEXP (SET_DEST (PATTERN (scan)), 0))
12 - && REGNO (XEXP (SET_DEST (PATTERN (scan)), 0)) ==
13 - REGNO (reg)) || (MEM_P (SET_SRC (PATTERN (scan)))
14 - &&
15 - REG_P (XEXP
16 - (SET_SRC (PATTERN (scan)),
17 - 0))
18 - &&
19 - REGNO (XEXP
20 - (SET_SRC (PATTERN (scan)),
21 - 0)) == REGNO (reg))))
22 - && !(GET_CODE (PATTERN (scan)) == SET
23 - && REG_P (SET_DEST (PATTERN (scan)))
24 - && !regno_use_in (REGNO (reg),
25 - SET_SRC (PATTERN (scan)))))
26 + && GET_CODE (PATTERN (scan)) == SET
27 + && ((MEM_P (SET_DEST (PATTERN (scan)))
28 + && REG_P (XEXP (SET_DEST (PATTERN (scan)), 0))
29 + && REGNO (XEXP (SET_DEST (PATTERN (scan)), 0)) == REGNO (reg))
30 + || (MEM_P (SET_SRC (PATTERN (scan)))
31 + && REG_P (XEXP (SET_SRC (PATTERN (scan)), 0))
32 + && REGNO (XEXP
33 + (SET_SRC (PATTERN (scan)), 0)) == REGNO (reg))))
34 + && !(GET_CODE (PATTERN (scan)) == SET
35 + && REG_P (SET_DEST (PATTERN (scan)))
36 + && !regno_use_in (REGNO (reg),
37 + SET_SRC (PATTERN (scan)))))
38 + break;
39 +
40 + /* We cannot replace the pointer in TImode insns
41 + as these has a differene addressing mode than the other
42 + memory insns. */
43 + if ( GET_MODE (SET_DEST (PATTERN (scan))) == TImode )
44 break;
45
46 /* Check if register is dead or set in this insn */