Patch ping
Jakub Jelinek
jakub@redhat.com
Tue Sep 27 21:33:00 GMT 2016
Hi!
On Tue, Sep 20, 2016 at 06:12:26PM +0200, Jakub Jelinek wrote:
> 2016-09-20 Jakub Jelinek <jakub@redhat.com>
>
> PR c++/77467
> * constexpr.c (enum constexpr_switch_state): New.
> (struct constexpr_ctx): Add css_state field.
> (label_matches): Add CTX and STMT arguments, remove I and
> DEFAULT_LABEL. For CASE_LABEL_EXPR assert ctx->css_state != NULL,
> handle default labels according to css_state.
> (cxx_eval_statement_list): Remove statement skipping, label_matches
> and default_label handling code.
> (cxx_eval_loop_expr): Exit after first iteration even if
> switches (jump_target).
> (cxx_eval_switch_expr): Set up css_state field in ctx, if default
> label has been seen in the body, but no cases matched, evaluate
> the body second time.
> (cxx_eval_constant_expression): Handle stmt skipping and label_matches
> here. Handle PREDICT_EXPR. For MODIFY_EXPR or INIT_EXPR, assert
> statement is not skipped. For COND_EXPR during skipping, don't
> evaluate condition, just the then block and if still skipping at the
> end also the else block.
> (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
> (is_sub_constant_expr): Likewise.
>
> * g++.dg/cpp1y/constexpr-77467.C: New test.
I'd like to ping this patch. Ok for trunk?
Jakub
More information about the Gcc-patches
mailing list