https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91389
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (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 ***