diff options
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch')
-rw-r--r-- | meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch deleted file mode 100644 index 6cfc01feff..0000000000 --- a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch +++ /dev/null @@ -1,201 +0,0 @@ -2010-12-14 Sandra Loosemore <sandra@codesourcery.com> - - Backport from mainline: - - 2010-12-14 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/46909 - - gcc/ - * tree-ssa-ccp.c (and_var_with_comparison_1): Save partial - result even in the is_and case, if both partial results - are the same, return it. - (or_var_with_comparison_1): Use is_or predicate instead of - innercode == TRUTH_OR_EXPR test. Save partial result - even in the is_or case, if both partial results are the - same, return it. In the !is_or case when both partial - results are the same, return the partial result instead - of boolean_true_node. - - gcc/testsuite/ - * gcc.c-torture/execute/pr46909-1.c: New test. - * gcc.c-torture/execute/pr46909-2.c: New test. - * gcc.dg/pr46909.c: New test. - -=== added file 'gcc/testsuite/gcc.c-torture/execute/pr46909-1.c' ---- old/gcc/testsuite/gcc.c-torture/execute/pr46909-1.c 1970-01-01 00:00:00 +0000 -+++ new/gcc/testsuite/gcc.c-torture/execute/pr46909-1.c 2011-01-05 11:27:00 +0000 -@@ -0,0 +1,22 @@ -+/* PR tree-optimization/46909 */ -+ -+extern void abort (); -+ -+int -+__attribute__ ((__noinline__)) -+foo (unsigned int x) -+{ -+ if (! (x == 4 || x == 6) || (x == 2 || x == 6)) -+ return 1; -+ return -1; -+} -+ -+int -+main () -+{ -+ int i; -+ for (i = -10; i < 10; i++) -+ if (foo (i) != 1 - 2 * (i == 4)) -+ abort (); -+ return 0; -+} - -=== added file 'gcc/testsuite/gcc.c-torture/execute/pr46909-2.c' ---- old/gcc/testsuite/gcc.c-torture/execute/pr46909-2.c 1970-01-01 00:00:00 +0000 -+++ new/gcc/testsuite/gcc.c-torture/execute/pr46909-2.c 2011-01-05 11:27:00 +0000 -@@ -0,0 +1,22 @@ -+/* PR tree-optimization/46909 */ -+ -+extern void abort (void); -+ -+int -+__attribute__((noinline)) -+foo (int x) -+{ -+ if ((x != 0 && x != 13) || x == 5 || x == 20) -+ return 1; -+ return -1; -+} -+ -+int -+main (void) -+{ -+ int i; -+ for (i = -10; i < 30; i++) -+ if (foo (i) != 1 - 2 * (i == 0) - 2 * (i == 13)) -+ abort (); -+ return 0; -+} - -=== added file 'gcc/testsuite/gcc.dg/pr46909.c' ---- old/gcc/testsuite/gcc.dg/pr46909.c 1970-01-01 00:00:00 +0000 -+++ new/gcc/testsuite/gcc.dg/pr46909.c 2011-01-05 11:27:00 +0000 -@@ -0,0 +1,17 @@ -+/* PR tree-optimization/46909 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-ifcombine" } */ -+ -+extern void abort (); -+ -+int -+__attribute__ ((__noinline__)) -+foo (unsigned int x) -+{ -+ if (! (x == 4 || x == 6) || (x == 2 || x == 6)) -+ return 1; -+ return -1; -+} -+ -+/* { dg-final { scan-tree-dump "optimizing two comparisons to x_\[0-9\]+\\(D\\) != 4" "ifcombine" } } */ -+/* { dg-final { cleanup-tree-dump "ifcombine" } } */ - -=== modified file 'gcc/tree-ssa-ccp.c' ---- old/gcc/tree-ssa-ccp.c 2010-09-16 09:15:46 +0000 -+++ new/gcc/tree-ssa-ccp.c 2011-01-05 11:27:00 +0000 -@@ -3508,14 +3508,11 @@ - /* Handle the OR case, where we are redistributing: - (inner1 OR inner2) AND (op2a code2 op2b) - => (t OR (inner2 AND (op2a code2 op2b))) */ -- else -- { -- if (integer_onep (t)) -- return boolean_true_node; -- else -- /* Save partial result for later. */ -- partial = t; -- } -+ else if (integer_onep (t)) -+ return boolean_true_node; -+ -+ /* Save partial result for later. */ -+ partial = t; - } - - /* Compute the second partial result, (inner2 AND (op2a code op2b)) */ -@@ -3536,6 +3533,10 @@ - return inner1; - else if (integer_zerop (t)) - return boolean_false_node; -+ /* If both are the same, we can apply the identity -+ (x AND x) == x. */ -+ else if (partial && same_bool_result_p (t, partial)) -+ return t; - } - - /* Handle the OR case. where we are redistributing: -@@ -3945,7 +3946,7 @@ - => (t OR inner2) - If the partial result t is a constant, we win. Otherwise - continue on to try reassociating with the other inner test. */ -- if (innercode == TRUTH_OR_EXPR) -+ if (is_or) - { - if (integer_onep (t)) - return boolean_true_node; -@@ -3956,14 +3957,11 @@ - /* Handle the AND case, where we are redistributing: - (inner1 AND inner2) OR (op2a code2 op2b) - => (t AND (inner2 OR (op2a code op2b))) */ -- else -- { -- if (integer_zerop (t)) -- return boolean_false_node; -- else -- /* Save partial result for later. */ -- partial = t; -- } -+ else if (integer_zerop (t)) -+ return boolean_false_node; -+ -+ /* Save partial result for later. */ -+ partial = t; - } - - /* Compute the second partial result, (inner2 OR (op2a code op2b)) */ -@@ -3977,13 +3975,18 @@ - { - /* Handle the OR case, where we are reassociating: - (inner1 OR inner2) OR (op2a code2 op2b) -- => (inner1 OR t) */ -- if (innercode == TRUTH_OR_EXPR) -+ => (inner1 OR t) -+ => (t OR partial) */ -+ if (is_or) - { - if (integer_zerop (t)) - return inner1; - else if (integer_onep (t)) - return boolean_true_node; -+ /* If both are the same, we can apply the identity -+ (x OR x) == x. */ -+ else if (partial && same_bool_result_p (t, partial)) -+ return t; - } - - /* Handle the AND case, where we are redistributing: -@@ -4000,13 +4003,13 @@ - operand to the redistributed AND expression. The - interesting case is when at least one is true. - Or, if both are the same, we can apply the identity -- (x AND x) == true. */ -+ (x AND x) == x. */ - if (integer_onep (partial)) - return t; - else if (integer_onep (t)) - return partial; - else if (same_bool_result_p (t, partial)) -- return boolean_true_node; -+ return t; - } - } - } - |