Hi, tidy_fallthru_edges contains RTL-specific bits:
if (! (s->flags & EDGE_COMPLEX) && s->dest == c && !find_reg_note (BB_END (b), REG_CROSSING_JUMP, NULL_RTX)) tidy_fallthru_edge (s); so it is disabled at the GIMPLE level. That's why I don't think that calling it from tree-inline.c makes much sense. Tested on i586-suse-linux, OK for mainline? 2011-04-04 Eric Botcazou <ebotca...@adacore.com> * cfghooks.c (tidy_fallthru_edges): Add ??? comment. * tree-inline.c (delete_unreachable_blocks_update_callgraph): Remove call to tidy_fallthru_edges. -- Eric Botcazou
Index: cfghooks.c =================================================================== --- cfghooks.c (revision 171818) +++ cfghooks.c (working copy) @@ -830,7 +830,9 @@ tidy_fallthru_edge (edge e) /* Fix up edges that now fall through, or rather should now fall through but previously required a jump around now deleted blocks. Simplify the search by only examining blocks numerically adjacent, since this - is how they were created. */ + is how they were created. + + ??? This routine is currently RTL specific. */ void tidy_fallthru_edges (void) Index: tree-inline.c =================================================================== --- tree-inline.c (revision 171818) +++ tree-inline.c (working copy) @@ -4964,8 +4964,6 @@ delete_unreachable_blocks_update_callgra } } - if (changed) - tidy_fallthru_edges (); return changed; }