http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59986
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- But, you can only prune the abnormal edges if you don't emit the ABNORMAL_DISPATCHER (PR59920), or if (before adding abnormal edges for non-local gotos/returns_twice, but likely after adding abnormal edges for computed goto?) after you compute dominance without the abnormal edges you see that some calls dominate all non-local labels/returns_twice calls. Not emitting the dispatcher at least in some cases is unacceptable though (see PR59920), even if we managed to prune the abnormal edges aggresively, if you put the whole function in a loop and have many returns_twice functions and many calls that might longjmp in the loop, having the m*n abnormal edges is simply too much.