Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard.
2016-02-16 Richard Biener <rguent...@suse.de> PR rtl-optimization/69291 * ifcvt.c (noce_try_store_flag_constants): Re-instantiate noce_operand_ok check. Index: gcc/ifcvt.c =================================================================== --- gcc/ifcvt.c (revision 233443) +++ gcc/ifcvt.c (working copy) @@ -1277,7 +1277,8 @@ noce_try_store_flag_constants (struct no /* Allow expressions that are not using the result or plain registers where we handle overlap below. */ && (REG_P (XEXP (a, 0)) - || ! reg_overlap_mentioned_p (if_info->x, XEXP (a, 0))) + || (noce_operand_ok (XEXP (a, 0)) + && ! reg_overlap_mentioned_p (if_info->x, XEXP (a, 0)))) && if_info->branch_cost >= 2) { common = XEXP (a, 0);