summaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@codesourcery.com>2008-07-07 16:05:11 +0000
committerDaniel Jacobowitz <drow@gcc.gnu.org>2008-07-07 16:05:11 +0000
commit85776d6097f9bb01d70bf7da37d14a1210f4cd63 (patch)
treede7207a6081982f1a8d0a2629ab2852c122367da /gcc/function.c
parentbf87f41cae86459ab5028a664c737645c9f77bc3 (diff)
downloadgcc-85776d6097f9bb01d70bf7da37d14a1210f4cd63.tar.gz
function.c (assign_parm_remove_parallels): Check mode of entry_parm.
* function.c (assign_parm_remove_parallels): Check mode of entry_parm. (assign_parm_setup_block_p): Also check mode of entry_parm. From-SVN: r137575
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/function.c b/gcc/function.c
index d8234da3877..69c2f68a4f9 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2364,8 +2364,7 @@ assign_parm_remove_parallels (struct assign_parm_data_one *data)
This can be done with register operations rather than on the
stack, even if we will store the reconstituted parameter on the
stack later. */
- if (GET_CODE (entry_parm) == PARALLEL
- && data->passed_mode != BLKmode)
+ if (GET_CODE (entry_parm) == PARALLEL && GET_MODE (entry_parm) != BLKmode)
{
rtx parmreg = gen_reg_rtx (GET_MODE (entry_parm));
emit_group_store (parmreg, entry_parm, NULL_TREE,
@@ -2421,6 +2420,8 @@ assign_parm_setup_block_p (struct assign_parm_data_one *data)
{
if (data->nominal_mode == BLKmode)
return true;
+ if (GET_MODE (data->entry_parm) == BLKmode)
+ return true;
#ifdef BLOCK_REG_PADDING
/* Only assign_parm_setup_block knows how to deal with register arguments