diff --git a/cl/_testdata/print/out.ll b/cl/_testdata/print/out.ll index 9fadd77e..1744b3f4 100644 --- a/cl/_testdata/print/out.ll +++ b/cl/_testdata/print/out.ll @@ -191,7 +191,7 @@ _llgo_1: ; preds = %_llgo_3 call void @main.println(%"github.com/goplus/llgo/internal/runtime.Slice" %47) br label %_llgo_2 -_llgo_2: ; preds = %_llgo_3, %_llgo_1, %_llgo_0 +_llgo_2: ; preds = %_llgo_1, %_llgo_3, %_llgo_0 %48 = call ptr @"github.com/goplus/llgo/internal/runtime.AllocZ"(i64 48) %49 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.eface", ptr %48, i64 0 %50 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 @@ -1451,7 +1451,7 @@ _llgo_1: ; preds = %_llgo_3 %7 = icmp ult i64 %9, 10 br i1 %7, label %_llgo_2, label %_llgo_4 -_llgo_2: ; preds = %_llgo_3, %_llgo_1 +_llgo_2: ; preds = %_llgo_1, %_llgo_3 %8 = call %"github.com/goplus/llgo/internal/runtime.Slice" @"github.com/goplus/llgo/internal/runtime.NewSlice3"(ptr %1, i64 1, i64 100, i64 %10, i64 100, i64 100) call void @main.gwrite(%"github.com/goplus/llgo/internal/runtime.Slice" %8) ret void diff --git a/cl/_testdata/utf8/out.ll b/cl/_testdata/utf8/out.ll index 964a3e9c..e24d991d 100644 --- a/cl/_testdata/utf8/out.ll +++ b/cl/_testdata/utf8/out.ll @@ -53,7 +53,7 @@ _llgo_0: _llgo_1: ; preds = %_llgo_3 %2 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %3 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 0 - store ptr @0, ptr %3, align 8 + store ptr @1, ptr %3, align 8 %4 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %2, i32 0, i32 1 store i64 7, ptr %4, align 4 %5 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %2, align 8 @@ -79,7 +79,7 @@ _llgo_3: ; preds = %_llgo_1, %_llgo_0 %15 = phi i64 [ 0, %_llgo_0 ], [ %11, %_llgo_1 ] %16 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 0 - store ptr @1, ptr %17, align 8 + store ptr @0, ptr %17, align 8 %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1 store i64 7, ptr %18, align 4 %19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8 diff --git a/cl/_testgo/defer/out.ll b/cl/_testgo/defer/out.ll index ebb35a1c..0a15d5ef 100644 --- a/cl/_testgo/defer/out.ll +++ b/cl/_testgo/defer/out.ll @@ -53,108 +53,97 @@ _llgo_0: call void @main.init() %9 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Defer", ptr %4, i32 0, i32 1 %10 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.Defer", ptr %4, i32 0, i32 3 - %11 = load i64, ptr %9, align 4 - %12 = or i64 %11, 1 - store i64 %12, ptr %9, align 4 - %13 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %14 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %13, i32 0, i32 0 - store ptr @0, ptr %14, align 8 - %15 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %13, i32 0, i32 1 - store i64 5, ptr %15, align 4 - %16 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %13, align 8 - %17 = call i1 @main.f(%"github.com/goplus/llgo/internal/runtime.String" %16) - br i1 %17, label %_llgo_2, label %_llgo_3 + %11 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %12 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %11, i32 0, i32 0 + store ptr @0, ptr %12, align 8 + %13 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %11, i32 0, i32 1 + store i64 5, ptr %13, align 4 + %14 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %11, align 8 + %15 = call i1 @main.f(%"github.com/goplus/llgo/internal/runtime.String" %14) + br i1 %15, label %_llgo_2, label %_llgo_3 _llgo_1: ; No predecessors! ret i32 0 _llgo_2: ; preds = %_llgo_0 - %18 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %19 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %18, i32 0, i32 0 - store ptr @1, ptr %19, align 8 - %20 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %18, i32 0, i32 1 - store i64 5, ptr %20, align 4 - %21 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %18, align 8 - %22 = load i64, ptr %9, align 4 - %23 = or i64 %22, 2 - store i64 %23, ptr %9, align 4 - %24 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %25 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 0 - store ptr @2, ptr %25, align 8 - %26 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %24, i32 0, i32 1 - store i64 3, ptr %26, align 4 - %27 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %24, align 8 - %28 = load i64, ptr %9, align 4 - %29 = or i64 %28, 4 - store i64 %29, ptr %9, align 4 + %16 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 0 + store ptr @1, ptr %17, align 8 + %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1 + store i64 5, ptr %18, align 4 + %19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8 + %20 = load i64, ptr %9, align 4 + %21 = or i64 %20, 1 + store i64 %21, ptr %9, align 4 + %22 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %23 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %22, i32 0, i32 0 + store ptr @2, ptr %23, align 8 + %24 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %22, i32 0, i32 1 + store i64 3, ptr %24, align 4 + %25 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %22, align 8 + %26 = load i64, ptr %9, align 4 + %27 = or i64 %26, 2 + store i64 %27, ptr %9, align 4 store i64 0, ptr %10, align 4 br label %_llgo_4 _llgo_3: ; preds = %_llgo_0 - %30 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 - %31 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 0 - store ptr @3, ptr %31, align 8 - %32 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %30, i32 0, i32 1 - store i64 5, ptr %32, align 4 - %33 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %30, align 8 - %34 = load i64, ptr %9, align 4 - %35 = or i64 %34, 8 - store i64 %35, ptr %9, align 4 + %28 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 + %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 0 + store ptr @3, ptr %29, align 8 + %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 1 + store i64 5, ptr %30, align 4 + %31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %28, align 8 + %32 = load i64, ptr %9, align 4 + %33 = or i64 %32, 4 + store i64 %33, ptr %9, align 4 store i64 1, ptr %10, align 4 br label %_llgo_4 _llgo_4: ; preds = %_llgo_3, %_llgo_2 - %36 = load i64, ptr %9, align 4 - %37 = and i64 %36, 8 - %38 = icmp ne i64 %37, 0 - br i1 %38, label %_llgo_7, label %_llgo_8 + %34 = load i64, ptr %9, align 4 + %35 = and i64 %34, 4 + %36 = icmp ne i64 %35, 0 + br i1 %36, label %_llgo_7, label %_llgo_8 -_llgo_5: ; preds = %_llgo_14 +_llgo_5: ; preds = %_llgo_12 ret i32 0 -_llgo_6: ; preds = %_llgo_14 +_llgo_6: ; preds = %_llgo_12 ret i32 0 _llgo_7: ; preds = %_llgo_4 - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %33) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %31) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_8 _llgo_8: ; preds = %_llgo_7, %_llgo_4 - %39 = and i64 %36, 4 - %40 = icmp ne i64 %39, 0 - br i1 %40, label %_llgo_9, label %_llgo_10 + %37 = and i64 %34, 2 + %38 = icmp ne i64 %37, 0 + br i1 %38, label %_llgo_9, label %_llgo_10 _llgo_9: ; preds = %_llgo_8 - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %27) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %25) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_10 _llgo_10: ; preds = %_llgo_9, %_llgo_8 - %41 = and i64 %36, 2 - %42 = icmp ne i64 %41, 0 - br i1 %42, label %_llgo_11, label %_llgo_12 + %39 = and i64 %34, 1 + %40 = icmp ne i64 %39, 0 + br i1 %40, label %_llgo_11, label %_llgo_12 _llgo_11: ; preds = %_llgo_10 - call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %21) + call void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String" %19) call void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8 10) br label %_llgo_12 _llgo_12: ; preds = %_llgo_11, %_llgo_10 - %43 = and i64 %36, 1 - %44 = icmp ne i64 %43, 0 - br i1 %44, label %_llgo_13, label %_llgo_14 - -_llgo_13: ; preds = %_llgo_12 call void @"main.main$1"() - br label %_llgo_14 - -_llgo_14: ; preds = %_llgo_13, %_llgo_12 - %45 = load %"github.com/goplus/llgo/internal/runtime.Defer", ptr %4, align 8 - %46 = extractvalue %"github.com/goplus/llgo/internal/runtime.Defer" %45, 2 - %47 = call i32 @pthread_setspecific(ptr %2, ptr %46) - %48 = load i64, ptr %10, align 4 - switch i64 %48, label %_llgo_5 [ + %41 = load %"github.com/goplus/llgo/internal/runtime.Defer", ptr %4, align 8 + %42 = extractvalue %"github.com/goplus/llgo/internal/runtime.Defer" %41, 2 + %43 = call i32 @pthread_setspecific(ptr %2, ptr %42) + %44 = load i64, ptr %10, align 4 + switch i64 %44, label %_llgo_5 [ i64 1, label %_llgo_6 ] } diff --git a/cl/_testgo/strucintf/out.ll b/cl/_testgo/strucintf/out.ll index fada9257..131b5bb5 100644 --- a/cl/_testgo/strucintf/out.ll +++ b/cl/_testgo/strucintf/out.ll @@ -15,11 +15,11 @@ source_filename = "main" @2 = private unnamed_addr constant [5 x i8] c"main\00", align 1 @__llgo_argc = global ptr null @__llgo_argv = global ptr null +@3 = private unnamed_addr constant [12 x i8] c"Foo: not ok\00", align 1 @"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk" = linkonce global ptr null -@3 = private unnamed_addr constant [2 x i8] c"V\00", align 1 -@4 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@5 = private unnamed_addr constant [5 x i8] c"main\00", align 1 -@6 = private unnamed_addr constant [12 x i8] c"Foo: not ok\00", align 1 +@4 = private unnamed_addr constant [2 x i8] c"V\00", align 1 +@5 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@6 = private unnamed_addr constant [5 x i8] c"main\00", align 1 @7 = private unnamed_addr constant [12 x i8] c"Bar: not ok\00", align 1 @8 = private unnamed_addr constant [10 x i8] c"F: not ok\00", align 1 @@ -94,7 +94,7 @@ _llgo_2: ; preds = %_llgo_3, %_llgo_1 _llgo_3: ; preds = %_llgo_12 %16 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %17 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 0 - store ptr @6, ptr %17, align 8 + store ptr @3, ptr %17, align 8 %18 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %16, i32 0, i32 1 store i64 11, ptr %18, align 4 %19 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %16, align 8 @@ -299,20 +299,20 @@ _llgo_2: ; preds = %_llgo_1, %_llgo_0 _llgo_3: ; preds = %_llgo_2 %28 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %29 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 0 - store ptr @3, ptr %29, align 8 + store ptr @4, ptr %29, align 8 %30 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %28, i32 0, i32 1 store i64 1, ptr %30, align 4 %31 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %28, align 8 %32 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %33 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %32, i32 0, i32 0 - store ptr @4, ptr %33, align 8 + store ptr @5, ptr %33, align 8 %34 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %32, i32 0, i32 1 store i64 0, ptr %34, align 4 %35 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %32, align 8 %36 = call %"github.com/goplus/llgo/internal/abi.StructField" @"github.com/goplus/llgo/internal/runtime.StructField"(%"github.com/goplus/llgo/internal/runtime.String" %31, ptr %25, i64 0, %"github.com/goplus/llgo/internal/runtime.String" %35, i1 false) %37 = alloca %"github.com/goplus/llgo/internal/runtime.String", align 8 %38 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 0 - store ptr @5, ptr %38, align 8 + store ptr @6, ptr %38, align 8 %39 = getelementptr inbounds %"github.com/goplus/llgo/internal/runtime.String", ptr %37, i32 0, i32 1 store i64 4, ptr %39, align 4 %40 = load %"github.com/goplus/llgo/internal/runtime.String", ptr %37, align 8 @@ -351,8 +351,8 @@ declare void @"github.com/goplus/llgo/internal/runtime.PrintInt"(i64) declare void @"github.com/goplus/llgo/internal/runtime.PrintByte"(i8) -declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.Bar"() - declare void @"github.com/goplus/llgo/internal/runtime.PrintString"(%"github.com/goplus/llgo/internal/runtime.String") +declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.Bar"() + declare %"github.com/goplus/llgo/internal/runtime.eface" @"github.com/goplus/llgo/cl/internal/foo.F"()