re PR target/23404 (gij trashes args of functions with more than 8 fp args)

PR target/23404
	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
	homed fp args.
	(ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.

From-SVN: r103462
This commit is contained in:
Alan Modra 2005-08-25 00:54:54 +00:00 committed by Alan Modra
parent 91432782c4
commit 2d9c5743d6
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2005-08-25 Alan Modra <amodra@bigpond.net.au>
PR target/23404
* src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
homed fp args.
(ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
2005-08-11 Jakub Jelinek <jakub@redhat.com>
* configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.

View File

@ -155,7 +155,8 @@ void ffi_prep_args_SYSV(extended_cif *ecif, unsigned *const stack)
if (fparg_count >= NUM_FPR_ARG_REGISTERS)
{
if (intarg_count%2 != 0)
if (intarg_count >= NUM_GPR_ARG_REGISTERS
&& intarg_count % 2 != 0)
{
intarg_count++;
next_arg++;
@ -575,7 +576,8 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
/* If this FP arg is going on the stack, it must be
8-byte-aligned. */
if (fparg_count > NUM_FPR_ARG_REGISTERS
&& intarg_count%2 != 0)
&& intarg_count >= NUM_GPR_ARG_REGISTERS
&& intarg_count % 2 != 0)
intarg_count++;
break;