Commit 63d0f6ab by Segher Boessenkool Committed by Segher Boessenkool

function: Do the CLEANUP_EXPENSIVE after shrink-wrapping, not before

We should do CLEANUP_EXPENSIVE after shrink-wrapping, because shrink-
wrapping creates constructs that CLEANUP_EXPENSIVE can optimise, and
nothing runs CLEANUP_EXPENSIVE later.


	* function.c (rest_of_handle_thread_prologue_and_epilogue): Call
	cleanup_cfg with CLEANUP_EXPENSIVE after shrink-wrapping instead
	of before.  Add a comment.

From-SVN: r236372
parent a1e71b01
2016-05-18 Segher Boessenkool <segher@kernel.crashing.org>
* function.c (rest_of_handle_thread_prologue_and_epilogue): Call
cleanup_cfg with CLEANUP_EXPENSIVE after shrink-wrapping instead
of before. Add a comment.
2016-05-18 Bin Cheng <bin.cheng@arm.com> 2016-05-18 Bin Cheng <bin.cheng@arm.com>
* tree-ssa-loop-ivopts.c (get_computation_cost_at): Check invariant * tree-ssa-loop-ivopts.c (get_computation_cost_at): Check invariant
......
...@@ -6369,8 +6369,10 @@ make_pass_leaf_regs (gcc::context *ctxt) ...@@ -6369,8 +6369,10 @@ make_pass_leaf_regs (gcc::context *ctxt)
static unsigned int static unsigned int
rest_of_handle_thread_prologue_and_epilogue (void) rest_of_handle_thread_prologue_and_epilogue (void)
{ {
/* prepare_shrink_wrap is sensitive to the block structure of the control
flow graph, so clean it up first. */
if (optimize) if (optimize)
cleanup_cfg (CLEANUP_EXPENSIVE); cleanup_cfg (0);
/* On some machines, the prologue and epilogue code, or parts thereof, /* On some machines, the prologue and epilogue code, or parts thereof,
can be represented as RTL. Doing so lets us schedule insns between can be represented as RTL. Doing so lets us schedule insns between
...@@ -6384,7 +6386,7 @@ rest_of_handle_thread_prologue_and_epilogue (void) ...@@ -6384,7 +6386,7 @@ rest_of_handle_thread_prologue_and_epilogue (void)
/* Shrink-wrapping can result in unreachable edges in the epilogue, /* Shrink-wrapping can result in unreachable edges in the epilogue,
see PR57320. */ see PR57320. */
cleanup_cfg (0); cleanup_cfg (optimize ? CLEANUP_EXPENSIVE : 0);
/* The stack usage info is finalized during prologue expansion. */ /* The stack usage info is finalized during prologue expansion. */
if (flag_stack_usage_info) if (flag_stack_usage_info)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment