http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58387
--- Comment #21 from Marc Glisse <glisse at gcc dot gnu.org> --- Thanks Jeff, sounds great :-) Even if we mark that a statement is not reachable, we probably won't eliminate many functions with side-effects executed before, since (I guess) we must be able to prove that they always return normally (no longjmp or throwing an exception or going into an infinite loop or anything fancy that would avoid coming back to execute the undefined-behavior statement), and I don't know if we can prove that for more than a few builtins and inline functions (maybe more with LTO). PS: I secretly hope that one of your jump-threading improvements will magically help with PR 55860 ;-)