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.