------- Comment #4 from rakdver at gcc dot gnu dot org 2007-07-11 20:56 ------- The following patch fixes the problem; I am not quite sure why this check is there.
Index: cfghooks.c =================================================================== *** cfghooks.c (revision 126547) --- cfghooks.c (working copy) *************** tidy_fallthru_edges (void) *** 838,845 **** bool can_duplicate_block_p (basic_block bb) { - edge e; - if (!cfg_hooks->can_duplicate_block_p) internal_error ("%s does not support can_duplicate_block_p", cfg_hooks->name); --- 838,843 ---- *************** can_duplicate_block_p (basic_block bb) *** 847,858 **** if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR) return false; - /* Duplicating fallthru block to exit would require adding a jump - and splitting the real last BB. */ - e = find_edge (bb, EXIT_BLOCK_PTR); - if (e && (e->flags & EDGE_FALLTHRU)) - return false; - return cfg_hooks->can_duplicate_block_p (bb); } --- 845,850 ---- -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32729