Commit f32ac70d by Jason Merrill Committed by Jason Merrill

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

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

From-SVN: r60234
parent 212f6dd0
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 (expand_call): Handle CALL_EXPR_HAS_RETURN_SLOT_ADDR
with special struct-return ABIs.
2002-12-18 Kaz kojima <kkojima@gcc.gnu.org> 2002-12-18 Kaz kojima <kkojima@gcc.gnu.org>
* config/sh/linux.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC): * config/sh/linux.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC):
......
...@@ -2249,18 +2249,13 @@ expand_call (exp, target, ignore) ...@@ -2249,18 +2249,13 @@ expand_call (exp, target, ignore)
if (CALL_EXPR_HAS_RETURN_SLOT_ADDR (exp)) if (CALL_EXPR_HAS_RETURN_SLOT_ADDR (exp))
{ {
/* The structure value address arg is already in actparms. */ /* The structure value address arg is already in actparms.
if (struct_value_rtx == 0) Pull it out. It might be nice to just leave it there, but
/* We want to pass it as a normal argument, so leave it. */ we need to set structure_value_addr. */
structure_value_addr_parm = 1; tree return_arg = TREE_VALUE (actparms);
else actparms = TREE_CHAIN (actparms);
{ structure_value_addr = expand_expr (return_arg, NULL_RTX,
/* We want to pass it in a special location. */ VOIDmode, EXPAND_NORMAL);
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) else if (target && GET_CODE (target) == MEM)
structure_value_addr = XEXP (target, 0); structure_value_addr = XEXP (target, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment