OSDN Git Service

* except.c (can_throw_internal_1, can_throw_external_1): Add
[pf3gnuchains/gcc-fork.git] / gcc / cfgcleanup.c
index 70bd28d..10e6f10 100644 (file)
@@ -536,7 +536,7 @@ try_forward_edges (int mode, basic_block b)
             For fallthru forwarders, the LOOP_BEG note must appear between
             the header of block and CODE_LABEL of the loop, for non forwarders
             it must appear before the JUMP_INSN.  */
-         if ((mode & CLEANUP_PRE_LOOP) && optimize)
+         if ((mode & CLEANUP_PRE_LOOP) && optimize && flag_loop_optimize)
            {
              rtx insn = (EDGE_SUCC (target, 0)->flags & EDGE_FALLTHRU
                          ? BB_HEAD (target) : prev_nonnote_insn (BB_END (target)));
@@ -1677,6 +1677,8 @@ try_crossjump_to_edge (int mode, edge e1, edge e2)
   delete_basic_block (to_remove);
 
   update_forwarder_flag (redirect_from);
+  if (redirect_to != src2)
+    update_forwarder_flag (src2);
 
   return true;
 }