http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59891
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Because the C_MAYBE_CONST_EXPR has been added again in: 4576 if (!op2_maybe_const || TREE_CODE (op2) != INTEGER_CST) 4577 op2 = c_wrap_maybe_const (op2, !op2_maybe_const); around the TRUNC_MOD_EXPR, then 4680 op1 = ep_convert_and_check (result_type, op1, semantic_result_type); 4681 op2 = ep_convert_and_check (result_type, op2, semantic_result_type); converted the int type C_MAYBE_CONST_EXPR to unsigned int type (i.e. added NOP_EXPR around it), and then the remove_c_maybe_const_expr in: 4709 if (int_operands) 4710 { 4711 op1 = remove_c_maybe_const_expr (op1); 4712 op2 = remove_c_maybe_const_expr (op2); 4713 } 4714 ret = build3 (COND_EXPR, result_type, ifexp, op1, op2); 4715 if (int_operands) 4716 ret = note_integer_operands (ret); doesn't do anything anymore, since it only looks at toplevel C_MAYBE_CONST_EXPR, not embedded in some NOP_EXPR.