(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:
parent
1d839079a6
commit
9e7b1d0a36
47
gcc/calls.c
47
gcc/calls.c
@ -600,34 +600,33 @@ expand_call (exp, target, ignore)
|
||||
is_const = 0;
|
||||
|
||||
#ifdef PCC_STATIC_STRUCT_RETURN
|
||||
if (flag_pcc_struct_return)
|
||||
{
|
||||
pcc_struct_value = 1;
|
||||
is_integrable = 0; /* Easier than making that case work right. */
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
struct_value_size = int_size_in_bytes (TREE_TYPE (exp));
|
||||
{
|
||||
pcc_struct_value = 1;
|
||||
is_integrable = 0; /* Easier than making that case work right. */
|
||||
}
|
||||
#else /* not PCC_STATIC_STRUCT_RETURN */
|
||||
{
|
||||
struct_value_size = int_size_in_bytes (TREE_TYPE (exp));
|
||||
|
||||
if (struct_value_size < 0)
|
||||
abort ();
|
||||
if (struct_value_size < 0)
|
||||
abort ();
|
||||
|
||||
if (target && GET_CODE (target) == MEM)
|
||||
structure_value_addr = XEXP (target, 0);
|
||||
else
|
||||
{
|
||||
/* Assign a temporary on the stack to hold the value. */
|
||||
if (target && GET_CODE (target) == MEM)
|
||||
structure_value_addr = XEXP (target, 0);
|
||||
else
|
||||
{
|
||||
/* Assign a temporary on the stack to hold the value. */
|
||||
|
||||
/* For variable-sized objects, we must be called with a target
|
||||
specified. If we were to allocate space on the stack here,
|
||||
we would have no way of knowing when to free it. */
|
||||
/* For variable-sized objects, we must be called with a target
|
||||
specified. If we were to allocate space on the stack here,
|
||||
we would have no way of knowing when to free it. */
|
||||
|
||||
structure_value_addr
|
||||
= XEXP (assign_stack_temp (BLKmode, struct_value_size, 1), 0);
|
||||
target = 0;
|
||||
}
|
||||
}
|
||||
structure_value_addr
|
||||
= XEXP (assign_stack_temp (BLKmode, struct_value_size, 1), 0);
|
||||
target = 0;
|
||||
}
|
||||
}
|
||||
#endif /* not PCC_STATIC_STRUCT_RETURN */
|
||||
}
|
||||
|
||||
/* If called function is inline, try to integrate it. */
|
||||
|
Loading…
Reference in New Issue
Block a user