http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59891

--- Comment #4 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
On Tue, 21 Jan 2014, jakub at gcc dot gnu.org wrote:

> The outer C_MAYBE_CONST_EXPR comes from:
> #5  0x000000000059abd4 in note_integer_operands (expr=<cond_expr
> 0x7ffff19d8840>) at ../../gcc/c/c-typeck.c:151
> #6  0x00000000005accab in build_conditional_expr (colon_loc=5669,
> ifexp=<integer_cst 0x7ffff18b4620>, ifexp_bcp=false, 
>     op1=<integer_cst 0x7ffff18b4400>, op1_original_type=<tree 0x0>,
> op2=<nop_expr 0x7ffff19c87c0>, op2_original_type=<tree 0x0>)
>     at ../../gcc/c/c-typeck.c:4716
> #7  0x00000000005d99c4 in c_parser_conditional_expression
> (parser=0x7ffff19d9000, after=0x0, omp_atomic_lhs=<tree 0x0>)
>     at ../../gcc/c/c-parser.c:5969
> and there we don't fully fold it.

This code was supposed to have removed C_MAYBE_CONST_EXPRs where they 
could cause problems, through:

      if (int_operands)
        {
          op1 = remove_c_maybe_const_expr (op1);
          op2 = remove_c_maybe_const_expr (op2);
        }

(the relevant note_integer_operands call being conditional on 
int_operands).  So why didn't that work?

Reply via email to