https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117291

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am not sure if there is not much to be done.
The front-end is recusive here:
      /* Binary operations evaluating both arguments (increment and
         decrement are binary internally in GCC).  */
      orig_op0 = op0 = TREE_OPERAND (expr, 0);
      orig_op1 = op1 = TREE_OPERAND (expr, 1);
      op0 = c_fully_fold_internal (op0, in_init, maybe_const_operands,
                                   maybe_const_itself, for_int_const,
                                   op0_lval);
      STRIP_TYPE_NOPS (op0);
      /* The RHS of a MODIFY_EXPR was fully folded when building that
         expression for the sake of conversion warnings.  */
      if (code != MODIFY_EXPR)
        op1 = c_fully_fold_internal (op1, in_init, maybe_const_operands,
                                     maybe_const_itself, for_int_const, false);
      STRIP_TYPE_NOPS (op1);

      if (for_int_const && (TREE_CODE (op0) != INTEGER_CST
                            || TREE_CODE (op1) != INTEGER_CST))
        goto out;

Reply via email to