Use float stack slots for e500 promoted arguments

Steve Ellcey sje@cup.hp.com
Thu Jul 3 18:35:00 GMT 2008


On Thu, 2008-07-03 at 14:22 -0400, Daniel Jacobowitz wrote:

> That these two differ means I misunderstood what they were for.  Looks
> like passed_mode is tree level and entry_parm is calling convention.
> If you replace data->passed_mode with GET_MODE (entry_parm) does it
> work better?  I'll build an e500 toolchain and verify that doesn't
> change the original case.

I made this change:

$ svn diff ../src/trunk/gcc/function.c
Index: ../src/trunk/gcc/function.c
===================================================================
--- ../src/trunk/gcc/function.c	(revision 137326)
+++ ../src/trunk/gcc/function.c	(working copy)
@@ -2365,7 +2365,7 @@ assign_parm_remove_parallels (struct ass
      stack, even if we will store the reconstituted parameter on the
      stack later.  */
   if (GET_CODE (entry_parm) == PARALLEL
-      && data->passed_mode != BLKmode)
+      && GET_MODE (entry_parm) != BLKmode)
     {
       rtx parmreg = gen_reg_rtx (GET_MODE (entry_parm));
       emit_group_store (parmreg, entry_parm, NULL_TREE,


But it did not help with the test case I sent you.  I get the same
error.

Steve Ellcey
sje@cup.hp.com



More information about the Gcc-patches mailing list