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

__builtin_apply patch



Thu Nov 13 16:59:16 1997  Scott Christley  <scottc@net-community.com>

	* expr.c (expand_builtin_apply): Prefer nonlocal over block.

diff -rcP ./expr.c ../netc-971104-1/expr.c
*** ./expr.c	Thu Nov 13 16:43:14 1997
--- ../netc-971104-1/expr.c	Thu Nov 13 16:54:00 1997
***************
*** 9594,9600 ****
  
    /* Push a new argument block and copy the arguments.  */
    do_pending_stack_adjust ();
!   emit_stack_save (SAVE_BLOCK, &old_stack_level, NULL_RTX);
  
    /* Push a block of memory onto the stack to store the memory arguments.
       Save the address in a register, and copy the memory arguments.  ??? I
--- 9594,9607 ----
  
    /* Push a new argument block and copy the arguments.  */
    do_pending_stack_adjust ();
! 
!   /* Save the stack with nonlocal if available */
! #ifdef HAVE_save_stack_nonlocal
!   if (HAVE_save_stack_nonlocal)
!     emit_stack_save (SAVE_NONLOCAL, &old_stack_level, NULL_RTX);
!   else
! #endif
!     emit_stack_save (SAVE_BLOCK, &old_stack_level, NULL_RTX);
  
    /* Push a block of memory onto the stack to store the memory arguments.
       Save the address in a register, and copy the memory arguments.  ??? I
***************
*** 9720,9726 ****
      CALL_INSN_FUNCTION_USAGE (call_insn) = call_fusage;
  
    /* Restore the stack.  */
!   emit_stack_restore (SAVE_BLOCK, old_stack_level, NULL_RTX);
  
    /* Return the address of the result block.  */
    return copy_addr_to_reg (XEXP (result, 0));
--- 9727,9738 ----
      CALL_INSN_FUNCTION_USAGE (call_insn) = call_fusage;
  
    /* Restore the stack.  */
! #ifdef HAVE_save_stack_nonlocal
!   if (HAVE_save_stack_nonlocal)
!     emit_stack_restore (SAVE_NONLOCAL, &old_stack_level, NULL_RTX);
!   else
! #endif
!     emit_stack_restore (SAVE_BLOCK, old_stack_level, NULL_RTX);
  
    /* Return the address of the result block.  */
    return copy_addr_to_reg (XEXP (result, 0));



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