compiler: support panics inside indirect deferred functions

Found this bug while working on WebAssembly recover support.
This commit is contained in:
Ayke van Laethem
2024-08-04 15:37:50 +02:00
parent a47ff02c82
commit 2f7952ff29
3 changed files with 35 additions and 2 deletions
+2 -2
View File
@@ -528,7 +528,7 @@ func (b *builder) createRunDefers() {
forwardParams = append(forwardParams, llvm.Undef(b.dataPtrType))
}
b.createCall(fnType, fnPtr, forwardParams, "")
b.createInvoke(fnType, fnPtr, forwardParams, "")
case *ssa.Function:
// Direct call.
@@ -583,7 +583,7 @@ func (b *builder) createRunDefers() {
// Call deferred function.
fnType, llvmFn := b.getFunction(fn)
b.createCall(fnType, llvmFn, forwardParams, "")
b.createInvoke(fnType, llvmFn, forwardParams, "")
case *ssa.Builtin:
db := b.deferBuiltinFuncs[callback]