P5.4 core: drive the whole build from sx default_pipeline (no auto-emit/link)
The compiler's post-IR role shrinks to: codegen -> invoke the build callback. There is NO Zig auto-emit / auto-link anymore; emit + link are sx-called actions. - emit_object() is now an ACTION (verify + emit via a host BuildHooks vtable), returning the object path. New query primitives build_output/build_target/ build_frameworks/build_flags (data reads from the merged BuildConfig). - library/modules/build.sx imports compiler.sx and defines default_pipeline: emit_object -> gather c_object_paths -> link(objs, output, libs, fws, flags, target). The std<->build import cycle is handled by the resolver. - The compiler FORCE-LOWERS default_pipeline (well-known name) and AUTO-INVOKES it post-codegen when no on_build/set_post_link_callback override was registered (driver's final fallback: invokeByName default_pipeline). - Prelude-less programs (e.g. asm tests) don't import build.sx, so the BUILD path auto-imports modules/build.sx (idempotent if already transitive) so default_pipeline is always available. JIT sx run is untouched (emits in-process). - Removed the build cache short-circuits (incompatible with the always-run sx driver; a future cache can live in default_pipeline). Benign 37-.ir churn (build.sx grew); zero behavior changes (verified diff is .ir-only). 705/0 both gates.
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -557,6 +557,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -671,6 +695,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1092,3 +1119,104 @@ entry:
|
||||
call void @CAllocator.dealloc_bytes(ptr %0, ptr %1, ptr %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.2, label %if.merge.3
|
||||
|
||||
if.then.2: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.4, label %if.else.5
|
||||
|
||||
if.merge.3: ; preds = %if.merge.8, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.4: ; preds = %if.then.2
|
||||
br label %if.merge.6
|
||||
|
||||
if.else.5: ; preds = %if.then.2
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.6
|
||||
|
||||
if.merge.6: ; preds = %if.else.5, %if.then.4
|
||||
%bp = phi i64 [ 4, %if.then.4 ], [ %mul, %if.else.5 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.7, label %if.merge.8
|
||||
|
||||
if.then.7: ; preds = %if.merge.6
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.8
|
||||
|
||||
if.merge.8: ; preds = %if.then.7, %if.merge.6
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.3
|
||||
}
|
||||
|
||||
@@ -4,34 +4,34 @@
|
||||
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
|
||||
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
|
||||
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
||||
@str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.127 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
|
||||
@str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.129 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
|
||||
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.128 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
|
||||
@str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.130 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
|
||||
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
|
||||
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
|
||||
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
|
||||
@OBJC_CLASS_NAME_.130 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
|
||||
@OBJC_CLASS_NAME_.131 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
|
||||
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
|
||||
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
|
||||
@OBJC_METH_VAR_NAME_.131 = private unnamed_addr constant [8 x i8] c"dealloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.132 = private unnamed_addr constant [4 x i8] c"v@:\00"
|
||||
@OBJC_METH_VAR_NAME_.133 = private unnamed_addr constant [6 x i8] c"alloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.134 = private unnamed_addr constant [4 x i8] c"@@:\00"
|
||||
@OBJC_METH_VAR_NAME_.132 = private unnamed_addr constant [8 x i8] c"dealloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.133 = private unnamed_addr constant [4 x i8] c"v@:\00"
|
||||
@OBJC_METH_VAR_NAME_.134 = private unnamed_addr constant [6 x i8] c"alloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.135 = private unnamed_addr constant [4 x i8] c"@@:\00"
|
||||
|
||||
declare i64 @write(i32, ptr, i64)
|
||||
|
||||
@@ -282,7 +282,7 @@ entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
@@ -378,7 +378,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
|
||||
|
||||
if.then.12: ; preds = %if.then.9
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -386,7 +386,7 @@ if.then.12: ; preds = %if.then.9
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -396,13 +396,13 @@ if.then.12: ; preds = %if.then.9
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.merge.13: ; preds = %if.then.12, %if.then.9
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -410,7 +410,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -424,7 +424,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
|
||||
if.then.23: ; preds = %if.else.10
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -432,7 +432,7 @@ if.then.23: ; preds = %if.else.10
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -443,7 +443,7 @@ if.then.23: ; preds = %if.else.10
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -500,7 +500,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -508,7 +508,7 @@ if.then.32: ; preds = %if.then.29
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -519,7 +519,7 @@ if.then.32: ; preds = %if.then.29
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -539,7 +539,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
|
||||
|
||||
if.then.35: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -547,7 +547,7 @@ if.then.35: ; preds = %while.exit.2
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
@@ -558,7 +558,7 @@ if.then.35: ; preds = %while.exit.2
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.36
|
||||
|
||||
@@ -1059,6 +1059,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1173,6 +1197,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1647,6 +1674,9 @@ declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline.112(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @SxFoo.bump(ptr %0, ptr %1) #0 {
|
||||
entry:
|
||||
@@ -1688,14 +1718,14 @@ entry:
|
||||
define internal void @print__ct_sfeff9eeccd48b824__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.127, i64 9 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.128, i64 9 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.128, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.129, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 9)
|
||||
@@ -1709,10 +1739,111 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 9 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 9 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.37: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.39, label %if.else.40
|
||||
|
||||
if.merge.38: ; preds = %if.merge.43, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.39: ; preds = %if.then.37
|
||||
br label %if.merge.41
|
||||
|
||||
if.else.40: ; preds = %if.then.37
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.41
|
||||
|
||||
if.merge.41: ; preds = %if.else.40, %if.then.39
|
||||
%bp = phi i64 [ 4, %if.then.39 ], [ %mul, %if.else.40 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.42, label %if.merge.43
|
||||
|
||||
if.then.42: ; preds = %if.merge.41
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.then.42, %if.merge.41
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.38
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @object_getIvar(ptr, ptr) #0
|
||||
|
||||
@@ -1789,17 +1920,17 @@ declare ptr @class_getInstanceVariable(ptr, ptr)
|
||||
define internal void @__sx_objc_defined_class_init() {
|
||||
entry:
|
||||
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
|
||||
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.130, i64 0)
|
||||
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.131, i64 0)
|
||||
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
|
||||
%metacls = call ptr @object_getClass(ptr %cls)
|
||||
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
|
||||
%1 = call i8 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
|
||||
call void @objc_registerClassPair(ptr %cls)
|
||||
store ptr %cls, ptr @__SxFoo_class, align 8
|
||||
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.131)
|
||||
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.132)
|
||||
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.133)
|
||||
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.134)
|
||||
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.132)
|
||||
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.133)
|
||||
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.134)
|
||||
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.135)
|
||||
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
|
||||
store ptr %iv, ptr @__SxFoo_state_ivar, align 8
|
||||
ret void
|
||||
|
||||
@@ -4,50 +4,50 @@
|
||||
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
|
||||
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
|
||||
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
||||
@str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.127 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
|
||||
@str.128 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
|
||||
@str.129 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
|
||||
@str.130 = private unnamed_addr constant [8 x i8] c"release\00", align 1
|
||||
@str.131 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
|
||||
@str.132 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.133 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
|
||||
@str.134 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
|
||||
@str.135 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.136 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
|
||||
@str.137 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
|
||||
@str.138 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.139 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
|
||||
@str.140 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
|
||||
@str.141 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.142 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
|
||||
@str.143 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
|
||||
@str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.145 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
|
||||
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.128 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
|
||||
@str.129 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
|
||||
@str.130 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
|
||||
@str.131 = private unnamed_addr constant [8 x i8] c"release\00", align 1
|
||||
@str.132 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
|
||||
@str.133 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.134 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
|
||||
@str.135 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
|
||||
@str.136 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.137 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
|
||||
@str.138 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
|
||||
@str.139 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.140 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
|
||||
@str.141 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
|
||||
@str.142 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.143 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
|
||||
@str.144 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
|
||||
@str.145 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.146 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
|
||||
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
|
||||
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
|
||||
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
|
||||
@OBJC_CLASS_NAME_.146 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
|
||||
@OBJC_CLASS_NAME_.147 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
|
||||
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
|
||||
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
|
||||
@OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [8 x i8] c"dealloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.148 = private unnamed_addr constant [4 x i8] c"v@:\00"
|
||||
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [6 x i8] c"alloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.150 = private unnamed_addr constant [4 x i8] c"@@:\00"
|
||||
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [8 x i8] c"dealloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.149 = private unnamed_addr constant [4 x i8] c"v@:\00"
|
||||
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [6 x i8] c"alloc\00"
|
||||
@OBJC_METH_VAR_TYPE_.151 = private unnamed_addr constant [4 x i8] c"@@:\00"
|
||||
|
||||
declare i64 @write(i32, ptr, i64)
|
||||
|
||||
@@ -298,7 +298,7 @@ entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
@@ -394,7 +394,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -402,7 +402,7 @@ if.then.14: ; preds = %if.then.11
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -412,13 +412,13 @@ if.then.14: ; preds = %if.then.11
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.15
|
||||
|
||||
if.merge.15: ; preds = %if.then.14, %if.then.11
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -426,7 +426,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -440,7 +440,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -448,7 +448,7 @@ if.then.25: ; preds = %if.else.12
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -459,7 +459,7 @@ if.then.25: ; preds = %if.else.12
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -516,7 +516,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
|
||||
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -524,7 +524,7 @@ if.then.34: ; preds = %if.then.31
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -535,7 +535,7 @@ if.then.34: ; preds = %if.then.31
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -555,7 +555,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
|
||||
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -563,7 +563,7 @@ if.then.37: ; preds = %while.exit.4
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
@@ -574,7 +574,7 @@ if.then.37: ; preds = %while.exit.4
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.38
|
||||
|
||||
@@ -1075,6 +1075,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1189,6 +1213,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1663,6 +1690,9 @@ declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline.112(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @objc_getClass(ptr) #0
|
||||
|
||||
@@ -1748,7 +1778,7 @@ entry:
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%call = call ptr @objc_getClass(ptr @str.127)
|
||||
%call = call ptr @objc_getClass(ptr @str.128)
|
||||
store ptr %call, ptr %alloca, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%icmp = icmp eq ptr %load, null
|
||||
@@ -1759,7 +1789,7 @@ if.then.0: ; preds = %entry
|
||||
ret i32 1
|
||||
|
||||
if.merge.1: ; preds = %entry
|
||||
%callN = call ptr @sel_registerName(ptr @str.128)
|
||||
%callN = call ptr @sel_registerName(ptr @str.129)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
@@ -1774,7 +1804,7 @@ if.then.39: ; preds = %if.merge.1
|
||||
ret i32 1
|
||||
|
||||
if.merge.40: ; preds = %if.merge.1
|
||||
%callN = call ptr @sel_registerName(ptr @str.129)
|
||||
%callN = call ptr @sel_registerName(ptr @str.130)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
store ptr @objc_msgSend, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
@@ -1791,7 +1821,7 @@ if.then.41: ; preds = %if.merge.40
|
||||
ret i32 1
|
||||
|
||||
if.merge.42: ; preds = %if.merge.40
|
||||
%callN = call ptr @sel_registerName(ptr @str.130)
|
||||
%callN = call ptr @sel_registerName(ptr @str.131)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
store ptr @objc_msgSend, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
@@ -1838,14 +1868,14 @@ entry:
|
||||
define internal void @print__ct_s354c93d7643e1bdf__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.131, i64 27 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.132, i64 27 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.132, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.133, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27)
|
||||
@@ -1859,7 +1889,7 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.133, i64 27 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.134, i64 27 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
@@ -1867,14 +1897,14 @@ entry:
|
||||
define internal void @print__ct_sfe783e2b27a4beff__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.134, i64 26 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.135, i64 26 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.135, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.136, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 26)
|
||||
@@ -1888,7 +1918,7 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_1(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.136, i64 26 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.137, i64 26 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
@@ -1896,14 +1926,14 @@ entry:
|
||||
define internal void @print__ct_scaebdbbd10c81716__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.137, i64 27 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.138, i64 27 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.138, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.139, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27)
|
||||
@@ -1917,7 +1947,7 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_2(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.139, i64 27 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.140, i64 27 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
@@ -1925,14 +1955,14 @@ entry:
|
||||
define internal void @print__ct_s7c1052877b8cc801__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.140, i64 35 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.141, i64 35 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.141, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.142, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 35)
|
||||
@@ -1946,7 +1976,7 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_3(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.142, i64 35 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.143, i64 35 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
@@ -1954,14 +1984,14 @@ entry:
|
||||
define internal void @print__ct_sed4e79fbcbd67966__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.143, i64 12 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.144, i64 12 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.144, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.145, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 12)
|
||||
@@ -1975,10 +2005,111 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_4(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.145, i64 12 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.146, i64 12 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.45, label %if.merge.46
|
||||
|
||||
if.then.45: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.47, label %if.else.48
|
||||
|
||||
if.merge.46: ; preds = %if.merge.51, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.47: ; preds = %if.then.45
|
||||
br label %if.merge.49
|
||||
|
||||
if.else.48: ; preds = %if.then.45
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.49
|
||||
|
||||
if.merge.49: ; preds = %if.else.48, %if.then.47
|
||||
%bp = phi i64 [ 4, %if.then.47 ], [ %mul, %if.else.48 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.50, label %if.merge.51
|
||||
|
||||
if.then.50: ; preds = %if.merge.49
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.51
|
||||
|
||||
if.merge.51: ; preds = %if.then.50, %if.merge.49
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.46
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define ptr @__SxFoo_alloc_imp(ptr %0, ptr %1) #0 {
|
||||
entry:
|
||||
@@ -2033,17 +2164,17 @@ declare i8 @class_addIvar(ptr, ptr, i64, i8, ptr)
|
||||
define internal void @__sx_objc_defined_class_init() {
|
||||
entry:
|
||||
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
|
||||
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.146, i64 0)
|
||||
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.147, i64 0)
|
||||
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
|
||||
%metacls = call ptr @object_getClass(ptr %cls)
|
||||
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
|
||||
%1 = call i1 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
|
||||
call void @objc_registerClassPair(ptr %cls)
|
||||
store ptr %cls, ptr @__SxFoo_class, align 8
|
||||
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.147)
|
||||
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.148)
|
||||
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
|
||||
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.150)
|
||||
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.148)
|
||||
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.149)
|
||||
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.150)
|
||||
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.151)
|
||||
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
|
||||
store ptr %iv, ptr @__SxFoo_state_ivar, align 8
|
||||
ret void
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3,26 +3,26 @@
|
||||
@OBJC_SELECTOR_REFERENCES_init = internal global ptr null
|
||||
@OBJC_SELECTOR_REFERENCES_release = internal global ptr null
|
||||
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
||||
@str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
|
||||
@str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.129 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
|
||||
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.128 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
|
||||
@str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.130 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
|
||||
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"init\00"
|
||||
@OBJC_METH_VAR_NAME_.130 = private unnamed_addr constant [8 x i8] c"release\00"
|
||||
@OBJC_METH_VAR_NAME_.131 = private unnamed_addr constant [8 x i8] c"release\00"
|
||||
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }]
|
||||
|
||||
declare i64 @write(i32, ptr, i64)
|
||||
@@ -274,7 +274,7 @@ entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
@@ -370,7 +370,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
|
||||
|
||||
if.then.12: ; preds = %if.then.9
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -378,7 +378,7 @@ if.then.12: ; preds = %if.then.9
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -388,13 +388,13 @@ if.then.12: ; preds = %if.then.9
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.merge.13: ; preds = %if.then.12, %if.then.9
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -402,7 +402,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -416,7 +416,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
|
||||
if.then.23: ; preds = %if.else.10
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -424,7 +424,7 @@ if.then.23: ; preds = %if.else.10
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -435,7 +435,7 @@ if.then.23: ; preds = %if.else.10
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -492,7 +492,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -500,7 +500,7 @@ if.then.32: ; preds = %if.then.29
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -511,7 +511,7 @@ if.then.32: ; preds = %if.then.29
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -531,7 +531,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
|
||||
|
||||
if.then.35: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -539,7 +539,7 @@ if.then.35: ; preds = %while.exit.2
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
@@ -550,7 +550,7 @@ if.then.35: ; preds = %while.exit.2
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.36
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1639,6 +1666,9 @@ declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline.112(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
@@ -1673,14 +1703,14 @@ entry:
|
||||
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.127, i64 3 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.128, i64 3 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.128, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.129, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
|
||||
@@ -1694,10 +1724,111 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 3 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.37: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.39, label %if.else.40
|
||||
|
||||
if.merge.38: ; preds = %if.merge.43, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.39: ; preds = %if.then.37
|
||||
br label %if.merge.41
|
||||
|
||||
if.else.40: ; preds = %if.then.37
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.41
|
||||
|
||||
if.merge.41: ; preds = %if.else.40, %if.then.39
|
||||
%bp = phi i64 [ 4, %if.then.39 ], [ %mul, %if.else.40 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.42, label %if.merge.43
|
||||
|
||||
if.then.42: ; preds = %if.merge.41
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.then.42, %if.merge.41
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.38
|
||||
}
|
||||
|
||||
declare ptr @objc_msgSend(ptr, ptr)
|
||||
|
||||
declare ptr @sel_registerName(ptr)
|
||||
@@ -1706,7 +1837,7 @@ define internal void @__sx_objc_selector_init() {
|
||||
entry:
|
||||
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
|
||||
store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_init, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.130)
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.131)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_release, align 8
|
||||
ret void
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -8,47 +8,47 @@
|
||||
@OBJC_SELECTOR_REFERENCES_initWithFrame_options_ = internal global ptr null
|
||||
@OBJC_SELECTOR_REFERENCES_actualSelectorName = internal global ptr null
|
||||
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
||||
@str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.127 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1
|
||||
@str.128 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
|
||||
@str.129 = private unnamed_addr constant [7 x i8] c"length\00", align 1
|
||||
@str.130 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
|
||||
@str.131 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
|
||||
@str.132 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
|
||||
@str.133 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
|
||||
@str.134 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
|
||||
@str.135 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
|
||||
@str.136 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
|
||||
@str.137 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
|
||||
@str.138 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
|
||||
@str.139 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
|
||||
@str.140 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
|
||||
@str.141 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
|
||||
@str.142 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
|
||||
@str.143 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
|
||||
@str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.145 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
|
||||
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
||||
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
||||
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
||||
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
||||
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
||||
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
||||
@str.128 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1
|
||||
@str.129 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
|
||||
@str.130 = private unnamed_addr constant [7 x i8] c"length\00", align 1
|
||||
@str.131 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
|
||||
@str.132 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
|
||||
@str.133 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
|
||||
@str.134 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
|
||||
@str.135 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
|
||||
@str.136 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
|
||||
@str.137 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
|
||||
@str.138 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
|
||||
@str.139 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
|
||||
@str.140 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
|
||||
@str.141 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
|
||||
@str.142 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
|
||||
@str.143 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
|
||||
@str.144 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
|
||||
@str.145 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
||||
@str.146 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
|
||||
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [7 x i8] c"length\00"
|
||||
@OBJC_METH_VAR_NAME_.146 = private unnamed_addr constant [11 x i8] c"addObject:\00"
|
||||
@OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
|
||||
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
|
||||
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
|
||||
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
|
||||
@OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00"
|
||||
@OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [11 x i8] c"addObject:\00"
|
||||
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
|
||||
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
|
||||
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
|
||||
@OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
|
||||
@OBJC_METH_VAR_NAME_.152 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00"
|
||||
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }]
|
||||
|
||||
declare i64 @write(i32, ptr, i64)
|
||||
@@ -300,7 +300,7 @@ entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
@@ -396,7 +396,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
|
||||
|
||||
if.then.12: ; preds = %if.then.9
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -404,7 +404,7 @@ if.then.12: ; preds = %if.then.9
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -414,13 +414,13 @@ if.then.12: ; preds = %if.then.9
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.merge.13: ; preds = %if.then.12, %if.then.9
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -428,7 +428,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -442,7 +442,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
|
||||
if.then.23: ; preds = %if.else.10
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -450,7 +450,7 @@ if.then.23: ; preds = %if.else.10
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -461,7 +461,7 @@ if.then.23: ; preds = %if.else.10
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -518,7 +518,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -526,7 +526,7 @@ if.then.32: ; preds = %if.then.29
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -537,7 +537,7 @@ if.then.32: ; preds = %if.then.29
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 2
|
||||
@@ -557,7 +557,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
|
||||
|
||||
if.then.35: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -565,7 +565,7 @@ if.then.35: ; preds = %while.exit.2
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
@@ -576,7 +576,7 @@ if.then.35: ; preds = %while.exit.2
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.36
|
||||
|
||||
@@ -1077,6 +1077,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1191,6 +1215,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1665,6 +1692,9 @@ declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline.112(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @objc_getClass(ptr) #0
|
||||
|
||||
@@ -1745,34 +1775,34 @@ entry:
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
call void @__sx_objc_selector_init()
|
||||
%call = call ptr @objc_getClass(ptr @str.127)
|
||||
%call = call ptr @objc_getClass(ptr @str.128)
|
||||
%alloca = alloca ptr, align 8
|
||||
store ptr %call, ptr %alloca, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.128, i64 0)
|
||||
%callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.129, i64 0)
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.129)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.130)
|
||||
%callN = call ptr @sel_registerName(ptr @str.130)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.131)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.131)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.132)
|
||||
%callN = call ptr @sel_registerName(ptr @str.132)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.133)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.133)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.134)
|
||||
%callN = call ptr @sel_registerName(ptr @str.134)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.135)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.135)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.136)
|
||||
%callN = call ptr @sel_registerName(ptr @str.136)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.137)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.137)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.138)
|
||||
%callN = call ptr @sel_registerName(ptr @str.138)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.139)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.139)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.140)
|
||||
%callN = call ptr @sel_registerName(ptr @str.140)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.141)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.141)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.142)
|
||||
%callN = call ptr @sel_registerName(ptr @str.142)
|
||||
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.143)
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
call void @objc_registerClassPair(ptr %loadN)
|
||||
%allocaN = alloca ptr, align 8
|
||||
@@ -1822,14 +1852,14 @@ entry:
|
||||
define internal void @print__ct_s4c1a58a7c89bfbba__pack(ptr %0) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.143, i64 18 }, ptr %alloca, align 8
|
||||
store { ptr, i64 } { ptr @str.144, i64 18 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
||||
store ptr null, ptr %gep, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
||||
store i64 0, ptr %gepN, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.144, i64 0 }, ptr %allocaN, align 8
|
||||
store { ptr, i64 } { ptr @str.145, i64 0 }, ptr %allocaN, align 8
|
||||
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 18)
|
||||
@@ -1843,25 +1873,126 @@ entry:
|
||||
; Function Attrs: nounwind
|
||||
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
|
||||
entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.145, i64 18 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.146, i64 18 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.37: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.39, label %if.else.40
|
||||
|
||||
if.merge.38: ; preds = %if.merge.43, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.39: ; preds = %if.then.37
|
||||
br label %if.merge.41
|
||||
|
||||
if.else.40: ; preds = %if.then.37
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.41
|
||||
|
||||
if.merge.41: ; preds = %if.else.40, %if.then.39
|
||||
%bp = phi i64 [ 4, %if.then.39 ], [ %mul, %if.else.40 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.42, label %if.merge.43
|
||||
|
||||
if.then.42: ; preds = %if.merge.41
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.then.42, %if.merge.41
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.38
|
||||
}
|
||||
|
||||
define internal void @__sx_objc_selector_init() {
|
||||
entry:
|
||||
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
|
||||
store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_length, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.146)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.147)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.148)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.150)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.151)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8
|
||||
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.152)
|
||||
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_actualSelectorName, align 8
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -1053,6 +1053,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1167,6 +1191,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1663,3 +1690,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.98, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1638,3 +1665,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1638,3 +1665,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1638,3 +1665,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1638,3 +1665,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1638,3 +1665,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1635,3 +1662,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1638,3 +1665,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -1051,6 +1051,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -1165,6 +1189,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1636,3 +1663,104 @@ entry:
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.39: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.41, label %if.else.42
|
||||
|
||||
if.merge.40: ; preds = %if.merge.45, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.41: ; preds = %if.then.39
|
||||
br label %if.merge.43
|
||||
|
||||
if.else.42: ; preds = %if.then.39
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.43
|
||||
|
||||
if.merge.43: ; preds = %if.else.42, %if.then.41
|
||||
%bp = phi i64 [ 4, %if.then.41 ], [ %mul, %if.else.42 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.45
|
||||
|
||||
if.merge.45: ; preds = %if.then.44, %if.merge.43
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.40
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
@g_held_view = internal global ptr null
|
||||
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
|
||||
@str = private unnamed_addr constant [9 x i8] c"onCreate\00", align 1
|
||||
@str.112 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1
|
||||
@str.113 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1
|
||||
@jni.parent.path = private unnamed_addr constant [21 x i8] c"android/app/Activity\00", align 1
|
||||
@str.113 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
|
||||
@str.114 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1
|
||||
@str.114 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
|
||||
@str.115 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1
|
||||
@jni.ctor.path = private unnamed_addr constant [25 x i8] c"android/view/SurfaceView\00", align 1
|
||||
|
||||
declare i64 @write(i32, ptr, i64)
|
||||
@@ -564,6 +564,30 @@ declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @escape(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @c_object_paths(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link_libraries(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @emit_object() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_output() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @build_target() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_frameworks(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
||||
|
||||
@@ -678,6 +702,9 @@ declare void @set_post_link_callback(i64, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @on_build(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline(ptr, {}) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @spaces.44(ptr, i32) #0
|
||||
|
||||
@@ -1152,6 +1179,9 @@ declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @default_pipeline.112(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
@@ -1172,6 +1202,107 @@ entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @List__string.append(ptr %0, ptr %1, { ptr, i64 } %2, { ptr, ptr, ptr } %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %2, ptr %allocaN, align 8
|
||||
%allocaN = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %3, ptr %allocaN, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %load, align 8
|
||||
%sg = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmp = icmp sge i64 %sg, %sgN
|
||||
br i1 %icmp, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%icmpN = icmp eq i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.2, label %if.else.3
|
||||
|
||||
if.merge.1: ; preds = %if.merge.6, %entry
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%igp.ptr = getelementptr { ptr, i64 }, ptr %sgN, i64 %sgN
|
||||
store { ptr, i64 } %loadN, ptr %igp.ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gep = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 1
|
||||
%loadN = load i64, ptr %gep, align 8
|
||||
%add = add i64 %loadN, 1
|
||||
store i64 %add, ptr %gep, align 8
|
||||
ret void
|
||||
|
||||
if.then.2: ; preds = %if.then.0
|
||||
br label %if.merge.4
|
||||
|
||||
if.else.3: ; preds = %if.then.0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 2
|
||||
%mul = mul i64 %sgN, 2
|
||||
br label %if.merge.4
|
||||
|
||||
if.merge.4: ; preds = %if.else.3, %if.then.2
|
||||
%bp = phi i64 [ 4, %if.then.2 ], [ %mul, %if.else.3 ]
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mulN = mul i64 %loadN, 16
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 1
|
||||
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %mulN)
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%icmpN = icmp sgt i64 %sgN, 0
|
||||
br i1 %icmpN, label %if.then.5, label %if.merge.6
|
||||
|
||||
if.then.5: ; preds = %if.merge.4
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 1
|
||||
%mulN = mul i64 %sgN, 16
|
||||
%call = call ptr @memcpy(ptr %loadN, ptr %sgN, i64 %mulN)
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load { ptr, i64, i64 }, ptr %loadN, align 8
|
||||
%sgN = extractvalue { ptr, i64, i64 } %loadN, 0
|
||||
%loadN = load { ptr, ptr, ptr }, ptr %allocaN, align 8
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 0
|
||||
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
||||
call void %sgN(ptr %0, ptr %sgN, ptr %sgN)
|
||||
br label %if.merge.6
|
||||
|
||||
if.merge.6: ; preds = %if.then.5, %if.merge.4
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 0
|
||||
store ptr %loadN, ptr %gepN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%gepN = getelementptr inbounds nuw { ptr, i64, i64 }, ptr %loadN, i32 0, i32 2
|
||||
store i64 %loadN, ptr %gepN, align 8
|
||||
br label %if.merge.1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define void @Java_co_swipelab_sxjnictor_SxApp_sx_1onCreate(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1190,7 +1321,7 @@ entry:
|
||||
%jni.parent.cls = call ptr %jni.FindClass(ptr %load, ptr @jni.parent.path)
|
||||
%4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
|
||||
%jni.GetMethodID = load ptr, ptr %4, align 8
|
||||
%jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.112)
|
||||
%jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.113)
|
||||
%jni.parent.cls.slot = alloca ptr, align 8
|
||||
store ptr %jni.parent.cls, ptr %jni.parent.cls.slot, align 8
|
||||
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 91
|
||||
@@ -1206,7 +1337,7 @@ entry:
|
||||
%jni.ctor.cls = call ptr %jni.FindClass9(ptr %load, ptr @jni.ctor.path)
|
||||
%7 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 33
|
||||
%jni.GetMethodID10 = load ptr, ptr %7, align 8
|
||||
%jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.113, ptr @str.114)
|
||||
%jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.114, ptr @str.115)
|
||||
%8 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 28
|
||||
%jni.NewObject = load ptr, ptr %8, align 8
|
||||
%jni.new.obj = call ptr %jni.NewObject(ptr %load, ptr %jni.ctor.cls, ptr %jni.ctor.mid, ptr %loadN)
|
||||
|
||||
Reference in New Issue
Block a user