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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
But SAVE_EXPR does the same thing, so if we need to fix that, we should fix
SAVE_EXPR too.
If we didn't do:
      /* If builtin_valid_in_constant_expr_p is true,
         potential_constant_expression_1 has not recursed into the arguments
         of the builtin, verify it here.  */
      if (!builtin_valid_in_constant_expr_p (fun)
          || potential_constant_expression (arg))
        {
          bool dummy1 = false, dummy2 = false;
          arg = cxx_eval_constant_expression (&new_ctx, arg, false,
                                              &dummy1, &dummy2);
        }
during the builtin handling where we ignore the non_constant_p, we wouldn't
have this problem, so one way out of this would be to in this case record
save_exprs and if dummy1, reset them.
And yet another option is don't push to global->values or push the cleanups if
*non_constant_p.

Reply via email to