https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60874

--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #3)
> (In reply to Ian Lance Taylor from comment #2)
> > The patch is committed so this bug may be fixed.  I haven't tested it on
> > Alpha, though.
> 
> The testcase recover.go doesn't fail outright with not-implemented error.
> However, tests test11reflect2, test13reflect2 and test14reflect2 currently
> fail.

The problem with test11reflect2 was due to unhandled FFI_TYPE_VOID case in
ffi_closure_osf_inner, fixed by following patch:

--cut here-
Index: src/alpha/ffi.c
===================================================================
--- src/alpha/ffi.c     (revision 212882)
+++ src/alpha/ffi.c     (working copy)
@@ -237,6 +237,7 @@ ffi_closure_osf_inner(ffi_closure *closure, void *

       switch (arg_types[i]->type)
        {
+       case FFI_TYPE_VOID:
        case FFI_TYPE_SINT8:
        case FFI_TYPE_UINT8:
        case FFI_TYPE_SINT16:
--cut here--

It looks that test13reflect2 and test14reflect2 tests fail on non-split stack
targets, since everything works OK with slightly modified testcase:

--cut here--
Index: testsuite/go.test/test/recover.go
===================================================================
--- testsuite/go.test/test/recover.go   (revision 212882)
+++ testsuite/go.test/test/recover.go   (working copy)
@@ -432,7 +432,7 @@
 }

 // enormous receiver, so wrapper splits stack to call M
-type T5 [8192]byte
+type T5 [2048]byte

 func (T5) M() {
        mustRecoverBody(doubleRecover(), recover(), recover(), 13)
@@ -459,12 +459,12 @@
 // enormous receiver + enormous method frame, so wrapper splits stack to call
M,
 // and then M splits stack to allocate its frame.
 // recover must look back two frames to find the panic.
-type T6 [8192]byte
+type T6 [2048]byte

 var global byte

 func (T6) M() {
-       var x [8192]byte
+       var x [2048]byte
        x[0] = 1
        x[1] = 2
        for i := range x {
--cut here--

It looks that the later problem points to a generic problem with non
split-stack targets.

Reply via email to