merge of '0b604857bbf871639fdb43ee8380222e8ef64bb7'
[vuplus_openembedded] / packages / gcc / gcc-4.3.0 / fix-ICE-in-arm_unwind_emit_set.diff
1 --- /tmp/arm.c  2008-03-17 14:24:39.590464969 +0100
2 +++ gcc-4.3.0/gcc/config/arm/arm.c      2008-03-17 14:12:21.614701982 +0100
3 @@ -15959,6 +15959,9 @@
4    int regno;
5    int lo_mask = mask & 0xFF;
6    int pushed_words = 0;
7 +  rtx e0;
8 +  rtx e1;
9 +  unsigned reg;
10  
11    gcc_assert (mask);
12  
13 @@ -16025,6 +16028,15 @@
14  
15           return;
16         }
17 +     else if (GET_CODE (e1) == PLUS
18 +             && GET_CODE (XEXP (e1, 0)) == REG
19 +             && REGNO (XEXP (e1, 0)) == SP_REGNUM
20 +             && GET_CODE (XEXP (e1, 1)) == CONST_INT)
21 +       {
22 +         /* Set reg to offset from sp.  */
23 +         asm_fprintf (asm_out_file, "\t.movsp %r, #%d\n",
24 +                      REGNO (e0), (int)INTVAL(XEXP (e1, 1)));
25 +       }
26        else
27         {
28           if (mask & 0xFF)