runtime: No special case for 386 complex in FFI support.
authorIan Lance Taylor <ian@gcc.gnu.org>
Tue, 20 Jan 2015 04:18:12 +0000 (04:18 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 20 Jan 2015 04:18:12 +0000 (04:18 +0000)
All supported libgo 386 targets now have complex support in
libffi.

From Uros Bizjak.

From-SVN: r219877

libgo/runtime/go-ffi.c

index 89da23dab1b264ff42aad0a905a77535d70ec579..aafc7b205e0fb579a0fde75526eea84cc48a4d15 100644 (file)
@@ -289,21 +289,7 @@ go_func_return_ffi (const struct __go_func_type *func)
   types = (const struct __go_type_descriptor **) func->__out.__values;
 
   if (count == 1)
-    {
-
-#if defined (__i386__) && !defined (__x86_64__)
-      /* FFI does not support complex types.  On 32-bit x86, a
-        complex64 will be returned in %eax/%edx.  We normally tell
-        FFI that a complex64 is a struct of two floats.  On 32-bit
-        x86 a struct of two floats is returned via a hidden first
-        pointer parameter.  Fortunately we can make everything work
-        by pretending that complex64 is int64.  */
-      if ((types[0]->__code & GO_CODE_MASK) == GO_COMPLEX64)
-       return &ffi_type_sint64;
-#endif
-
-      return go_type_to_ffi (types[0]);
-    }
+    return go_type_to_ffi (types[0]);
 
   ret = (ffi_type *) __go_alloc (sizeof (ffi_type));
   ret->type = FFI_TYPE_STRUCT;