This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: 2.95.4 plans


On Tue, 20 Mar 2001, Franz Sirl wrote:
> - the function.c change fixes gcc.c-torture/execute/20001017-1.c
>
> We've already talked about the last one, this patch is more conservative than
> the one that went into the mainline and 3.0. I guess you still don't feel
> comfortable, that's why I want to get it in early in 2.95.4 for a long
> testing phase.

Applied, after looking very long and very hard at the argument passing code.
(It gave me a headache.  We should throw it all away, it's much worse than
reload.)

I'm still nervous about it, but I can't see how it could possibly break.
We really ought to have a testsuite that can verify that argument passing is
compatible between two different compilers.  I might hack up something like
this before 2.95.4, unless someone else beats me to it.


Bernd

Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v
retrieving revision 1.3667.4.354
diff -u -p -r1.3667.4.354 ChangeLog
--- ChangeLog	2001/04/06 11:37:25	1.3667.4.354
+++ ChangeLog	2001/04/06 13:36:03
@@ -1,5 +1,8 @@
 2001-04-06  Bernd Schmidt  <bernds@redhat.com>

+	2000-10-17  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+	* function.c (locate_and_pad_parm): Don't align stack unconditionally.
+
 	Thu Oct 28 10:20:02 1999  Geoffrey Keating  <geoffk@cygnus.com>
 	* config/rs6000/rs6000.md (movsf): Don't convert a SUBREG
 	of the function return register into a plain REG until
Index: function.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/function.c,v
retrieving revision 1.90.4.7
diff -u -p -r1.90.4.7 function.c
--- function.c	2001/04/04 13:26:24	1.90.4.7
+++ function.c	2001/04/06 13:36:05
@@ -5334,7 +5334,18 @@ locate_and_pad_parm (passed_mode, type,
 				- offset_ptr->constant);
     }
 #else /* !ARGS_GROW_DOWNWARD */
-  pad_to_arg_alignment (initial_offset_ptr, boundary);
+  if (!in_regs
+#ifdef REG_PARM_STACK_SPACE
+      || REG_PARM_STACK_SPACE (fndecl) > 0
+#else
+      /* For the gcc-2_95-branch we want to make sure not to break something
+         on platforms which pass argument in registers but don't define
+         REG_PARM_STACK_SPACE. So we force the original behaviour here.  */
+      || 1
+#endif
+      )
+    pad_to_arg_alignment (initial_offset_ptr, boundary);
+
   *offset_ptr = *initial_offset_ptr;

 #ifdef PUSH_ROUNDING


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]