diff --git a/cl/_testlibgo/complex/in.go b/cl/_testlibgo/complex/in.go new file mode 100644 index 00000000..7610e171 --- /dev/null +++ b/cl/_testlibgo/complex/in.go @@ -0,0 +1,9 @@ +package main + +import ( + "math/cmplx" +) + +func main() { + println("abs(3+4i):", cmplx.Abs(3+4i)) +} diff --git a/cl/_testlibgo/complex/out.ll b/cl/_testlibgo/complex/out.ll new file mode 100644 index 00000000..abd63e4e --- /dev/null +++ b/cl/_testlibgo/complex/out.ll @@ -0,0 +1,55 @@ +; ModuleID = 'main' +source_filename = "main" + +%"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } + +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@0 = private unnamed_addr constant [10 x i8] c"abs(3+4i):", align 1 + +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 + call void @"math/cmplx.init"() + br label %_llgo_2 + +_llgo_2: ; preds = %_llgo_1, %_llgo_0 + ret void +} + +define i32 @main(i32 %0, ptr %1) { +_llgo_0: + store i32 %0, ptr @__llgo_argc, align 4 + store ptr %1, ptr @__llgo_argv, align 8 + call void @"github.com/goplus/llgo/internal/runtime.init"() + call void @main.init() + %2 = call double @"math/cmplx.Abs"({ double, double } { double 3.000000e+00, double 4.000000e+00 }) + %3 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %3, i32 0, i32 0 + store ptr @0, ptr %4, align 8 + %5 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %3, i32 0, i32 1 + store i64 10, ptr %5, align 4 + %6 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %3, align 8 + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %6) + call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 32) + call void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double %2) + call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) + ret i32 0 +} + +declare void @"math/cmplx.init"() + +declare void @"github.com/goplus/llgo/internal/runtime.init"() + +declare double @"math/cmplx.Abs"({ double, double }) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") + +declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) + +declare void @"github.com/goplus/llgo/internal/runtime.PrintFloat"(double) diff --git a/ssa/cl_test.go b/ssa/cl_test.go index cea2ce03..837a990a 100644 --- a/ssa/cl_test.go +++ b/ssa/cl_test.go @@ -29,6 +29,10 @@ func init() { ssa.SetDebug(ssa.DbgFlagAll) } +func TestFromTestlibgo(t *testing.T) { + cltest.FromDir(t, "", "../cl/_testlibgo", false) +} + func TestFromTestgo(t *testing.T) { cltest.FromDir(t, "", "../cl/_testgo", false) }