aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
parentbf87f41cae86459ab5028a664c737645c9f77bc3 (diff)
downloadgcc-85776d6097f9bb01d70bf7da37d14a1210f4cd63.zip
gcc-85776d6097f9bb01d70bf7da37d14a1210f4cd63.tar.gz
gcc-85776d6097f9bb01d70bf7da37d14a1210f4cd63.tar.bz2
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')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/function.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ae7101..3a74146 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-07-07 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * function.c (assign_parm_remove_parallels): Check mode of
+ entry_parm.
+ (assign_parm_setup_block_p): Also check mode of entry_parm.
+
2008-07-07 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.h (set_used_smts): Remove.
diff --git a/gcc/function.c b/gcc/function.c
index d8234da3..69c2f68 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