diff options
Diffstat (limited to 'gcc-4.4.0/gcc/recog.c')
-rw-r--r-- | gcc-4.4.0/gcc/recog.c | 66 |
1 files changed, 34 insertions, 32 deletions
diff --git a/gcc-4.4.0/gcc/recog.c b/gcc-4.4.0/gcc/recog.c index ea0d305f6..67991082f 100644 --- a/gcc-4.4.0/gcc/recog.c +++ b/gcc-4.4.0/gcc/recog.c @@ -3226,40 +3226,44 @@ peephole2_optimize (void) do_cleanup_cfg |= purge_dead_edges (bb); } -#ifdef HAVE_conditional_execution - for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i) - peep2_insn_data[i].insn = NULL_RTX; - peep2_insn_data[peep2_current].insn = PEEP2_EOB; - peep2_current_count = 0; -#else - /* Back up lifetime information past the end of the - newly created sequence. */ - if (++i >= MAX_INSNS_PER_PEEP2 + 1) - i = 0; - bitmap_copy (live, peep2_insn_data[i].live_before); - - /* Update life information for the new sequence. */ - x = attempt; - do + if (targetm.have_conditional_execution ()) { - if (INSN_P (x)) + for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i) + peep2_insn_data[i].insn = NULL_RTX; + peep2_insn_data[peep2_current].insn = PEEP2_EOB; + peep2_current_count = 0; + } + else + { + /* Back up lifetime information past the end of the + newly created sequence. */ + if (++i >= MAX_INSNS_PER_PEEP2 + 1) + i = 0; + bitmap_copy (live, peep2_insn_data[i].live_before); + + /* Update life information for the new sequence. */ + x = attempt; + do { - if (--i < 0) - i = MAX_INSNS_PER_PEEP2; - if (peep2_current_count < MAX_INSNS_PER_PEEP2 - && peep2_insn_data[i].insn == NULL_RTX) - peep2_current_count++; - peep2_insn_data[i].insn = x; - df_insn_rescan (x); - df_simulate_one_insn_backwards (bb, x, live); - bitmap_copy (peep2_insn_data[i].live_before, live); + if (INSN_P (x)) + { + if (--i < 0) + i = MAX_INSNS_PER_PEEP2; + if (peep2_current_count < MAX_INSNS_PER_PEEP2 + && peep2_insn_data[i].insn == NULL_RTX) + peep2_current_count++; + peep2_insn_data[i].insn = x; + df_insn_rescan (x); + df_simulate_one_insn_backwards (bb, x, live); + bitmap_copy (peep2_insn_data[i].live_before, + live); + } + x = PREV_INSN (x); } - x = PREV_INSN (x); - } - while (x != prev); + while (x != prev); - peep2_current = i; -#endif + peep2_current = i; + } /* If we generated a jump instruction, it won't have JUMP_LABEL set. Recompute after we're done. */ @@ -3638,5 +3642,3 @@ struct rtl_opt_pass pass_split_for_shorten_branches = TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */ } }; - - |