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>
* tree-ssa-loop-ivopts.c (get_computation_cost_at): Check invariant
......
......@@ -6369,8 +6369,10 @@ make_pass_leaf_regs (gcc::context *ctxt)
static unsigned int
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)
cleanup_cfg (CLEANUP_EXPENSIVE);
cleanup_cfg (0);
/* On some machines, the prologue and epilogue code, or parts thereof,
can be represented as RTL. Doing so lets us schedule insns between
......@@ -6384,7 +6386,7 @@ rest_of_handle_thread_prologue_and_epilogue (void)
/* Shrink-wrapping can result in unreachable edges in the epilogue,
see PR57320. */
cleanup_cfg (0);
cleanup_cfg (optimize ? CLEANUP_EXPENSIVE : 0);
/* The stack usage info is finalized during prologue expansion. */
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