Workaround for "PowerPC-8xx CPU15 errata" (whatever that might be).
Patch by Nye LIU: http://sourceware.org/ml/crossgcc/2009-05/msg00014.html
-------- diffstat follows --------
/trunk/patches/eglibc/2_9/100-powerpc-8xx-CPU15-errata.patch | 49 49 0 0 ++++++++++++++++++
/trunk/scripts/build/libc/eglibc.sh | 10 9 1 0 +++-
2 files changed, 58 insertions(+), 1 deletion(-)
1 diff -durN gcc-3.4.6.orig/gcc/flow.c gcc-3.4.6/gcc/flow.c
2 --- gcc-3.4.6.orig/gcc/flow.c 2005-09-01 22:51:09.000000000 +0200
3 +++ gcc-3.4.6/gcc/flow.c 2007-08-15 23:00:30.000000000 +0200
5 rtx set_src = SET_SRC (pc_set (BB_END (bb)));
6 rtx cond_true = XEXP (set_src, 0);
7 rtx reg = XEXP (cond_true, 0);
8 + enum rtx_code inv_cond;
10 if (GET_CODE (reg) == SUBREG)
11 reg = SUBREG_REG (reg);
12 @@ -1892,11 +1893,13 @@
13 in the form of a comparison of a register against zero.
14 If the condition is more complex than that, then it is safe
15 not to record any information. */
16 - if (GET_CODE (reg) == REG
17 + inv_cond = reversed_comparison_code (cond_true, BB_END (bb));
18 + if (inv_cond != UNKNOWN
19 + && GET_CODE (reg) == REG
20 && XEXP (cond_true, 1) == const0_rtx)
23 - = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)),
24 + = gen_rtx_fmt_ee (inv_cond,
25 GET_MODE (cond_true), XEXP (cond_true, 0),
27 if (GET_CODE (XEXP (set_src, 1)) == PC)