This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] fix 20375 (again)
- From: Nathan Sidwell <nathan at codesourcery dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Richard Henderson <rth at redhat dot com>
- Date: Sat, 16 Apr 2005 15:50:45 +0100
- Subject: [PATCH] fix 20375 (again)
- Organization: CodeSourcery LLC
This patch fixes the alpha regresion that rth pointed out to me. Sorry
for the delay. I've tested in ia64-hp-hpux11.23 (where the original
problem was), and on i686-pc-linux-gnu. I've manually verified an i86
xcompiler targetting alpha no longer ICEs on that test case, but I cannot
build native alpha.
AFAICT, alpha was already failing before I fixed 20375 (at least reverting
my original 20375 patch, does not stop alpha iceing).
If someone could verify this doesn't cause any alpha regressions, that
would be peachy :)
BTW, there's scope for cleanup on the target call setup_incoming_varargs ---
it is always called with the NO_RTL parameter false.
nathan
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
nathan@codesourcery.com :: http://www.planetfall.pwp.blueyonder.co.uk
2005-04-16 Nathan Sidwell <nathan@codesourcery.com>
PR c++/20375
* function.c (assign_parms): Setup varadic parms after processing
the final non-varadic parm.
Index: function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.604.8.1
diff -c -3 -p -r1.604.8.1 function.c
*** function.c 10 Mar 2005 15:11:04 -0000 1.604.8.1
--- function.c 11 Apr 2005 12:34:04 -0000
*************** assign_parms (tree fndecl)
*** 3079,3090 ****
continue;
}
- if (current_function_stdarg && !TREE_CHAIN (parm))
- assign_parms_setup_varargs (&all, &data, false);
-
/* Find out where the parameter arrives in this function. */
assign_parm_find_entry_rtl (&all, &data);
/* Find out where stack space for this parameter might be. */
if (assign_parm_is_stack_parm (&all, &data))
{
--- 3079,3090 ----
continue;
}
/* Find out where the parameter arrives in this function. */
assign_parm_find_entry_rtl (&all, &data);
+ if (current_function_stdarg && !TREE_CHAIN (parm))
+ assign_parms_setup_varargs (&all, &data, false);
+
/* Find out where stack space for this parameter might be. */
if (assign_parm_is_stack_parm (&all, &data))
{