This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: 2.95.4 plans
- To: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Subject: Re: 2.95.4 plans
- From: Bernd Schmidt <bernds at redhat dot com>
- Date: Fri, 6 Apr 2001 14:41:14 +0100 (BST)
- Cc: <gcc-patches at gcc dot gnu dot org>
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