http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48742
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-04-26 14:50:47 UTC --- There shouldn't be nested C_MAYBE_CONST_EXPR. The code you quote > if (!in_late_binary_op) > { > if (!op0_maybe_const || TREE_CODE (op0) != INTEGER_CST) > op0 = c_wrap_maybe_const (op0, !op0_maybe_const); > if (!op1_maybe_const || TREE_CODE (op1) != INTEGER_CST) > op1 = c_wrap_maybe_const (op1, !op1_maybe_const); > } is to avoid the result of folding getting folded again and to track how constant that result is. But if int_operands I don't think this wrapping of the operands is needed because the code after return_build_binary_op: will deal with wrapping the result.