This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/60520] stack adjustment are not merged anymore


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?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]