http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51106
Andrey Belevantsev <abel at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED CC| |rguenth at gcc dot gnu.org Resolution|FIXED | Target Milestone|4.5.4 |4.8.0 Known to fail| |4.8.0 --- Comment #13 from Andrey Belevantsev <abel at gcc dot gnu.org> 2012-03-27 12:42:06 UTC --- It's failing not only on sh, but on x86-64 too, started with (no surprise here) r185564: 2012-03-20 Richard Guenther <rguent...@suse.de> * tree-pass.h (pass_rtl_eh): Remove. Richard, the issue here was that when removing the wrong asm jump, we need also to fixup the cfg. This can be done by the purge_dead_edges call because as Jakub mentioned in comment #3 the basic block with the asm has two successor edges, one of them is fallthru. After your patch (probably because of the new call to cleanup_cfg) there is no more fallthru edge but a single edge. Which blows up purge_dead_edges called from delete_insn_and_edges. So probably purge_dead_edges should be fixed to expect not having a fallthru edge -- Jakub may have more context here.