]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ffi.c (ffi_closure_helper_SYSV): Remove unused variable and cast integer to void...
authorKaz Kojima <kkojima@gcc.gnu.org>
Sat, 18 Feb 2006 00:35:13 +0000 (00:35 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Sat, 18 Feb 2006 00:35:13 +0000 (00:35 +0000)
* src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
and cast integer to void * if needed.  Update the pointer to
the FP register saved area correctly.

From-SVN: r111225

libffi/ChangeLog
libffi/src/sh/ffi.c

index 6d1542ee5338bc81dcb8421d42db2d65680dce10..2ed033e89db914c1971e4e37634332345309aebe 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
+       and cast integer to void * if needed.  Update the pointer to
+       the FP register saved area correctly.
+       
 2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
 
        * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
index 38449e9e6c117c74d32aa95eb42beea9f1e2c45d..2bcb98196a4ab629687fd5006163d5d85f635bf9 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   ffi.c - Copyright (c) 2002, 2003, 2004, 2005 Kaz Kojima
+   ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006 Kaz Kojima
    
    SuperH Foreign Function Interface 
 
@@ -535,7 +535,6 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
   int freg = 0;
 #endif
   ffi_cif *cif; 
-  double temp; 
 
   cif = closure->cif;
   avalue = alloca(cif->nargs * sizeof(void *));
@@ -544,7 +543,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
      returns the data directly to the caller.  */
   if (cif->rtype->type == FFI_TYPE_STRUCT && STRUCT_VALUE_ADDRESS_WITH_ARG)
     {
-      rvalue = *pgr++;
+      rvalue = (void *) *pgr++;
       ireg = 1;
     }
   else
@@ -611,6 +610,8 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
        {
          if (freg + 1 >= NFREGARG)
            continue;
+         if (freg & 1)
+           pfr++;
          freg = (freg + 1) & ~1;
          freg += 2;
          avalue[i] = pfr;