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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user