Commit 9e7b1d0a by Richard Stallman

(expand_call) [PCC_STATIC_STRUCT_RETURN]:

Always set pcc_struct_value if aggregate_value_p returns 1.

From-SVN: r4007
parent 1d839079
...@@ -600,34 +600,33 @@ expand_call (exp, target, ignore) ...@@ -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. */
......
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