diff -r 222f14e048a2 libgo/go/testing/quick/quick_test.go --- a/libgo/go/testing/quick/quick_test.go Thu Feb 28 13:55:43 2013 -0800 +++ b/libgo/go/testing/quick/quick_test.go Fri Mar 01 11:25:29 2013 -0800 @@ -7,6 +7,7 @@ import ( "math/rand" "reflect" + "runtime" "testing" ) @@ -72,8 +73,10 @@ 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) diff -r 222f14e048a2 libgo/runtime/go-reflect-call.c --- a/libgo/runtime/go-reflect-call.c Thu Feb 28 13:55:43 2013 -0800 +++ b/libgo/runtime/go-reflect-call.c Fri Mar 01 11:25:29 2013 -0800 @@ -30,7 +30,7 @@ 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 @@ 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: