diff --git a/cl/_testrt/gotypes/in.go b/cl/_testrt/gotypes/in.go new file mode 100644 index 00000000..a7927c96 --- /dev/null +++ b/cl/_testrt/gotypes/in.go @@ -0,0 +1,17 @@ +package main + +type base interface { + f(m map[string]func()) +} + +type bar interface { + base + g(c chan func()) +} + +func foo(bar) { +} + +func main() { + foo(nil) +} diff --git a/cl/_testrt/gotypes/out.ll b/cl/_testrt/gotypes/out.ll new file mode 100644 index 00000000..8d30c76f --- /dev/null +++ b/cl/_testrt/gotypes/out.ll @@ -0,0 +1,34 @@ +; ModuleID = 'main' +source_filename = "main" + +%"github.com/goplus/llgo/internal/runtime.iface" = type { ptr, ptr } + +@"main.init$guard" = global ptr null + +define void @main.foo(%"github.com/goplus/llgo/internal/runtime.iface" %0) { +_llgo_0: + ret void +} + +define void @main.init() { +_llgo_0: + %0 = load i1, ptr @"main.init$guard", align 1 + br i1 %0, label %_llgo_2, label %_llgo_1 + +_llgo_1: ; preds = %_llgo_0 + store i1 true, ptr @"main.init$guard", align 1 + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + +define void @main() { +_llgo_0: + call void @"github.com/goplus/llgo/internal/runtime.init"() + call void @main.init() + call void @main.foo(%"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer) + ret void +} + +declare void @"github.com/goplus/llgo/internal/runtime.init"()