This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Results for 3.4-bi 20021213 (experimental) testsuite on
- From: Jason Merrill <jason at redhat dot com>
- To: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Cc: zack at codesourcery dot com, nathan at codesourcery dot com,gcc-testresults at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Tue, 17 Dec 2002 19:44:34 -0500
- Subject: Re: Results for 3.4-bi 20021213 (experimental) testsuite on
- References: <200212172227.gBHMRr7I010275@hiauly1.hia.nrc.ca>
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);