OSDN Git Service

* function.c (assign_parm_remove_parallels): Check mode of
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 Jul 2008 16:05:11 +0000 (16:05 +0000)
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 Jul 2008 16:05:11 +0000 (16:05 +0000)
entry_parm.
(assign_parm_setup_block_p): Also check mode of entry_parm.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137575 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index 7ae7101..3a74146 100644 (file)
@@ -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.
index d8234da..69c2f68 100644 (file)
@@ -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