In the gc version of the Go library the _defer struct has a _panic
field with a completely different meaning, that we are going to want
to adopt into libgo.  This trivial patch renames libgo's _panic field
to panicStack to clear the way.  Bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu.  Committed to mainline.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 249557)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-a81079a81b63714221674f07d13bedc768092f27
+a459f1fdfe0bd365bf2def730e1529052c6487fd
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/go/runtime/panic.go
===================================================================
--- libgo/go/runtime/panic.go   (revision 249205)
+++ libgo/go/runtime/panic.go   (working copy)
@@ -90,13 +90,13 @@ func throwinit() {
 // pfn is a C function pointer.
 // arg is a value to pass to pfn.
 func deferproc(frame *bool, pfn uintptr, arg unsafe.Pointer) {
-       n := newdefer()
-       n.frame = frame
-       n._panic = getg()._panic
-       n.pfn = pfn
-       n.arg = arg
-       n.retaddr = 0
-       n.makefunccanrecover = false
+       d := newdefer()
+       d.frame = frame
+       d.panicStack = getg()._panic
+       d.pfn = pfn
+       d.arg = arg
+       d.retaddr = 0
+       d.makefunccanrecover = false
 }
 
 // Allocate a Defer, usually using per-P pool.
@@ -502,7 +502,7 @@ func currentDefer() *_defer {
        // the panic stack. We do not want to recover it if that panic
        // was on the top of the panic stack when this function was
        // deferred.
-       if d._panic == gp._panic {
+       if d.panicStack == gp._panic {
                return nil
        }
 
@@ -731,7 +731,7 @@ func gorecover() interface{} {
 // function like recover.
 func deferredrecover() interface{} {
        gp := getg()
-       if gp._defer == nil || gp._defer._panic != gp._panic {
+       if gp._defer == nil || gp._defer.panicStack != gp._panic {
                return nil
        }
        return gorecover()
Index: libgo/go/runtime/runtime2.go
===================================================================
--- libgo/go/runtime/runtime2.go        (revision 249205)
+++ libgo/go/runtime/runtime2.go        (working copy)
@@ -698,7 +698,7 @@ type _defer struct {
        // deferred.  This function can not recover this value from
        // the panic stack.  This can happen if a deferred function
        // has a defer statement itself.
-       _panic *_panic
+       panicStack *_panic
 
        // The function to call.
        pfn uintptr

Reply via email to