(expand_call) [PCC_STATIC_STRUCT_RETURN]:

Always set pcc_struct_value if aggregate_value_p returns 1.

From-SVN: r4007
This commit is contained in:
Richard Stallman 1993-04-04 21:28:09 +00:00
parent 1d839079a6
commit 9e7b1d0a36

View File

@ -600,34 +600,33 @@ expand_call (exp, target, ignore)
is_const = 0; is_const = 0;
#ifdef PCC_STATIC_STRUCT_RETURN #ifdef PCC_STATIC_STRUCT_RETURN
if (flag_pcc_struct_return) {
{ pcc_struct_value = 1;
pcc_struct_value = 1; is_integrable = 0; /* Easier than making that case work right. */
is_integrable = 0; /* Easier than making that case work right. */ }
} #else /* not PCC_STATIC_STRUCT_RETURN */
else {
#endif struct_value_size = int_size_in_bytes (TREE_TYPE (exp));
{
struct_value_size = int_size_in_bytes (TREE_TYPE (exp));
if (struct_value_size < 0) if (struct_value_size < 0)
abort (); abort ();
if (target && GET_CODE (target) == MEM) if (target && GET_CODE (target) == MEM)
structure_value_addr = XEXP (target, 0); structure_value_addr = XEXP (target, 0);
else else
{ {
/* Assign a temporary on the stack to hold the value. */ /* Assign a temporary on the stack to hold the value. */
/* For variable-sized objects, we must be called with a target /* For variable-sized objects, we must be called with a target
specified. If we were to allocate space on the stack here, specified. If we were to allocate space on the stack here,
we would have no way of knowing when to free it. */ we would have no way of knowing when to free it. */
structure_value_addr structure_value_addr
= XEXP (assign_stack_temp (BLKmode, struct_value_size, 1), 0); = XEXP (assign_stack_temp (BLKmode, struct_value_size, 1), 0);
target = 0; target = 0;
} }
} }
#endif /* not PCC_STATIC_STRUCT_RETURN */
} }
/* If called function is inline, try to integrate it. */ /* If called function is inline, try to integrate it. */