github.com/goplus/llgo@v0.8.3/cl/_testrt/result/out.ll (about) 1 ; ModuleID = 'main' 2 source_filename = "main" 3 4 @"main.init$guard" = global ptr null 5 @__llgo_argc = global ptr null 6 @__llgo_argv = global ptr null 7 @0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 8 @1 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 9 @2 = private unnamed_addr constant [7 x i8] c"%d %d\0A\00", align 1 10 11 define { ptr, ptr } @main.add() { 12 _llgo_0: 13 %0 = alloca { ptr, ptr }, align 8 14 %1 = getelementptr inbounds { ptr, ptr }, ptr %0, i32 0, i32 0 15 store ptr @"__llgo_stub.main.add$1", ptr %1, align 8 16 %2 = getelementptr inbounds { ptr, ptr }, ptr %0, i32 0, i32 1 17 store ptr null, ptr %2, align 8 18 %3 = load { ptr, ptr }, ptr %0, align 8 19 ret { ptr, ptr } %3 20 } 21 22 define { { ptr, ptr }, i64 } @main.add2() { 23 _llgo_0: 24 %0 = alloca { ptr, ptr }, align 8 25 %1 = getelementptr inbounds { ptr, ptr }, ptr %0, i32 0, i32 0 26 store ptr @"__llgo_stub.main.add2$1", ptr %1, align 8 27 %2 = getelementptr inbounds { ptr, ptr }, ptr %0, i32 0, i32 1 28 store ptr null, ptr %2, align 8 29 %3 = load { ptr, ptr }, ptr %0, align 8 30 %mrv = insertvalue { { ptr, ptr }, i64 } poison, { ptr, ptr } %3, 0 31 %mrv1 = insertvalue { { ptr, ptr }, i64 } %mrv, i64 1, 1 32 ret { { ptr, ptr }, i64 } %mrv1 33 } 34 35 define void @main.init() { 36 _llgo_0: 37 %0 = load i1, ptr @"main.init$guard", align 1 38 br i1 %0, label %_llgo_2, label %_llgo_1 39 40 _llgo_1: ; preds = %_llgo_0 41 store i1 true, ptr @"main.init$guard", align 1 42 br label %_llgo_2 43 44 _llgo_2: ; preds = %_llgo_1, %_llgo_0 45 ret void 46 } 47 48 define i32 @main(i32 %0, ptr %1) { 49 _llgo_0: 50 store i32 %0, ptr @__llgo_argc, align 4 51 store ptr %1, ptr @__llgo_argv, align 8 52 call void @"github.com/goplus/llgo/internal/runtime.init"() 53 call void @main.init() 54 %2 = call { ptr, ptr } @"main.main$1"() 55 %3 = extractvalue { ptr, ptr } %2, 1 56 %4 = extractvalue { ptr, ptr } %2, 0 57 %5 = call i64 %4(ptr %3, i64 100, i64 200) 58 %6 = call i32 (ptr, ...) @printf(ptr @0, i64 %5) 59 %7 = call { ptr, ptr } @main.add() 60 %8 = extractvalue { ptr, ptr } %7, 1 61 %9 = extractvalue { ptr, ptr } %7, 0 62 %10 = call i64 %9(ptr %8, i64 100, i64 200) 63 %11 = call i32 (ptr, ...) @printf(ptr @1, i64 %10) 64 %12 = call { { ptr, ptr }, i64 } @main.add2() 65 %13 = extractvalue { { ptr, ptr }, i64 } %12, 0 66 %14 = extractvalue { { ptr, ptr }, i64 } %12, 1 67 %15 = call { ptr, ptr } @main.add() 68 %16 = extractvalue { ptr, ptr } %15, 1 69 %17 = extractvalue { ptr, ptr } %15, 0 70 %18 = call i64 %17(ptr %16, i64 100, i64 200) 71 %19 = call i32 (ptr, ...) @printf(ptr @2, i64 %18, i64 %14) 72 ret i32 0 73 } 74 75 define i64 @"main.add$1"(i64 %0, i64 %1) { 76 _llgo_0: 77 %2 = add i64 %0, %1 78 ret i64 %2 79 } 80 81 define linkonce i64 @"__llgo_stub.main.add$1"(ptr %0, i64 %1, i64 %2) { 82 _llgo_0: 83 %3 = tail call i64 @"main.add$1"(i64 %1, i64 %2) 84 ret i64 %3 85 } 86 87 define i64 @"main.add2$1"(i64 %0, i64 %1) { 88 _llgo_0: 89 %2 = add i64 %0, %1 90 ret i64 %2 91 } 92 93 define linkonce i64 @"__llgo_stub.main.add2$1"(ptr %0, i64 %1, i64 %2) { 94 _llgo_0: 95 %3 = tail call i64 @"main.add2$1"(i64 %1, i64 %2) 96 ret i64 %3 97 } 98 99 declare void @"github.com/goplus/llgo/internal/runtime.init"() 100 101 define { ptr, ptr } @"main.main$1"() { 102 _llgo_0: 103 %0 = alloca { ptr, ptr }, align 8 104 %1 = getelementptr inbounds { ptr, ptr }, ptr %0, i32 0, i32 0 105 store ptr @"__llgo_stub.main.main$1$1", ptr %1, align 8 106 %2 = getelementptr inbounds { ptr, ptr }, ptr %0, i32 0, i32 1 107 store ptr null, ptr %2, align 8 108 %3 = load { ptr, ptr }, ptr %0, align 8 109 ret { ptr, ptr } %3 110 } 111 112 declare i32 @printf(ptr, ...) 113 114 define i64 @"main.main$1$1"(i64 %0, i64 %1) { 115 _llgo_0: 116 %2 = add i64 %0, %1 117 ret i64 %2 118 } 119 120 define linkonce i64 @"__llgo_stub.main.main$1$1"(ptr %0, i64 %1, i64 %2) { 121 _llgo_0: 122 %3 = tail call i64 @"main.main$1$1"(i64 %1, i64 %2) 123 ret i64 %3 124 }