mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-08 17:37:43 +08:00
function.c (expand_function_start): Don't abort on PARALLEL returns from hard_function_value.
* function.c (expand_function_start): Don't abort on PARALLEL returns from hard_function_value. From-SVN: r42577
This commit is contained in:
parent
244ec848eb
commit
80a480ca16
@ -1,3 +1,8 @@
|
||||
2001-05-25 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* function.c (expand_function_start): Don't abort on PARALLEL
|
||||
returns from hard_function_value.
|
||||
|
||||
2001-05-25 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/i386/i386.md: Revert previous change. Do not apply
|
||||
|
@ -6378,17 +6378,19 @@ expand_function_start (subr, parms_have_cleanups)
|
||||
= hard_function_value (TREE_TYPE (DECL_RESULT (subr)),
|
||||
subr, 1);
|
||||
|
||||
/* Since we know the return value is not an aggregate, we should
|
||||
have a REG here. */
|
||||
if (!REG_P (hard_reg))
|
||||
abort ();
|
||||
/* Structures that are returned in registers are not aggregate_value_p,
|
||||
so we may see a PARALLEL. Don't play pseudo games with this. */
|
||||
if (! REG_P (hard_reg))
|
||||
SET_DECL_RTL (DECL_RESULT (subr), hard_reg);
|
||||
else
|
||||
{
|
||||
/* Create the pseudo. */
|
||||
SET_DECL_RTL (DECL_RESULT (subr), gen_reg_rtx (GET_MODE (hard_reg)));
|
||||
|
||||
/* Create the pseudo. */
|
||||
SET_DECL_RTL (DECL_RESULT (subr),
|
||||
gen_reg_rtx (GET_MODE (hard_reg)));
|
||||
/* Needed because we may need to move this to memory
|
||||
in case it's a named return value whose address is taken. */
|
||||
DECL_REGISTER (DECL_RESULT (subr)) = 1;
|
||||
/* Needed because we may need to move this to memory
|
||||
in case it's a named return value whose address is taken. */
|
||||
DECL_REGISTER (DECL_RESULT (subr)) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize rtx for parameters and local variables.
|
||||
|
Loading…
Reference in New Issue
Block a user