diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-03-01 19:26:43 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-03-01 19:26:43 +0000 |
commit | 73e0b984b3a0f545460ab4c5760cb04b2d06a8da (patch) | |
tree | 4a9503567f85a3b0ad72cf2fb13c868a4543c694 /libgo/runtime/go-reflect-call.c | |
parent | 40bf31ed08918ac239b82fb82c3c78d3e6189691 (diff) | |
download | gcc-73e0b984b3a0f545460ab4c5760cb04b2d06a8da.zip gcc-73e0b984b3a0f545460ab4c5760cb04b2d06a8da.tar.gz gcc-73e0b984b3a0f545460ab4c5760cb04b2d06a8da.tar.bz2 |
runtime, testing/quick: libffi doesn't handle complex on Alpha.
From Uros Bizjak.
From-SVN: r196389
Diffstat (limited to 'libgo/runtime/go-reflect-call.c')
-rw-r--r-- | libgo/runtime/go-reflect-call.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libgo/runtime/go-reflect-call.c b/libgo/runtime/go-reflect-call.c index 06edae4..a66f928 100644 --- a/libgo/runtime/go-reflect-call.c +++ b/libgo/runtime/go-reflect-call.c @@ -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: |