This is the mail archive of the gcc-patches@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]

x86_64 merger part 20 - push_operand update


Hi
This part probably should have go with the rest of push changes, but I tought
it is already in the mainline.

Wed Mar 21 11:08:17 CET 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (push_operand): Recognize new format of push instructions.

Index: recog.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/recog.c,v
retrieving revision 1.90
diff -c -3 -p -r1.90 recog.c
*** recog.c	2001/02/18 23:56:34	1.90
--- recog.c	2001/03/21 10:07:36
*************** push_operand (op, mode)
*** 1358,1365 ****
  
    op = XEXP (op, 0);
  
!   if (GET_CODE (op) != STACK_PUSH_CODE)
!     return 0;
  
    return XEXP (op, 0) == stack_pointer_rtx;
  }
--- 1358,1383 ----
  
    op = XEXP (op, 0);
  
!   if (PUSH_ROUNDING (GET_MODE_SIZE (mode)) == GET_MODE_SIZE (mode))
!     {
!       if (GET_CODE (op) != STACK_PUSH_CODE)
! 	return 0;
!     }
!   else
!     {
!       int rounded_size = PUSH_ROUNDING (GET_MODE_SIZE (mode));
!       if (GET_CODE (op) != PRE_MODIFY
! 	  || GET_CODE (XEXP (op, 1)) != PLUS
! 	  || XEXP (XEXP (op, 1), 0) != XEXP (op, 0)
! 	  || GET_CODE (XEXP (XEXP (op, 1), 1)) != CONST_INT
! #ifdef STACK_GROWS_DOWNWARD
! 	  || INTVAL (XEXP (XEXP (op, 1), 1)) != -rounded_size
! #else
! 	  || INTVAL (XEXP (XEXP (op, 1), 1)) != rounded_size
! #endif
! 	  )
! 	return 0;
!     }
  
    return XEXP (op, 0) == stack_pointer_rtx;
  }


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