mirror of git://gcc.gnu.org/git/gcc.git
2003-09-09 Andreas Tobler <a.tobler@schweiz.ch>
* src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct passing correctly. From-SVN: r71238
This commit is contained in:
parent
f098590080
commit
086a4bd7dd
|
@ -1,3 +1,8 @@
|
|||
2003-09-09 Andreas Tobler <a.tobler@schweiz.ch>
|
||||
|
||||
* src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
|
||||
passing correctly.
|
||||
|
||||
2003-09-09 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
|
|
@ -853,8 +853,7 @@ ffi_closure_helper_SYSV (ffi_closure* closure, void * rvalue,
|
|||
case FFI_TYPE_SINT32:
|
||||
case FFI_TYPE_UINT32:
|
||||
case FFI_TYPE_POINTER:
|
||||
case FFI_TYPE_STRUCT:
|
||||
/* there are 8 gpr registers used to pass values */
|
||||
/* there are 8 gpr registers used to pass values */
|
||||
if (ng < 8) {
|
||||
avalue[i] = pgr;
|
||||
ng++;
|
||||
|
@ -864,6 +863,19 @@ ffi_closure_helper_SYSV (ffi_closure* closure, void * rvalue,
|
|||
pst++;
|
||||
}
|
||||
break;
|
||||
|
||||
case FFI_TYPE_STRUCT:
|
||||
/* Structs are passed by reference. The address will appear in a
|
||||
gpr if it is one of the first 8 arguments. */
|
||||
if (ng < 8) {
|
||||
avalue[i] = (void *) *pgr;
|
||||
ng++;
|
||||
pgr++;
|
||||
} else {
|
||||
avalue[i] = (void *) *pst;
|
||||
pst++;
|
||||
}
|
||||
break;
|
||||
|
||||
case FFI_TYPE_SINT64:
|
||||
case FFI_TYPE_UINT64:
|
||||
|
|
Loading…
Reference in New Issue