regmove.c (combine_stack_adjustments_for_blocks): Recognize pushes formed using PRE_MODIFY too.

* regmove.c (combine_stack_adjustments_for_blocks): Recognize pushes
	formed using PRE_MODIFY too.

From-SVN: r37326
This commit is contained in:
Jan Hubicka 2000-11-08 21:59:34 +01:00 committed by Jan Hubicka
parent 136c35df1c
commit 756d6f0c51
2 changed files with 15 additions and 3 deletions

View File

@ -1,3 +1,8 @@
Wed Nov 8 21:53:41 MET 2000 Jan Hubicka <jh@suse.cz>
* regmove.c (combine_stack_adjustments_for_blocks): Recognize pushes
formed using PRE_MODIFY too.
2000-11-08 Mark Mitchell <mark@codesourcery.com>
* c-tree.texi (VAR_DECL): Describe representation of GCC's

View File

@ -2340,10 +2340,17 @@ combine_stack_adjustments_for_block (bb)
turn it into a direct store. Obviously we can't do this if
there were any intervening uses of the stack pointer. */
if (memlist == NULL
&& (last_sp_adjust
== (HOST_WIDE_INT) GET_MODE_SIZE (GET_MODE (dest)))
&& GET_CODE (dest) == MEM
&& GET_CODE (XEXP (dest, 0)) == PRE_DEC
&& ((GET_CODE (XEXP (dest, 0)) == PRE_DEC
&& (last_sp_adjust
== (HOST_WIDE_INT) GET_MODE_SIZE (GET_MODE (dest))))
|| (GET_CODE (XEXP (dest, 0)) == PRE_MODIFY
&& GET_CODE (XEXP (XEXP (dest, 0), 1)) == PLUS
&& XEXP (XEXP (XEXP (dest, 0), 1), 0) == stack_pointer_rtx
&& (GET_CODE (XEXP (XEXP (XEXP (dest, 0), 1), 1))
== CONST_INT)
&& (INTVAL (XEXP (XEXP (XEXP (dest, 0), 1), 1))
== -last_sp_adjust)))
&& XEXP (XEXP (dest, 0), 0) == stack_pointer_rtx
&& ! reg_mentioned_p (stack_pointer_rtx, src)
&& memory_address_p (GET_MODE (dest), stack_pointer_rtx)