diff options
-rw-r--r-- | toolchain/gcc/patches/4.1.2/010-pr34130.patch | 16 | ||||
-rw-r--r-- | toolchain/gcc/patches/4.1.2/802-fix-ICE-in-arm_unwind_emit_set.patch | 18 |
2 files changed, 34 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/4.1.2/010-pr34130.patch b/toolchain/gcc/patches/4.1.2/010-pr34130.patch new file mode 100644 index 0000000..415335f --- /dev/null +++ b/toolchain/gcc/patches/4.1.2/010-pr34130.patch @@ -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)); diff --git a/toolchain/gcc/patches/4.1.2/802-fix-ICE-in-arm_unwind_emit_set.patch b/toolchain/gcc/patches/4.1.2/802-fix-ICE-in-arm_unwind_emit_set.patch new file mode 100644 index 0000000..568e15a --- /dev/null +++ b/toolchain/gcc/patches/4.1.2/802-fix-ICE-in-arm_unwind_emit_set.patch @@ -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; |