diff options
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index cb81eb7..36b13d1 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1314,24 +1314,6 @@ rest_of_handle_eh (void) } } - -static void -rest_of_handle_prologue_epilogue (void) -{ - if (optimize && !flow2_completed) - cleanup_cfg (CLEANUP_EXPENSIVE); - - /* On some machines, the prologue and epilogue code, or parts thereof, - can be represented as RTL. Doing so lets us schedule insns between - it and the rest of the code and also allows delayed branch - scheduling to operate in the epilogue. */ - thread_prologue_and_epilogue_insns (get_insns ()); - epilogue_completed = 1; - - if (optimize && flow2_completed) - life_analysis (dump_file, PROP_POSTRELOAD); -} - static void rest_of_handle_stack_adjustments (void) { @@ -1369,8 +1351,15 @@ rest_of_handle_flow2 (void) if (flag_branch_target_load_optimize) rest_of_handle_branch_target_load_optimize (); - if (!targetm.late_rtl_prologue_epilogue) - rest_of_handle_prologue_epilogue (); + if (optimize) + cleanup_cfg (CLEANUP_EXPENSIVE); + + /* On some machines, the prologue and epilogue code, or parts thereof, + can be represented as RTL. Doing so lets us schedule insns between + it and the rest of the code and also allows delayed branch + scheduling to operate in the epilogue. */ + thread_prologue_and_epilogue_insns (get_insns ()); + epilogue_completed = 1; if (optimize) rest_of_handle_stack_adjustments (); @@ -1765,9 +1754,6 @@ rest_of_compilation (void) = optimize > 0 && only_leaf_regs_used () && leaf_function_p (); #endif - if (targetm.late_rtl_prologue_epilogue) - rest_of_handle_prologue_epilogue (); - #ifdef INSN_SCHEDULING if (optimize > 0 && flag_schedule_insns_after_reload) rest_of_handle_sched2 (); |