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