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]
Other format: [Raw text]

Re: Results for 3.4-bi 20021213 (experimental) testsuite on


Hmm, it seems that expanding directly into struct_value_rtx is asking for
trouble.  Does this patch fix things for you?

2002-12-17  Jason Merrill  <jason@redhat.com>

	* calls.c (expand_call): Don't try to be clever about expanding
	the return slot address.

*** calls.c.~1~	2002-12-17 16:19:06.000000000 -0500
--- calls.c	2002-12-17 19:40:39.000000000 -0500
*************** expand_call (exp, target, ignore)
*** 2249,2266 ****
  
  	if (CALL_EXPR_HAS_RETURN_SLOT_ADDR (exp))
  	  {
! 	    /* The structure value address arg is already in actparms.  */
! 	    if (struct_value_rtx == 0)
! 	      /* We want to pass it as a normal argument, so leave it.  */
! 	      structure_value_addr_parm = 1;
! 	    else
! 	      {
! 		/* We want to pass it in a special location.  */
! 		tree return_arg = TREE_VALUE (actparms);
! 		actparms = TREE_CHAIN (actparms);
! 		structure_value_addr = expand_expr (return_arg, struct_value_rtx,
! 						    VOIDmode, EXPAND_NORMAL);
! 	      }
  	  }
  	else if (target && GET_CODE (target) == MEM)
  	  structure_value_addr = XEXP (target, 0);
--- 2249,2260 ----
  
  	if (CALL_EXPR_HAS_RETURN_SLOT_ADDR (exp))
  	  {
! 	    /* The structure value address arg is already in actparms.
! 	       Pull it out.  */
! 	    tree return_arg = TREE_VALUE (actparms);
! 	    actparms = TREE_CHAIN (actparms);
! 	    structure_value_addr = expand_expr (return_arg, NULL_RTX,
! 						VOIDmode, EXPAND_NORMAL);
  	  }
  	else if (target && GET_CODE (target) == MEM)
  	  structure_value_addr = XEXP (target, 0);

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