mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
add patches to fixes gcc 4.2.x bugs:
- fix gcc ICE when compiling package/ath9k (closes: #3816) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37014 - fix "undefined reference to `fmsub'" error on powerpc http://bugs.uclibc.org/view.php?id=1588 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12623 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
76
toolchain/gcc/patches/4.2.1/951-bug_37014.patch
Normal file
76
toolchain/gcc/patches/4.2.1/951-bug_37014.patch
Normal file
@@ -0,0 +1,76 @@
|
||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37014
|
||||
|
||||
--- a/gcc/dojump.c
|
||||
+++ b/gcc/dojump.c
|
||||
@@ -307,8 +307,6 @@
|
||||
break;
|
||||
}
|
||||
|
||||
- case TRUTH_ANDIF_EXPR:
|
||||
- case TRUTH_ORIF_EXPR:
|
||||
case COMPOUND_EXPR:
|
||||
/* Lowered by gimplify.c. */
|
||||
gcc_unreachable ();
|
||||
@@ -518,6 +516,7 @@
|
||||
if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
|
||||
goto normal;
|
||||
|
||||
+ case TRUTH_ANDIF_EXPR:
|
||||
if (if_false_label == NULL_RTX)
|
||||
{
|
||||
drop_through_label = gen_label_rtx ();
|
||||
@@ -538,6 +537,7 @@
|
||||
if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
|
||||
goto normal;
|
||||
|
||||
+ case TRUTH_ORIF_EXPR:
|
||||
if (if_true_label == NULL_RTX)
|
||||
{
|
||||
drop_through_label = gen_label_rtx ();
|
||||
--- a/gcc/expr.c
|
||||
+++ b/gcc/expr.c
|
||||
@@ -8563,7 +8563,10 @@
|
||||
/* If no set-flag instruction, must generate a conditional store
|
||||
into a temporary variable. Drop through and handle this
|
||||
like && and ||. */
|
||||
-
|
||||
+ /* Although TRUTH_{AND,OR}IF_EXPR aren't present in GIMPLE, they
|
||||
+ are occassionally created by folding during expansion. */
|
||||
+ case TRUTH_ANDIF_EXPR:
|
||||
+ case TRUTH_ORIF_EXPR:
|
||||
if (! ignore
|
||||
&& (target == 0
|
||||
|| modifier == EXPAND_STACK_PARM
|
||||
@@ -8761,8 +8774,6 @@
|
||||
case POSTDECREMENT_EXPR:
|
||||
case LOOP_EXPR:
|
||||
case EXIT_EXPR:
|
||||
- case TRUTH_ANDIF_EXPR:
|
||||
- case TRUTH_ORIF_EXPR:
|
||||
/* Lowered by gimplify.c. */
|
||||
gcc_unreachable ();
|
||||
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.c-torture/compile/20080812-1.c
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* PR middle-end/37014 */
|
||||
+
|
||||
+void bar (signed char *);
|
||||
+
|
||||
+void
|
||||
+foo (int x, int y)
|
||||
+{
|
||||
+ int i;
|
||||
+ signed char a[123], b[123], c;
|
||||
+ for (i = 0; i < 123; i++)
|
||||
+ {
|
||||
+ int e = y - x;
|
||||
+ int d = e < 0 ? -e : e;
|
||||
+ c = d < 75;
|
||||
+ a[y] = c;
|
||||
+ b[y] = c;
|
||||
+ y--;
|
||||
+ }
|
||||
+ bar (b);
|
||||
+ bar (a);
|
||||
+}
|
||||
Reference in New Issue
Block a user