diff --git a/ssa/eh.go b/ssa/eh.go index 28f8ea71..269dd2a0 100644 --- a/ssa/eh.go +++ b/ssa/eh.go @@ -255,6 +255,7 @@ func (p Function) endDefer(b Builder) { } procBlk := self.procBlk panicBlk := self.panicBlk + rethPtr := self.rethPtr rundPtr := self.rundPtr nexts := self.rundsNext if len(nexts) == 0 { @@ -273,7 +274,7 @@ func (p Function) endDefer(b Builder) { b.SetBlockEx(panicBlk, AtEnd, false) // exec runDefers and rethrow b.Store(rundPtr, nexts[0].Addr()) // nexts[0] is rethrowBlk - b.Jump(procBlk) + b.IndirectJump(b.Load(rethPtr), self.rethsNext) } // -----------------------------------------------------------------------------