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  }