summaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r--gcc/ifcvt.c10
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 */
}
};