[PATCH,committed] More libffi fixes for Darwin

David Edelsohn dje.gcc@gmail.com
Fri Dec 4 16:00:00 GMT 2009


Some more long double corner cases.

        * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
        pfr for long double split between fpr13 and stack.
        * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
        fparg_count twice for long double.


@@ -825,6 +856,7 @@ int ffi_closure_helper_DARWIN (ffi_closu
              memcpy (&temp_ld.lb[0], pfr, sizeof(ldbits));
              memcpy (&temp_ld.lb[1], pgr + 2, sizeof(ldbits));
              avalue[i] = &temp_ld.ld;
+             pfr++;
            }
          else
            {

@@ -150,11 +154,21 @@ void ffi_prep_args(extended_cif *ecif, u
          else
            *(double *) next_arg = double_tmp;
+         next_arg += 2;
+         fparg_count++;

          double_tmp = ((double *) *p_argv)[1];
          if (fparg_count < NUM_FPR_ARG_REGISTERS)



More information about the Gcc-patches mailing list