------- Comment #2 from jakub at gcc dot gnu dot org  2007-12-13 14:38 -------
Not sure this should count as a regression, since in 3.4 this was using
different ABI.  If you compile with -mabi=atpcs which matches 3.4, it will work
even in 4.3.
Anyway, I think:
--- gcc/config/arm/arm.c.jj     2007-12-11 00:23:29.000000000 +0100
+++ gcc/config/arm/arm.c        2007-12-13 15:26:01.000000000 +0100
@@ -17765,14 +17765,20 @@ arm_output_load_gr (rtx *operands)

 static void
 arm_setup_incoming_varargs (CUMULATIVE_ARGS *cum,
-                           enum machine_mode mode ATTRIBUTE_UNUSED,
-                           tree type ATTRIBUTE_UNUSED,
+                           enum machine_mode mode,
+                           tree type,
                            int *pretend_size,
                            int second_time ATTRIBUTE_UNUSED)
 {
+  int nregs = cum->nregs;
+  if (nregs & 1
+      && ARM_DOUBLEWORD_ALIGN
+      && arm_needs_doubleword_align (mode, type))
+    nregs++;
+
   cfun->machine->uses_anonymous_args = 1;
-  if (cum->nregs < NUM_ARG_REGS)
-    *pretend_size = (NUM_ARG_REGS - cum->nregs) * UNITS_PER_WORD;
+  if (nregs < NUM_ARG_REGS)
+    *pretend_size = (NUM_ARG_REGS - nregs) * UNITS_PER_WORD;
 }

 /* Return nonzero if the CONSUMER instruction (a store) does not need

should fix this, let me poke around a little bit some more and add a testcase.
I'll need some volunteer to bootstrap/regtest it though, no arms here...


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-12-13 14:38:11
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34281

Reply via email to