X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fcfghooks.c;h=10c04a8b0577baf4ffe4d1be0f790c130245106d;hp=0897b0df5653f07a050ee7a3bc04585ec3174a9f;hb=2c3933b87b056dce86c72fc95813f10d528e1a50;hpb=b4e5c32de33a35006cc9aa65a94af1fd9a816cd0 diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index 0897b0df565..10c04a8b057 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -425,6 +425,7 @@ edge split_block (basic_block bb, void *i) { basic_block new_bb; + edge res; if (!cfg_hooks->split_block) internal_error ("%s does not support split_block", cfg_hooks->name); @@ -450,7 +451,15 @@ split_block (basic_block bb, void *i) bb->loop_father->latch = new_bb; } - return make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU); + res = make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU); + + if (bb->flags & BB_IRREDUCIBLE_LOOP) + { + new_bb->flags |= BB_IRREDUCIBLE_LOOP; + res->flags |= EDGE_IRREDUCIBLE_LOOP; + } + + return res; } /* Splits block BB just after labels. The newly created edge is returned. */