--- gcc-3.3.3/gcc/flow.c~ 2003-07-30 01:57:24.000000000 +0100 +++ gcc-3.3.3/gcc/flow.c 2004-04-23 19:23:43.000000000 +0100 @@ -1904,6 +1904,7 @@ regset diff = INITIALIZE_REG_SET (diff_head); basic_block bb_true, bb_false; rtx cond_true, cond_false, set_src; + enum rtx_code reversed_code; int i; /* Identify the successor blocks. */ @@ -1934,7 +1935,11 @@ /* Extract the condition from the branch. */ set_src = SET_SRC (pc_set (bb->end)); cond_true = XEXP (set_src, 0); - cond_false = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), + 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) @@ -1980,6 +1985,7 @@ }); } + skip: FREE_REG_SET (diff); } #endif