github.com/goplus/llgo@v0.8.3/cl/_testrt/named/out.ll (about)

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