--- gcc-3.4.0/gcc/flow.c.reverse-compare 2004-02-27 22:39:19.000000000 -0500 +++ gcc-3.4.0/gcc/flow.c 2004-04-24 16:36:00.000000000 -0400 @@ -1843,6 +1843,7 @@ regset_head diff_head; regset diff = INITIALIZE_REG_SET (diff_head); basic_block bb_true, bb_false; + enum rtx_code reversed_code; int i; /* Identify the successor blocks. */ @@ -1889,8 +1890,11 @@ if (GET_CODE (reg) == REG && XEXP (cond_true, 1) == const0_rtx) { - rtx cond_false - = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), + rtx cond_false; + reversed_code = reverse_condition (GET_CODE (cond_true)); + if (reversed_code == UNKNOWN) + goto skip; + cond_false = gen_rtx_fmt_ee (reversed_code, GET_MODE (cond_true), XEXP (cond_true, 0), XEXP (cond_true, 1)); if (GET_CODE (XEXP (set_src, 1)) == PC) @@ -1925,6 +1929,7 @@ } } + skip: FREE_REG_SET (diff); } #endif