runtime, testing/quick: libffi doesn't handle complex on Alpha.
From Uros Bizjak. From-SVN: r196389
This commit is contained in:
parent
40bf31ed08
commit
73e0b984b3
2 changed files with 16 additions and 3 deletions
|
@ -7,6 +7,7 @@ package quick
|
|||
import (
|
||||
"math/rand"
|
||||
"reflect"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
@ -72,8 +73,10 @@ func TestCheckEqual(t *testing.T) {
|
|||
reportError("fBool", CheckEqual(fBool, fBool, nil), t)
|
||||
reportError("fFloat32", CheckEqual(fFloat32, fFloat32, nil), t)
|
||||
reportError("fFloat64", CheckEqual(fFloat64, fFloat64, nil), t)
|
||||
reportError("fComplex64", CheckEqual(fComplex64, fComplex64, nil), t)
|
||||
reportError("fComplex128", CheckEqual(fComplex128, fComplex128, nil), t)
|
||||
if runtime.GOARCH != "alpha" {
|
||||
reportError("fComplex64", CheckEqual(fComplex64, fComplex64, nil), t)
|
||||
reportError("fComplex128", CheckEqual(fComplex128, fComplex128, nil), t)
|
||||
}
|
||||
reportError("fInt16", CheckEqual(fInt16, fInt16, nil), t)
|
||||
reportError("fInt32", CheckEqual(fInt32, fInt32, nil), t)
|
||||
reportError("fInt64", CheckEqual(fInt64, fInt64, nil), t)
|
||||
|
|
|
@ -30,7 +30,7 @@ static ffi_type *go_struct_to_ffi (const struct __go_struct_type *)
|
|||
static ffi_type *go_string_to_ffi (void) __attribute__ ((no_split_stack));
|
||||
static ffi_type *go_interface_to_ffi (void) __attribute__ ((no_split_stack));
|
||||
static ffi_type *go_complex_to_ffi (ffi_type *)
|
||||
__attribute__ ((no_split_stack));
|
||||
__attribute__ ((no_split_stack, unused));
|
||||
static ffi_type *go_type_to_ffi (const struct __go_type_descriptor *)
|
||||
__attribute__ ((no_split_stack));
|
||||
static ffi_type *go_func_return_ffi (const struct __go_func_type *)
|
||||
|
@ -185,13 +185,23 @@ go_type_to_ffi (const struct __go_type_descriptor *descriptor)
|
|||
return &ffi_type_double;
|
||||
abort ();
|
||||
case GO_COMPLEX64:
|
||||
#ifdef __alpha__
|
||||
runtime_throw("the libffi library does not support Complex64 type with "
|
||||
"reflect.Call or runtime.SetFinalizer");
|
||||
#else
|
||||
if (sizeof (float) == 4)
|
||||
return go_complex_to_ffi (&ffi_type_float);
|
||||
abort ();
|
||||
#endif
|
||||
case GO_COMPLEX128:
|
||||
#ifdef __alpha__
|
||||
runtime_throw("the libffi library does not support Complex128 type with "
|
||||
"reflect.Call or runtime.SetFinalizer");
|
||||
#else
|
||||
if (sizeof (double) == 8)
|
||||
return go_complex_to_ffi (&ffi_type_double);
|
||||
abort ();
|
||||
#endif
|
||||
case GO_INT16:
|
||||
return &ffi_type_sint16;
|
||||
case GO_INT32:
|
||||
|
|
Loading…
Add table
Reference in a new issue