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]
Other format: [Raw text]

[PATCH] fix 20375 (again)


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))
  	{

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