https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91389
--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> (In reply to Martin Liška from comment #4)
> > (In reply to Jakub Jelinek from comment #3)
> > > I see dead code everywhere in the function, they must have some weirdo
> > > macro
> > > for cases that wraps everything in case something { ... } break;
> >
> > Is the 'break;' really dead in such situation (when you don't have a return
> > or another break within the {} block)?
> >
> > > Many of those break; statements are dead code.
>
> It is dead when you do have an unconditional return in there. As I said in
> the other PR, we try hard to do a good job with block_may_fallthru and
> gimple_seq_may_fallthru, but it can't handle everything, feel free to
> improve those. And all -fsanitize=thread does is it adds a cleanup code,
> the same thing as you get if you have an automatic variable with a
> destructor.
>
> *** This bug has been marked as a duplicate of bug 86899 ***
Sure, thank you for your time.