diff options
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r-- | gcc/cfgcleanup.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index bbe6807627a..c070f6c0dbd 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -353,7 +353,7 @@ thread_jump (int mode, edge e, basic_block b) if (INSN_P (insn)) cselib_process_insn (insn); - nonequal = BITMAP_XMALLOC(); + nonequal = BITMAP_ALLOC (NULL); CLEAR_REG_SET (nonequal); /* Now assume that we've continued by the edge E to B and continue @@ -401,7 +401,7 @@ thread_jump (int mode, edge e, basic_block b) EXECUTE_IF_SET_IN_REG_SET (nonequal, 0, i, rsi) goto failed_exit; - BITMAP_XFREE (nonequal); + BITMAP_FREE (nonequal); cselib_finish (); if ((comparison_dominates_p (code1, code2) != 0) != (XEXP (SET_SRC (set2), 1) == pc_rtx)) @@ -410,7 +410,7 @@ thread_jump (int mode, edge e, basic_block b) return FALLTHRU_EDGE (b); failed_exit: - BITMAP_XFREE (nonequal); + BITMAP_FREE (nonequal); cselib_finish (); return NULL; } @@ -1686,6 +1686,10 @@ try_crossjump_to_edge (int mode, edge e1, edge e2) delete_basic_block (to_remove); update_forwarder_flag (redirect_from); + /* APPLE LOCAL begin mainline 4141805 */ + if (redirect_to != src2) + update_forwarder_flag (src2); + /* APPLE LOCAL end mainline 4141805 */ return true; } |