This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/60520] stack adjustment are not merged anymore
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 14 Mar 2014 08:03:39 +0000
- Subject: [Bug target/60520] stack adjustment are not merged anymore
- Auto-submitted: auto-generated
- References: <bug-60520-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60520
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #4)
> This change:
>
> diff --git a/gcc/function.c b/gcc/function.c
> index a61e475..3b6718f 100644
> --- a/gcc/function.c
> +++ b/gcc/function.c
> @@ -6238,6 +6238,7 @@ thread_prologue_and_epilogue_insns (void)
> }
> /* Now duplicate the tails. */
> if (!bitmap_empty_p (&bb_tail))
> + {
> FOR_EACH_BB_REVERSE_FN (bb, cfun)
> {
> basic_block copy_bb, tbb;
> @@ -6304,6 +6305,17 @@ thread_prologue_and_epilogue_insns (void)
> if (bitmap_empty_p (&bb_tail))
> break;
> }
> +
> + /* Basic blocks may have been changed. Merge each basic block
> + with its successor if possible. */
> + FOR_EACH_BB_FN (bb, cfun)
> + if (single_succ_p (bb))
> + {
> + basic_block succ_bb = single_succ (bb);
> + if (can_merge_blocks_p (bb, succ_bb))
> + merge_blocks (bb, succ_bb);
> + }
> + }
> }
>
> fail_shrinkwrap:
>
> seems to work.
We have cfg_cleanup for this, no?