------- Comment #8 from nemet at gcc dot gnu dot org 2008-09-11 21:46 ------- It's caused by this http://gcc.gnu.org/ml/gcc-patches/2008-08/msg02376.html. In this hunk:
@@ -1901,7 +1904,8 @@ noce_try_sign_mask (struct noce_if_info INSN_B which can happen for e.g. conditional stores to memory. */ b_unconditional = (if_info->insn_b == NULL_RTX || BLOCK_FOR_INSN (if_info->insn_b) == if_info->test_bb); - if (rtx_cost (t, SET) >= COSTS_N_INSNS (2) + if (rtx_cost (t, SET, optimize_bb_for_speed_p (BLOCK_FOR_INSN (if_info->insn_b))) + >= COSTS_N_INSNS (2) && (!b_unconditional || t != if_info->b)) return FALSE; if_info->insn_b is allowed to be null. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37395