From: Jan Hubicka Date: Wed, 8 Nov 2000 20:59:34 +0000 (+0100) Subject: regmove.c (combine_stack_adjustments_for_blocks): Recognize pushes formed using PRE_M... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=756d6f0c51001dc24438088c7961d507d4835b57;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6c6fd051257..aa5025d411b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Nov 8 21:53:41 MET 2000 Jan Hubicka + + * regmove.c (combine_stack_adjustments_for_blocks): Recognize pushes + formed using PRE_MODIFY too. + 2000-11-08 Mark Mitchell * c-tree.texi (VAR_DECL): Describe representation of GCC's diff --git a/gcc/regmove.c b/gcc/regmove.c index ebd0ca444bf..008b22cae3e 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -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)