parent
55a7b0a6e1
commit
78fb5a1b98
2 changed files with 34 additions and 0 deletions
16
toolchain/gcc/patches/4.1.2/010-pr34130.patch
Normal file
16
toolchain/gcc/patches/4.1.2/010-pr34130.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
Index: gcc-4.1.2/gcc/fold-const.c
|
||||
===================================================================
|
||||
--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
|
||||
+++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
|
||||
@@ -5339,7 +5339,10 @@
|
||||
}
|
||||
break;
|
||||
}
|
||||
- /* FALLTHROUGH */
|
||||
+ /* If the constant is negative, we cannot simplify this. */
|
||||
+ if (tree_int_cst_sgn (c) == -1)
|
||||
+ break;
|
||||
+ /* FALLTHROUGH */
|
||||
case NEGATE_EXPR:
|
||||
if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
|
||||
return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
|
|
@ -0,0 +1,18 @@
|
|||
--- trunk/gcc/config/arm/arm.c 2006/09/19 13:18:27 117055
|
||||
+++ trunk/gcc/config/arm/arm.c 2006/09/19 13:19:24 117056
|
||||
@@ -15415,6 +15415,15 @@
|
||||
/* Move from sp to reg. */
|
||||
asm_fprintf (asm_out_file, "\t.movsp %r\n", REGNO (e0));
|
||||
}
|
||||
+ 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
|
||||
abort ();
|
||||
break;
|
Loading…
Reference in a new issue