diff --git a/internal/runtime/llgo_autogen.ll b/internal/runtime/llgo_autogen.ll index 57437ada..c3162a2d 100644 --- a/internal/runtime/llgo_autogen.ll +++ b/internal/runtime/llgo_autogen.ll @@ -78,7 +78,7 @@ _llgo_1: ; preds = %_llgo_0 _llgo_2: ; preds = %_llgo_0 %10 = call %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAnyString"([21 x i8] c"I2Int: type mismatch\00") - call void @abort() + unreachable } define %"github.com/goplus/llgo/internal/runtime.iface" @"github.com/goplus/llgo/internal/runtime.MakeAny"(ptr %0, ptr %1) { @@ -267,6 +267,4 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0 ret void } -declare void @abort() - declare void @"github.com/goplus/llgo/internal/abi.init"() diff --git a/ssa/package.go b/ssa/package.go index 4512ca25..c2961ef7 100644 --- a/ssa/package.go +++ b/ssa/package.go @@ -326,10 +326,6 @@ func (p Package) FuncOf(name string) Function { return p.fns[name] } -func (p Package) rtAbort() Expr { - return p.NewFunc("abort", types.NewSignatureType(nil, nil, nil, nil, nil, false)).Expr -} - func (p Package) rtFunc(fnName string) Expr { fn := p.prog.runtime().Scope().Lookup(fnName).(*types.Func) name := FullName(fn.Pkg(), fnName) diff --git a/ssa/stmt_builder.go b/ssa/stmt_builder.go index d3a922d5..a8af71d4 100644 --- a/ssa/stmt_builder.go +++ b/ssa/stmt_builder.go @@ -73,8 +73,7 @@ func (b Builder) Panic(v Expr) { if debugInstr { log.Printf("Panic %v\n", v.impl) } - pkg := b.fn.pkg - b.Call(pkg.rtAbort()) // TODO(xsw): pass v + b.impl.CreateUnreachable() // TODO(xsw): pass v } // Return emits a return instruction.