diff options
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r-- | gcc/ifcvt.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index f081ecd3353..40575773b0d 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -964,6 +964,8 @@ end_ifcvt_sequence (struct noce_if_info *if_info) set_used_flags (if_info->x); set_used_flags (if_info->cond); + set_used_flags (if_info->a); + set_used_flags (if_info->b); unshare_all_rtl_in_chain (seq); end_sequence (); @@ -3473,7 +3475,7 @@ cond_exec_find_if_block (struct ce_if_block * ce_info) code processing. ??? we should fix this in the future. */ if (EDGE_COUNT (then_bb->succs) == 0) { - if (single_pred_p (else_bb)) + if (single_pred_p (else_bb) && else_bb != EXIT_BLOCK_PTR) { rtx last_insn = BB_END (then_bb); @@ -4514,8 +4516,7 @@ struct rtl_opt_pass pass_if_after_combine = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_df_finish | TODO_verify_rtl_sharing | - TODO_ggc_collect /* todo_flags_finish */ + TODO_df_finish | TODO_verify_rtl_sharing /* todo_flags_finish */ } }; @@ -4551,7 +4552,6 @@ struct rtl_opt_pass pass_if_after_reload = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_df_finish | TODO_verify_rtl_sharing | - TODO_ggc_collect /* todo_flags_finish */ + TODO_df_finish | TODO_verify_rtl_sharing /* todo_flags_finish */ } }; |