yann@339: diff -durN gcc-3.4.6.orig/gcc/flow.c gcc-3.4.6/gcc/flow.c yann@339: --- gcc-3.4.6.orig/gcc/flow.c 2005-09-01 22:51:09.000000000 +0200 yann@339: +++ gcc-3.4.6/gcc/flow.c 2007-08-15 23:00:30.000000000 +0200 yann@339: @@ -1884,6 +1884,7 @@ yann@339: rtx set_src = SET_SRC (pc_set (BB_END (bb))); yann@339: rtx cond_true = XEXP (set_src, 0); yann@339: rtx reg = XEXP (cond_true, 0); yann@339: + enum rtx_code inv_cond; yann@339: yann@339: if (GET_CODE (reg) == SUBREG) yann@339: reg = SUBREG_REG (reg); yann@339: @@ -1892,11 +1893,13 @@ yann@339: in the form of a comparison of a register against zero. yann@339: If the condition is more complex than that, then it is safe yann@339: not to record any information. */ yann@339: - if (GET_CODE (reg) == REG yann@339: + inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); yann@339: + if (inv_cond != UNKNOWN yann@339: + && GET_CODE (reg) == REG yann@339: && XEXP (cond_true, 1) == const0_rtx) yann@339: { yann@339: rtx cond_false yann@339: - = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), yann@339: + = gen_rtx_fmt_ee (inv_cond, yann@339: GET_MODE (cond_true), XEXP (cond_true, 0), yann@339: XEXP (cond_true, 1)); yann@339: if (GET_CODE (XEXP (set_src, 1)) == PC)