On Sun, Sep 20, 2020 at 07:08:09PM -0400, Marek Polacek via Gcc-patches wrote:
> We crash here because since r11-3302 the C FE uses codes like SWITCH_STMT
> in the else branches in the attached test, and inchash::add_expr in
> do_warn_duplicated_branches doesn't handle these front-end codes.  In
> the C++ FE this works because by the time we get to 
> do_warn_duplicated_branches
> we've already cp_genericize'd the SWITCH_STMT tree into a SWITCH_EXPR.
> 
> The fix is to call do_warn_duplicated_branches_r only after loops and other
> structured control constructs have been lowered.
> 
> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?
> 
> gcc/c-family/ChangeLog:
> 
>       PR c/97125
>       * c-gimplify.c (c_genericize): Only call do_warn_duplicated_branches_r
>       after loops and other structured control constructs have been lowered.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR c/97125
>       * c-c++-common/Wduplicated-branches-15.c: New test.

LGTM, thanks.

        Jakub

Reply via email to