An alloca built at its use site re-executes on every pass through that block, and LLVM reclaims allocas only at ret — so loop-body locals, nested-loop index slots, and emitter spill temps (ig.tmp, sret slots, ABI coercion temps, byval materialization) grew the stack per iteration and long loops segfaulted on stack exhaustion. New LLVMEmitter.buildEntryAlloca inserts after existing entry-block allocas and restores the builder position; every LLVMBuildAlloca site reachable during instruction emission now routes through it. Initialization stores stay at the use site (per-iteration re-init is unchanged), and entry slots become mem2reg-promotable. The 35 .ir snapshot diffs are pure alloca position moves (type multisets verified identical per file). Regression: examples/0047-basic-loop-local-stack-reuse.sx (segfaulted pre-fix on both the 1M-iteration body-local loop and the 3M-iteration nested loop).
4688 lines
215 KiB
Plaintext
4688 lines
215 KiB
Plaintext
|
|
@__SxBox_state_ivar = internal global ptr null
|
|
@__SxBox_class = internal global ptr null
|
|
@OS = internal global i64 6
|
|
@ARCH = internal global i64 4
|
|
@POINTER_SIZE = internal global i64 8
|
|
@__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null }
|
|
@OBJC_CLASSLIST_REFERENCES_SxBox = internal global ptr null
|
|
@OBJC_SELECTOR_REFERENCES_init = internal global ptr null
|
|
@OBJC_SELECTOR_REFERENCES_setWidth_ = internal global ptr null
|
|
@OBJC_SELECTOR_REFERENCES_setHeight_ = internal global ptr null
|
|
@OBJC_SELECTOR_REFERENCES_width = internal global ptr null
|
|
@OBJC_SELECTOR_REFERENCES_height = internal global ptr null
|
|
@OBJC_SELECTOR_REFERENCES_area = internal global ptr null
|
|
@__sx_objc_cstr_dealloc = internal global [8 x i8] c"dealloc\00"
|
|
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
|
@str.1 = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
|
@str.2 = private unnamed_addr constant [5 x i8] c"true\00", align 1
|
|
@str.3 = private unnamed_addr constant [6 x i8] c"false\00", align 1
|
|
@str.4 = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
|
@str.5 = private unnamed_addr constant [4 x i8] c"<?>\00", align 1
|
|
@str.6 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@__sx_type_is_unsigned = private constant [94 x i1] [i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 true, i1 true, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false]
|
|
@tn.str = private constant [13 x i8] c"<unresolved>\00"
|
|
@tn.str.7 = private constant [5 x i8] c"bool\00"
|
|
@tn.str.8 = private constant [3 x i8] c"s8\00"
|
|
@tn.str.9 = private constant [4 x i8] c"s16\00"
|
|
@tn.str.10 = private constant [4 x i8] c"s32\00"
|
|
@tn.str.11 = private constant [4 x i8] c"s64\00"
|
|
@tn.str.12 = private constant [3 x i8] c"u8\00"
|
|
@tn.str.13 = private constant [4 x i8] c"u16\00"
|
|
@tn.str.14 = private constant [4 x i8] c"u32\00"
|
|
@tn.str.15 = private constant [4 x i8] c"u64\00"
|
|
@tn.str.16 = private constant [4 x i8] c"f32\00"
|
|
@tn.str.17 = private constant [4 x i8] c"f64\00"
|
|
@tn.str.18 = private constant [7 x i8] c"string\00"
|
|
@tn.str.19 = private constant [4 x i8] c"Any\00"
|
|
@tn.str.20 = private constant [9 x i8] c"noreturn\00"
|
|
@tn.str.21 = private constant [6 x i8] c"isize\00"
|
|
@tn.str.22 = private constant [6 x i8] c"usize\00"
|
|
@tn.str.23 = private constant [5 x i8] c"void\00"
|
|
@tn.str.24 = private constant [6 x i8] c"*void\00"
|
|
@tn.str.25 = private constant [16 x i8] c"Source_Location\00"
|
|
@tn.str.26 = private constant [10 x i8] c"Allocator\00"
|
|
@tn.str.27 = private constant [11 x i8] c"CAllocator\00"
|
|
@tn.str.28 = private constant [12 x i8] c"*CAllocator\00"
|
|
@tn.str.29 = private constant [4 x i8] c"GPA\00"
|
|
@tn.str.30 = private constant [5 x i8] c"*GPA\00"
|
|
@tn.str.31 = private constant [11 x i8] c"ArenaChunk\00"
|
|
@tn.str.32 = private constant [12 x i8] c"*ArenaChunk\00"
|
|
@tn.str.33 = private constant [6 x i8] c"Arena\00"
|
|
@tn.str.34 = private constant [7 x i8] c"*Arena\00"
|
|
@tn.str.35 = private constant [6 x i8] c"[*]u8\00"
|
|
@tn.str.36 = private constant [9 x i8] c"BufAlloc\00"
|
|
@tn.str.37 = private constant [10 x i8] c"*BufAlloc\00"
|
|
@tn.str.38 = private constant [18 x i8] c"TrackingAllocator\00"
|
|
@tn.str.39 = private constant [19 x i8] c"*TrackingAllocator\00"
|
|
@tn.str.40 = private constant [8 x i8] c"Context\00"
|
|
@tn.str.41 = private constant [7 x i8] c"[4]s64\00"
|
|
@tn.str.42 = private constant [9 x i8] c"[]string\00"
|
|
@tn.str.43 = private constant [16 x i8] c"OperatingSystem\00"
|
|
@tn.str.44 = private constant [13 x i8] c"Architecture\00"
|
|
@tn.str.45 = private constant [13 x i8] c"BuildOptions\00"
|
|
@tn.str.46 = private constant [11 x i8] c"() -> bool\00"
|
|
@tn.str.47 = private constant [9 x i8] c"NSString\00"
|
|
@tn.str.48 = private constant [10 x i8] c"*NSString\00"
|
|
@tn.str.49 = private constant [10 x i8] c"Closure()\00"
|
|
@tn.str.50 = private constant [13 x i8] c"**CAllocator\00"
|
|
@tn.str.51 = private constant [5 x i8] c"*s64\00"
|
|
@tn.str.52 = private constant [7 x i8] c"**void\00"
|
|
@tn.str.53 = private constant [6 x i8] c"SxBox\00"
|
|
@tn.str.54 = private constant [7 x i8] c"*SxBox\00"
|
|
@tn.str.55 = private constant [13 x i8] c"__SxBoxState\00"
|
|
@tn.str.56 = private constant [8 x i8] c"**SxBox\00"
|
|
@tn.str.57 = private constant [5 x i8] c"*s32\00"
|
|
@tn.str.58 = private constant [8 x i8] c"*string\00"
|
|
@tn.str.59 = private constant [6 x i8] c"[]Any\00"
|
|
@tn.str.60 = private constant [5 x i8] c"*Any\00"
|
|
@tn.str.61 = private constant [7 x i8] c"*[]Any\00"
|
|
@tn.str.62 = private constant [4 x i8] c"*u8\00"
|
|
@tn.str.63 = private constant [6 x i8] c"*bool\00"
|
|
@tn.str.64 = private constant [7 x i8] c"[1]Any\00"
|
|
@tn.str.65 = private constant [8 x i8] c"*[1]Any\00"
|
|
@tn.str.66 = private constant [7 x i8] c"[3]Any\00"
|
|
@tn.str.67 = private constant [8 x i8] c"*[3]Any\00"
|
|
@tn.str.68 = private constant [8 x i8] c"*[4]s64\00"
|
|
@tn.str.69 = private constant [5 x i8] c"*f64\00"
|
|
@tn.str.70 = private constant [17 x i8] c"*Source_Location\00"
|
|
@tn.str.71 = private constant [11 x i8] c"*Allocator\00"
|
|
@tn.str.72 = private constant [9 x i8] c"*Context\00"
|
|
@tn.str.73 = private constant [14 x i8] c"*BuildOptions\00"
|
|
@tn.str.74 = private constant [14 x i8] c"*__SxBoxState\00"
|
|
@tn.str.75 = private constant [17 x i8] c"*OperatingSystem\00"
|
|
@tn.str.76 = private constant [14 x i8] c"*Architecture\00"
|
|
@tn.str.77 = private constant [10 x i8] c"*[]string\00"
|
|
@tn.str.78 = private constant [6 x i8] c"**GPA\00"
|
|
@tn.str.79 = private constant [13 x i8] c"**ArenaChunk\00"
|
|
@tn.str.80 = private constant [8 x i8] c"**Arena\00"
|
|
@tn.str.81 = private constant [7 x i8] c"*[*]u8\00"
|
|
@tn.str.82 = private constant [11 x i8] c"**BufAlloc\00"
|
|
@tn.str.83 = private constant [20 x i8] c"**TrackingAllocator\00"
|
|
@tn.str.84 = private constant [11 x i8] c"**NSString\00"
|
|
@tn.str.85 = private constant [14 x i8] c"***CAllocator\00"
|
|
@tn.str.86 = private constant [6 x i8] c"**s64\00"
|
|
@tn.str.87 = private constant [8 x i8] c"***void\00"
|
|
@tn.str.88 = private constant [9 x i8] c"***SxBox\00"
|
|
@tn.str.89 = private constant [6 x i8] c"**s32\00"
|
|
@tn.str.90 = private constant [9 x i8] c"**string\00"
|
|
@tn.str.91 = private constant [6 x i8] c"**Any\00"
|
|
@tn.str.92 = private constant [8 x i8] c"**[]Any\00"
|
|
@tn.str.93 = private constant [5 x i8] c"**u8\00"
|
|
@tn.str.94 = private constant [7 x i8] c"**bool\00"
|
|
@tn.str.95 = private constant [9 x i8] c"**[1]Any\00"
|
|
@tn.str.96 = private constant [9 x i8] c"**[3]Any\00"
|
|
@tn.str.97 = private constant [16 x i8] c"__sx_objc_super\00"
|
|
@tn.str.98 = private constant [17 x i8] c"*__sx_objc_super\00"
|
|
@tn.str.99 = private constant [6 x i8] c"[8]u8\00"
|
|
@__sx_type_names = private constant [94 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.7, i64 4 }, { ptr, i64 } { ptr @tn.str.8, i64 2 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 2 }, { ptr, i64 } { ptr @tn.str.13, i64 3 }, { ptr, i64 } { ptr @tn.str.14, i64 3 }, { ptr, i64 } { ptr @tn.str.15, i64 3 }, { ptr, i64 } { ptr @tn.str.16, i64 3 }, { ptr, i64 } { ptr @tn.str.17, i64 3 }, { ptr, i64 } { ptr @tn.str.18, i64 6 }, { ptr, i64 } { ptr @tn.str.19, i64 3 }, { ptr, i64 } { ptr @tn.str.20, i64 8 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 5 }, { ptr, i64 } { ptr @tn.str.23, i64 4 }, { ptr, i64 } { ptr @tn.str.24, i64 5 }, { ptr, i64 } { ptr @tn.str.25, i64 15 }, { ptr, i64 } { ptr @tn.str.26, i64 9 }, { ptr, i64 } { ptr @tn.str.27, i64 10 }, { ptr, i64 } { ptr @tn.str.28, i64 11 }, { ptr, i64 } { ptr @tn.str.29, i64 3 }, { ptr, i64 } { ptr @tn.str.30, i64 4 }, { ptr, i64 } { ptr @tn.str.31, i64 10 }, { ptr, i64 } { ptr @tn.str.32, i64 11 }, { ptr, i64 } { ptr @tn.str.33, i64 5 }, { ptr, i64 } { ptr @tn.str.34, i64 6 }, { ptr, i64 } { ptr @tn.str.35, i64 5 }, { ptr, i64 } { ptr @tn.str.36, i64 8 }, { ptr, i64 } { ptr @tn.str.37, i64 9 }, { ptr, i64 } { ptr @tn.str.38, i64 17 }, { ptr, i64 } { ptr @tn.str.39, i64 18 }, { ptr, i64 } { ptr @tn.str.40, i64 7 }, { ptr, i64 } { ptr @tn.str.41, i64 6 }, { ptr, i64 } { ptr @tn.str.42, i64 8 }, { ptr, i64 } { ptr @tn.str.43, i64 15 }, { ptr, i64 } { ptr @tn.str.44, i64 12 }, { ptr, i64 } { ptr @tn.str.45, i64 12 }, { ptr, i64 } { ptr @tn.str.46, i64 10 }, { ptr, i64 } { ptr @tn.str.47, i64 8 }, { ptr, i64 } { ptr @tn.str.48, i64 9 }, { ptr, i64 } { ptr @tn.str.49, i64 9 }, { ptr, i64 } { ptr @tn.str.50, i64 12 }, { ptr, i64 } { ptr @tn.str.51, i64 4 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 12 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 7 }, { ptr, i64 } { ptr @tn.str.59, i64 5 }, { ptr, i64 } { ptr @tn.str.60, i64 4 }, { ptr, i64 } { ptr @tn.str.61, i64 6 }, { ptr, i64 } { ptr @tn.str.62, i64 3 }, { ptr, i64 } { ptr @tn.str.63, i64 5 }, { ptr, i64 } { ptr @tn.str.64, i64 6 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 7 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 4 }, { ptr, i64 } { ptr @tn.str.70, i64 16 }, { ptr, i64 } { ptr @tn.str.71, i64 10 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 13 }, { ptr, i64 } { ptr @tn.str.74, i64 13 }, { ptr, i64 } { ptr @tn.str.75, i64 16 }, { ptr, i64 } { ptr @tn.str.76, i64 13 }, { ptr, i64 } { ptr @tn.str.77, i64 9 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 12 }, { ptr, i64 } { ptr @tn.str.80, i64 7 }, { ptr, i64 } { ptr @tn.str.81, i64 6 }, { ptr, i64 } { ptr @tn.str.82, i64 10 }, { ptr, i64 } { ptr @tn.str.83, i64 19 }, { ptr, i64 } { ptr @tn.str.84, i64 10 }, { ptr, i64 } { ptr @tn.str.85, i64 13 }, { ptr, i64 } { ptr @tn.str.86, i64 5 }, { ptr, i64 } { ptr @tn.str.87, i64 7 }, { ptr, i64 } { ptr @tn.str.88, i64 8 }, { ptr, i64 } { ptr @tn.str.89, i64 5 }, { ptr, i64 } { ptr @tn.str.90, i64 8 }, { ptr, i64 } { ptr @tn.str.91, i64 5 }, { ptr, i64 } { ptr @tn.str.92, i64 7 }, { ptr, i64 } { ptr @tn.str.93, i64 4 }, { ptr, i64 } { ptr @tn.str.94, i64 6 }, { ptr, i64 } { ptr @tn.str.95, i64 8 }, { ptr, i64 } { ptr @tn.str.96, i64 8 }, { ptr, i64 } { ptr @tn.str.97, i64 15 }, { ptr, i64 } { ptr @tn.str.98, i64 16 }, { ptr, i64 } { ptr @tn.str.99, i64 5 }]
|
|
@str.100 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.101 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.102 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.103 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.104 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.105 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
|
@str.106 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.107 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.108 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
|
@str.109 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
|
@str.110 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
|
@str.111 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.112 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.113 = private unnamed_addr constant [5 x i8] c")); \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 [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
|
@str.120 = private unnamed_addr constant [6 x i8] c"SxBox\00", align 1
|
|
@str.121 = private unnamed_addr constant [9 x i8] c"setArea:\00", align 1
|
|
@str.122 = private unnamed_addr constant [31 x i8] c"FAIL: width/height round-trip\0A\00", align 1
|
|
@str.123 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.124 = private unnamed_addr constant [31 x i8] c"FAIL: width/height round-trip\0A\00", align 1
|
|
@str.125 = private unnamed_addr constant [31 x i8] c"FAIL: area expected 0, got {}\0A\00", align 1
|
|
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.127 = private unnamed_addr constant [31 x i8] c"FAIL: area expected 0, got {}\0A\00", align 1
|
|
@str.128 = private unnamed_addr constant [52 x i8] c"FAIL: setArea: should not be registered (readonly)\0A\00", align 1
|
|
@str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.130 = private unnamed_addr constant [52 x i8] c"FAIL: setArea: should not be registered (readonly)\0A\00", align 1
|
|
@str.131 = private unnamed_addr constant [29 x i8] c"property: w={} h={} area={}\0A\00", align 1
|
|
@str.132 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.133 = private unnamed_addr constant [29 x i8] c"property: w={} h={} area={}\0A\00", align 1
|
|
@str.134 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1
|
|
@str.135 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.136 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.137 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str = private constant [5 x i8] c"file\00"
|
|
@fld.str.138 = private constant [5 x i8] c"line\00"
|
|
@fld.str.139 = private constant [4 x i8] c"col\00"
|
|
@fld.str.140 = private constant [5 x i8] c"func\00"
|
|
@field_names = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str, i64 4 }, { ptr, i64 } { ptr @fld.str.138, i64 4 }, { ptr, i64 } { ptr @fld.str.139, i64 3 }, { ptr, i64 } { ptr @fld.str.140, i64 4 }]
|
|
@str.141 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.142 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1
|
|
@str.143 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.144 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.145 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.146 = private constant [4 x i8] c"ctx\00"
|
|
@fld.str.147 = private constant [6 x i8] c"alloc\00"
|
|
@fld.str.148 = private constant [8 x i8] c"dealloc\00"
|
|
@field_names.149 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.146, i64 3 }, { ptr, i64 } { ptr @fld.str.147, i64 5 }, { ptr, i64 } { ptr @fld.str.148, i64 7 }]
|
|
@str.150 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.151 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1
|
|
@str.152 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.153 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.154 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@field_names.155 = private constant [0 x { ptr, i64 }] zeroinitializer
|
|
@str.156 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.157 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1
|
|
@str.158 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.159 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.160 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.161 = private constant [12 x i8] c"alloc_count\00"
|
|
@field_names.162 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.161, i64 11 }]
|
|
@str.163 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.164 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1
|
|
@str.165 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.166 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.167 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.168 = private constant [5 x i8] c"next\00"
|
|
@fld.str.169 = private constant [4 x i8] c"cap\00"
|
|
@field_names.170 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.168, i64 4 }, { ptr, i64 } { ptr @fld.str.169, i64 3 }]
|
|
@str.171 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.172 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1
|
|
@str.173 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.174 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.175 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.176 = private constant [6 x i8] c"first\00"
|
|
@fld.str.177 = private constant [10 x i8] c"end_index\00"
|
|
@fld.str.178 = private constant [7 x i8] c"parent\00"
|
|
@field_names.179 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.176, i64 5 }, { ptr, i64 } { ptr @fld.str.177, i64 9 }, { ptr, i64 } { ptr @fld.str.178, i64 6 }]
|
|
@str.180 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.181 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1
|
|
@str.182 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.183 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.184 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.185 = private constant [4 x i8] c"buf\00"
|
|
@fld.str.186 = private constant [4 x i8] c"len\00"
|
|
@fld.str.187 = private constant [4 x i8] c"pos\00"
|
|
@field_names.188 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.185, i64 3 }, { ptr, i64 } { ptr @fld.str.186, i64 3 }, { ptr, i64 } { ptr @fld.str.187, i64 3 }]
|
|
@str.189 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.190 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1
|
|
@str.191 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.192 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.193 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.194 = private constant [7 x i8] c"parent\00"
|
|
@fld.str.195 = private constant [12 x i8] c"alloc_count\00"
|
|
@fld.str.196 = private constant [14 x i8] c"dealloc_count\00"
|
|
@fld.str.197 = private constant [18 x i8] c"total_alloc_bytes\00"
|
|
@field_names.198 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.194, i64 6 }, { ptr, i64 } { ptr @fld.str.195, i64 11 }, { ptr, i64 } { ptr @fld.str.196, i64 13 }, { ptr, i64 } { ptr @fld.str.197, i64 17 }]
|
|
@str.199 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.200 = private unnamed_addr constant [8 x i8] c"Context\00", align 1
|
|
@str.201 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.202 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.203 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.204 = private constant [10 x i8] c"allocator\00"
|
|
@fld.str.205 = private constant [5 x i8] c"data\00"
|
|
@field_names.206 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.204, i64 9 }, { ptr, i64 } { ptr @fld.str.205, i64 4 }]
|
|
@str.207 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.208 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1
|
|
@str.209 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.210 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.211 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@field_names.212 = private constant [0 x { ptr, i64 }] zeroinitializer
|
|
@str.213 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.214 = private unnamed_addr constant [9 x i8] c"NSString\00", align 1
|
|
@str.215 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.216 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.217 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@field_names.218 = private constant [0 x { ptr, i64 }] zeroinitializer
|
|
@str.219 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.220 = private unnamed_addr constant [6 x i8] c"SxBox\00", align 1
|
|
@str.221 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.222 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.223 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@field_names.224 = private constant [0 x { ptr, i64 }] zeroinitializer
|
|
@str.225 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.226 = private unnamed_addr constant [13 x i8] c"__SxBoxState\00", align 1
|
|
@str.227 = private unnamed_addr constant [2 x i8] c"{\00", align 1
|
|
@str.228 = private unnamed_addr constant [2 x i8] c"}\00", align 1
|
|
@str.229 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@fld.str.230 = private constant [15 x i8] c"__sx_allocator\00"
|
|
@fld.str.231 = private constant [6 x i8] c"width\00"
|
|
@fld.str.232 = private constant [7 x i8] c"height\00"
|
|
@fld.str.233 = private constant [5 x i8] c"area\00"
|
|
@field_names.234 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.230, i64 14 }, { ptr, i64 } { ptr @fld.str.231, i64 5 }, { ptr, i64 } { ptr @fld.str.232, i64 6 }, { ptr, i64 } { ptr @fld.str.233, i64 4 }]
|
|
@str.235 = private unnamed_addr constant [3 x i8] c": \00", align 1
|
|
@str.236 = private unnamed_addr constant [2 x i8] c".\00", align 1
|
|
@fld.str.237 = private constant [6 x i8] c"macos\00"
|
|
@fld.str.238 = private constant [6 x i8] c"linux\00"
|
|
@fld.str.239 = private constant [8 x i8] c"windows\00"
|
|
@fld.str.240 = private constant [5 x i8] c"wasm\00"
|
|
@fld.str.241 = private constant [4 x i8] c"ios\00"
|
|
@fld.str.242 = private constant [8 x i8] c"android\00"
|
|
@fld.str.243 = private constant [8 x i8] c"unknown\00"
|
|
@field_names.244 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.237, i64 5 }, { ptr, i64 } { ptr @fld.str.238, i64 5 }, { ptr, i64 } { ptr @fld.str.239, i64 7 }, { ptr, i64 } { ptr @fld.str.240, i64 4 }, { ptr, i64 } { ptr @fld.str.241, i64 3 }, { ptr, i64 } { ptr @fld.str.242, i64 7 }, { ptr, i64 } { ptr @fld.str.243, i64 7 }]
|
|
@str.245 = private unnamed_addr constant [2 x i8] c"(\00", align 1
|
|
@str.246 = private unnamed_addr constant [2 x i8] c")\00", align 1
|
|
@str.247 = private unnamed_addr constant [2 x i8] c".\00", align 1
|
|
@fld.str.248 = private constant [8 x i8] c"aarch64\00"
|
|
@fld.str.249 = private constant [7 x i8] c"x86_64\00"
|
|
@fld.str.250 = private constant [7 x i8] c"wasm32\00"
|
|
@fld.str.251 = private constant [7 x i8] c"wasm64\00"
|
|
@fld.str.252 = private constant [8 x i8] c"unknown\00"
|
|
@field_names.253 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.248, i64 7 }, { ptr, i64 } { ptr @fld.str.249, i64 6 }, { ptr, i64 } { ptr @fld.str.250, i64 6 }, { ptr, i64 } { ptr @fld.str.251, i64 6 }, { ptr, i64 } { ptr @fld.str.252, i64 7 }]
|
|
@str.254 = private unnamed_addr constant [2 x i8] c"(\00", align 1
|
|
@str.255 = private unnamed_addr constant [2 x i8] c")\00", align 1
|
|
@str.256 = private unnamed_addr constant [2 x i8] c"[\00", align 1
|
|
@str.257 = private unnamed_addr constant [2 x i8] c"]\00", align 1
|
|
@str.258 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.259 = private unnamed_addr constant [2 x i8] c"[\00", align 1
|
|
@str.260 = private unnamed_addr constant [2 x i8] c"]\00", align 1
|
|
@str.261 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.262 = private unnamed_addr constant [2 x i8] c"[\00", align 1
|
|
@str.263 = private unnamed_addr constant [2 x i8] c"]\00", align 1
|
|
@str.264 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.265 = private unnamed_addr constant [2 x i8] c"[\00", align 1
|
|
@str.266 = private unnamed_addr constant [2 x i8] c"]\00", align 1
|
|
@str.267 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.268 = private unnamed_addr constant [2 x i8] c"[\00", align 1
|
|
@str.269 = private unnamed_addr constant [2 x i8] c"]\00", align 1
|
|
@str.270 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.271 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.272 = private unnamed_addr constant [6 x i8] c"*void\00", align 1
|
|
@str.273 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.274 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.275 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1
|
|
@str.276 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.277 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.278 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1
|
|
@str.279 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.280 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.281 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1
|
|
@str.282 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.283 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.284 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1
|
|
@str.285 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.286 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.287 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1
|
|
@str.288 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.289 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.290 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1
|
|
@str.291 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.292 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.293 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1
|
|
@str.294 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.295 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.296 = private unnamed_addr constant [10 x i8] c"*NSString\00", align 1
|
|
@str.297 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.298 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.299 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1
|
|
@str.300 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.301 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.302 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1
|
|
@str.303 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.304 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.305 = private unnamed_addr constant [7 x i8] c"**void\00", align 1
|
|
@str.306 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.307 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.308 = private unnamed_addr constant [7 x i8] c"*SxBox\00", align 1
|
|
@str.309 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.310 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.311 = private unnamed_addr constant [8 x i8] c"**SxBox\00", align 1
|
|
@str.312 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.313 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.314 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1
|
|
@str.315 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.316 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.317 = private unnamed_addr constant [8 x i8] c"*string\00", align 1
|
|
@str.318 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.319 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.320 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1
|
|
@str.321 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.322 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.323 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1
|
|
@str.324 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.325 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.326 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1
|
|
@str.327 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.328 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.329 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1
|
|
@str.330 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.331 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.332 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1
|
|
@str.333 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@str.334 = private unnamed_addr constant [5 x i8] c"null\00", align 1
|
|
@str.335 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1
|
|
@str.336 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1
|
|
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"init\00"
|
|
@OBJC_METH_VAR_NAME_.337 = private unnamed_addr constant [10 x i8] c"setWidth:\00"
|
|
@OBJC_METH_VAR_NAME_.338 = private unnamed_addr constant [11 x i8] c"setHeight:\00"
|
|
@OBJC_METH_VAR_NAME_.339 = private unnamed_addr constant [6 x i8] c"width\00"
|
|
@OBJC_METH_VAR_NAME_.340 = private unnamed_addr constant [7 x i8] c"height\00"
|
|
@OBJC_METH_VAR_NAME_.341 = private unnamed_addr constant [5 x i8] c"area\00"
|
|
@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_.342 = private unnamed_addr constant [6 x i8] c"SxBox\00"
|
|
@OBJC_METH_VAR_NAME_.343 = private unnamed_addr constant [6 x i8] c"width\00"
|
|
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"i@:\00"
|
|
@OBJC_METH_VAR_NAME_.344 = private unnamed_addr constant [10 x i8] c"setWidth:\00"
|
|
@OBJC_METH_VAR_TYPE_.345 = private unnamed_addr constant [5 x i8] c"v@:i\00"
|
|
@OBJC_METH_VAR_NAME_.346 = private unnamed_addr constant [7 x i8] c"height\00"
|
|
@OBJC_METH_VAR_TYPE_.347 = private unnamed_addr constant [4 x i8] c"i@:\00"
|
|
@OBJC_METH_VAR_NAME_.348 = private unnamed_addr constant [11 x i8] c"setHeight:\00"
|
|
@OBJC_METH_VAR_TYPE_.349 = private unnamed_addr constant [5 x i8] c"v@:i\00"
|
|
@OBJC_METH_VAR_NAME_.350 = private unnamed_addr constant [5 x i8] c"area\00"
|
|
@OBJC_METH_VAR_TYPE_.351 = private unnamed_addr constant [4 x i8] c"i@:\00"
|
|
@OBJC_METH_VAR_NAME_.352 = private unnamed_addr constant [8 x i8] c"dealloc\00"
|
|
@OBJC_METH_VAR_TYPE_.353 = private unnamed_addr constant [4 x i8] c"v@:\00"
|
|
@OBJC_METH_VAR_NAME_.354 = private unnamed_addr constant [6 x i8] c"alloc\00"
|
|
@OBJC_METH_VAR_TYPE_.355 = private unnamed_addr constant [4 x i8] c"@@:\00"
|
|
@OBJC_CLASS_NAME_.356 = private unnamed_addr constant [6 x i8] c"SxBox\00"
|
|
@llvm.global_ctors = appending global [2 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @__sx_objc_class_init, ptr null }]
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @out(ptr) #0
|
|
|
|
declare ptr @malloc(i64)
|
|
|
|
declare void @free(ptr)
|
|
|
|
declare ptr @memcpy(ptr, ptr, i64)
|
|
|
|
declare ptr @memset(ptr, i32, i64)
|
|
|
|
; Function Attrs: nounwind
|
|
define internal ptr @CAllocator.alloc(ptr %0, ptr %1, i64 %2) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %2, ptr %allocaN, align 8
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%call = call ptr @malloc(i64 %load)
|
|
ret ptr %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @CAllocator.dealloc(ptr %0, ptr %1, ptr %2) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca ptr, align 8
|
|
store ptr %2, ptr %allocaN, align 8
|
|
%load = load ptr, ptr %allocaN, align 8
|
|
call void @free(ptr %load)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @GPA.init(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @GPA.alloc(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @GPA.dealloc(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.add_chunk(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.init(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.reset(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.deinit(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @Arena.alloc(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.dealloc(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BufAlloc.init(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.reset(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BufAlloc.alloc(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.dealloc(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.init(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @TrackingAllocator.leak_count(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.report(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @TrackingAllocator.alloc(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.dealloc(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @cstring(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%add = add i64 %load, 1
|
|
%loadN = load { { ptr, ptr, ptr }, ptr }, ptr %0, align 8
|
|
%sg = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 1
|
|
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %add)
|
|
%allocaN = alloca ptr, align 8
|
|
store ptr %icall, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%2 = call ptr @memset(ptr %loadN, i32 0, i64 %addN)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } undef, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
%pti = ptrtoint ptr %loadN to i64
|
|
store i64 %pti, ptr %gep, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
|
store i64 %loadN, ptr %gepN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
%allocaN = alloca i1, align 1
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%icmp = icmp eq i64 %load, 0
|
|
br i1 %icmp, label %if.then.18, label %if.merge.19
|
|
|
|
if.then.18: ; preds = %entry
|
|
ret { ptr, i64 } { ptr @str, i64 1 }
|
|
|
|
if.merge.19: ; preds = %entry
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
store i1 %icmpN, ptr %allocaN, align 1
|
|
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
store i64 19, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %while.hdr.20
|
|
|
|
while.hdr.20: ; preds = %if.merge.24, %if.merge.19
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp ne i64 %loadN, 0
|
|
br i1 %icmpN, label %while.body.21, label %while.exit.22
|
|
|
|
while.body.21: ; preds = %while.hdr.20
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%srem = srem i64 %loadN, 10
|
|
store i64 %srem, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.23, label %if.merge.24
|
|
|
|
while.exit.22: ; preds = %while.hdr.20
|
|
%loadN = load i1, ptr %allocaN, align 1
|
|
br i1 %loadN, label %if.then.25, label %if.merge.26
|
|
|
|
if.then.23: ; preds = %while.body.21
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 0, %loadN
|
|
store i64 %sub, ptr %allocaN, align 8
|
|
br label %if.merge.24
|
|
|
|
if.merge.24: ; preds = %if.then.23, %while.body.21
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 48
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%trunc = trunc i64 %add to i8
|
|
store i8 %trunc, ptr %igp.ptr, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sdiv = sdiv i64 %loadN, 10
|
|
store i64 %sdiv, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, 1
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
br label %while.hdr.20
|
|
|
|
if.then.25: ; preds = %while.exit.22
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
|
store i8 45, ptr %igp.ptr25, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, 1
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
br label %if.merge.26
|
|
|
|
if.merge.26: ; preds = %if.then.25, %while.exit.22
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 19, %loadN
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
|
ret { ptr, i64 } %callN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
%allocaN = alloca [4 x i64], align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%ig.tmp = alloca [4 x i64], align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%ig.tmp15 = alloca [4 x i64], align 8
|
|
%ig.tmp20 = alloca [4 x i64], align 8
|
|
%ig.tmp26 = alloca [4 x i64], align 8
|
|
%ig.tmp36 = alloca [4 x i64], align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%icmp = icmp eq i64 %load, 0
|
|
br i1 %icmp, label %if.then.64, label %if.merge.65
|
|
|
|
if.then.64: ; preds = %entry
|
|
ret { ptr, i64 } { ptr @str.1, i64 1 }
|
|
|
|
if.merge.65: ; preds = %entry
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
|
store [4 x i64] %call, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
store i64 19, ptr %allocaN, align 8
|
|
br label %while.hdr.74
|
|
|
|
while.hdr.74: ; preds = %while.exit.85, %if.merge.65
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
|
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
|
%ig.val = load i64, ptr %ig.ptr, align 8
|
|
%icmpN = icmp ne i64 %ig.val, 0
|
|
br i1 %icmpN, label %or.merge.78, label %or.rhs.77
|
|
|
|
while.body.75: ; preds = %or.merge.82
|
|
store i64 0, ptr %allocaN, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.83
|
|
|
|
while.exit.76: ; preds = %or.merge.82
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 19, %loadN
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %add, i64 %sub)
|
|
ret { ptr, i64 } %callN
|
|
|
|
or.rhs.77: ; preds = %while.hdr.74
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
|
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
|
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
|
%icmpN = icmp ne i64 %ig.val17, 0
|
|
br label %or.merge.78
|
|
|
|
or.merge.78: ; preds = %or.rhs.77, %while.hdr.74
|
|
%bp = phi i1 [ true, %while.hdr.74 ], [ %icmpN, %or.rhs.77 ]
|
|
br i1 %bp, label %or.merge.80, label %or.rhs.79
|
|
|
|
or.rhs.79: ; preds = %or.merge.78
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
|
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
|
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
|
%icmpN = icmp ne i64 %ig.val22, 0
|
|
br label %or.merge.80
|
|
|
|
or.merge.80: ; preds = %or.rhs.79, %or.merge.78
|
|
%bpN = phi i1 [ true, %or.merge.78 ], [ %icmpN, %or.rhs.79 ]
|
|
br i1 %bpN, label %or.merge.82, label %or.rhs.81
|
|
|
|
or.rhs.81: ; preds = %or.merge.80
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
|
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
|
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
|
%icmpN = icmp ne i64 %ig.val28, 0
|
|
br label %or.merge.82
|
|
|
|
or.merge.82: ; preds = %or.rhs.81, %or.merge.80
|
|
%bpN = phi i1 [ true, %or.merge.80 ], [ %icmpN, %or.rhs.81 ]
|
|
br i1 %bpN, label %while.body.75, label %while.exit.76
|
|
|
|
while.hdr.83: ; preds = %while.body.84, %while.body.75
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 4
|
|
br i1 %icmpN, label %while.body.84, label %while.exit.85
|
|
|
|
while.body.84: ; preds = %while.hdr.83
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%mul = mul i64 %loadN, 65536
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
|
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
|
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
|
%addN = add i64 %mul, %ig.val38
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sdiv = sdiv i64 %loadN, 10
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
|
store i64 %sdiv, ptr %igp.ptr, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%srem = srem i64 %loadN, 10
|
|
store i64 %srem, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %while.hdr.83
|
|
|
|
while.exit.85: ; preds = %while.hdr.83
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 48
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%trunc = trunc i64 %addN to i8
|
|
store i8 %trunc, ptr %igp.ptr50, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, 1
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
br label %while.hdr.74
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @bool_to_string(ptr %0, i1 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i1, align 1
|
|
store i1 %1, ptr %alloca, align 1
|
|
%load = load i1, ptr %alloca, align 1
|
|
br i1 %load, label %if.then.86, label %if.else.87
|
|
|
|
if.then.86: ; preds = %entry
|
|
br label %if.merge.88
|
|
|
|
if.else.87: ; preds = %entry
|
|
br label %if.merge.88
|
|
|
|
if.merge.88: ; preds = %if.else.87, %if.then.86
|
|
%bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.86 ], [ { ptr @str.3, i64 5 }, %if.else.87 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
|
entry:
|
|
%alloca = alloca double, align 8
|
|
%allocaN = alloca double, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store double %1, ptr %alloca, align 8
|
|
%load = load double, ptr %alloca, align 8
|
|
%fcmp = fcmp olt double %load, 0.000000e+00
|
|
%allocaN = alloca i1, align 1
|
|
store i1 %fcmp, ptr %allocaN, align 1
|
|
%loadN = load i1, ptr %allocaN, align 1
|
|
br i1 %loadN, label %if.then.92, label %if.else.93
|
|
|
|
if.then.92: ; preds = %entry
|
|
%loadN = load double, ptr %alloca, align 8
|
|
%fsub = fsub double 0.000000e+00, %loadN
|
|
br label %if.merge.94
|
|
|
|
if.else.93: ; preds = %entry
|
|
%loadN = load double, ptr %alloca, align 8
|
|
br label %if.merge.94
|
|
|
|
if.merge.94: ; preds = %if.else.93, %if.then.92
|
|
%bp = phi double [ %fsub, %if.then.92 ], [ %loadN, %if.else.93 ]
|
|
store double %bp, ptr %allocaN, align 8
|
|
%loadN = load double, ptr %allocaN, align 8
|
|
%fptosi = fptosi double %loadN to i64
|
|
store i64 %fptosi, ptr %allocaN, align 8
|
|
%loadN = load double, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sitofp = sitofp i64 %loadN to double
|
|
%fsubN = fsub double %loadN, %sitofp
|
|
%fmul = fmul double %fsubN, 1.000000e+06
|
|
%fptosiN = fptosi double %fmul to i64
|
|
store i64 %fptosiN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.95, label %if.merge.96
|
|
|
|
if.then.95: ; preds = %if.merge.94
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 0, %loadN
|
|
store i64 %sub, ptr %allocaN, align 8
|
|
br label %if.merge.96
|
|
|
|
if.merge.96: ; preds = %if.then.95, %if.merge.94
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
store i64 %len, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
store i64 %lenN, ptr %allocaN, align 8
|
|
%loadN = load i1, ptr %allocaN, align 1
|
|
br i1 %loadN, label %if.then.97, label %if.else.98
|
|
|
|
if.then.97: ; preds = %if.merge.96
|
|
br label %if.merge.99
|
|
|
|
if.else.98: ; preds = %if.merge.96
|
|
br label %if.merge.99
|
|
|
|
if.merge.99: ; preds = %if.else.98, %if.then.97
|
|
%bpN = phi i64 [ 1, %if.then.97 ], [ 0, %if.else.98 ]
|
|
store i64 %bpN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, %loadN
|
|
%addN = add i64 %add, 1
|
|
%addN = add i64 %addN, 6
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
%loadN = load i1, ptr %allocaN, align 1
|
|
br i1 %loadN, label %if.then.100, label %if.merge.101
|
|
|
|
if.then.100: ; preds = %if.merge.99
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 0
|
|
store i8 45, ptr %igp.ptr, align 1
|
|
store i64 1, ptr %allocaN, align 8
|
|
br label %if.merge.101
|
|
|
|
if.merge.101: ; preds = %if.then.100, %if.merge.99
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data41 = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr42 = getelementptr i8, ptr %igp.data41, i64 %loadN
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %igp.ptr42, ptr %dptr, i64 %loadN)
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, %loadN
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data51 = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr52 = getelementptr i8, ptr %igp.data51, i64 %loadN
|
|
store i8 46, ptr %igp.ptr52, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 6, %loadN
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data60 = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr61 = getelementptr i8, ptr %igp.data60, i64 %loadN
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%2 = call ptr @memset(ptr %igp.ptr61, i32 48, i64 %loadN)
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, %loadN
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data68 = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr69 = getelementptr i8, ptr %igp.data68, i64 %loadN
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptrN = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %igp.ptr69, ptr %dptrN, i64 %loadN)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %2, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %3, ptr %allocaN, align 8
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %load, 3
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %add, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %while.hdr.253
|
|
|
|
while.hdr.253: ; preds = %if.merge.258, %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp sge i64 %loadN, %loadN
|
|
br i1 %icmp, label %while.body.254, label %while.exit.255
|
|
|
|
while.body.254: ; preds = %while.hdr.253
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%srem = srem i64 %loadN, 16
|
|
store i64 %srem, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 10
|
|
br i1 %icmpN, label %if.then.256, label %if.else.257
|
|
|
|
while.exit.255: ; preds = %while.hdr.253
|
|
ret void
|
|
|
|
if.then.256: ; preds = %while.body.254
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 48
|
|
br label %if.merge.258
|
|
|
|
if.else.257: ; preds = %while.body.254
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 %loadN, 10
|
|
%addN = add i64 %sub, 97
|
|
br label %if.merge.258
|
|
|
|
if.merge.258: ; preds = %if.else.257, %if.then.256
|
|
%bp = phi i64 [ %addN, %if.then.256 ], [ %addN, %if.else.257 ]
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%trunc = trunc i64 %bp to i8
|
|
store i8 %trunc, ptr %igp.ptr, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sdiv = sdiv i64 %loadN, 16
|
|
store i64 %sdiv, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, 1
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
br label %while.hdr.253
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca [4 x i64], align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%srem = srem i64 %load, 65536
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %srem, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.66, label %if.merge.67
|
|
|
|
if.then.66: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 65536
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %if.merge.67
|
|
|
|
if.merge.67: ; preds = %if.then.66, %entry
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 %loadN, %loadN
|
|
%sdiv = sdiv i64 %sub, 65536
|
|
store i64 %sdiv, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sremN = srem i64 %loadN, 65536
|
|
store i64 %sremN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.68, label %if.merge.69
|
|
|
|
if.then.68: ; preds = %if.merge.67
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 65536
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.69
|
|
|
|
if.merge.69: ; preds = %if.then.68, %if.merge.67
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, %loadN
|
|
%sdivN = sdiv i64 %subN, 65536
|
|
store i64 %sdivN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sremN = srem i64 %loadN, 65536
|
|
store i64 %sremN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.70, label %if.merge.71
|
|
|
|
if.then.70: ; preds = %if.merge.69
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 65536
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.71
|
|
|
|
if.merge.71: ; preds = %if.then.70, %if.merge.69
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, %loadN
|
|
%sdivN = sdiv i64 %subN, 65536
|
|
store i64 %sdivN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sremN = srem i64 %loadN, 65536
|
|
store i64 %sremN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.72, label %if.merge.73
|
|
|
|
if.then.72: ; preds = %if.merge.71
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 65536
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.73
|
|
|
|
if.merge.73: ; preds = %if.then.72, %if.merge.71
|
|
store [4 x i64] undef, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
|
store i64 %loadN, ptr %igp.ptr, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%igp.ptr41 = getelementptr i64, ptr %allocaN, i64 1
|
|
store i64 %loadN, ptr %igp.ptr41, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%igp.ptr43 = getelementptr i64, ptr %allocaN, i64 2
|
|
store i64 %loadN, ptr %igp.ptr43, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%igp.ptr45 = getelementptr i64, ptr %allocaN, i64 3
|
|
store i64 %loadN, ptr %igp.ptr45, align 8
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
ret [4 x i64] %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
%allocaN = alloca [4 x i64], align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%ig.tmp = alloca [4 x i64], align 8
|
|
%ig.tmp9 = alloca [4 x i64], align 8
|
|
%ig.tmp14 = alloca [4 x i64], align 8
|
|
%ig.tmp19 = alloca [4 x i64], align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%icmp = icmp eq i64 %load, 0
|
|
br i1 %icmp, label %if.then.251, label %if.merge.252
|
|
|
|
if.then.251: ; preds = %entry
|
|
ret { ptr, i64 } { ptr @str.4, i64 1 }
|
|
|
|
if.merge.252: ; preds = %entry
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
|
store [4 x i64] %call, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
|
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
|
%ig.val = load i64, ptr %ig.ptr, align 8
|
|
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
|
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
|
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
|
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
|
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
|
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
|
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [4 x i64], ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
|
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
|
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
|
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.259
|
|
|
|
while.hdr.259: ; preds = %if.merge.263, %if.merge.252
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 15
|
|
br i1 %icmpN, label %while.body.260, label %while.exit.261
|
|
|
|
while.body.260: ; preds = %while.hdr.259
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
|
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
|
%cmp.ext = zext i8 %ig.val28 to i64
|
|
%icmpN = icmp ne i64 %cmp.ext, 48
|
|
br i1 %icmpN, label %if.then.262, label %if.merge.263
|
|
|
|
while.exit.261: ; preds = %if.then.262, %while.hdr.259
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 16, %loadN
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %sub)
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.262: ; preds = %while.body.260
|
|
br label %while.exit.261
|
|
|
|
if.merge.263: ; preds = %while.body.260
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.259
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @concat(ptr %0, { ptr, i64 } %1, { ptr, i64 } %2) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %2, ptr %allocaN, align 8
|
|
%load = load { ptr, i64 }, ptr %alloca, align 8
|
|
%len = extractvalue { ptr, i64 } %load, 1
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %len, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %lenN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, %loadN
|
|
%call = call { ptr, i64 } @cstring(ptr %0, i64 %add)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%dptrN = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %dptr, ptr %dptrN, i64 %loadN)
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptrN = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %igp.ptr, ptr %dptrN, i64 %loadN)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @substr(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %2, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %3, ptr %allocaN, align 8
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @cstring(ptr %0, i64 %load)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %dptr, ptr %igp.ptr, i64 %loadN)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @xml_escape(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @path_join(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { i64, i64 }, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca double, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { i64, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
|
%load = load { i64, i64 }, ptr %alloca, align 8
|
|
%sg = extractvalue { i64, i64 } %load, 0
|
|
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %sg, 1
|
|
%allocaN = alloca { i64, i64 }, align 8
|
|
store { i64, i64 } %ba.val, ptr %allocaN, align 8
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%ua.raw = extractvalue { i64, i64 } %loadN, 1
|
|
switch i64 %ua.raw, label %match.unr.60 [
|
|
i64 17, label %match.arm.46
|
|
i64 2, label %match.arm.47
|
|
i64 3, label %match.arm.47
|
|
i64 4, label %match.arm.47
|
|
i64 5, label %match.arm.47
|
|
i64 6, label %match.arm.47
|
|
i64 7, label %match.arm.47
|
|
i64 8, label %match.arm.47
|
|
i64 9, label %match.arm.47
|
|
i64 16, label %match.arm.47
|
|
i64 15, label %match.arm.47
|
|
i64 12, label %match.arm.48
|
|
i64 1, label %match.arm.49
|
|
i64 10, label %match.arm.50
|
|
i64 11, label %match.arm.50
|
|
i64 19, label %match.arm.51
|
|
i64 20, label %match.arm.51
|
|
i64 21, label %match.arm.51
|
|
i64 23, label %match.arm.51
|
|
i64 25, label %match.arm.51
|
|
i64 27, label %match.arm.51
|
|
i64 30, label %match.arm.51
|
|
i64 32, label %match.arm.51
|
|
i64 34, label %match.arm.51
|
|
i64 39, label %match.arm.51
|
|
i64 41, label %match.arm.51
|
|
i64 47, label %match.arm.51
|
|
i64 49, label %match.arm.51
|
|
i64 37, label %match.arm.52
|
|
i64 38, label %match.arm.52
|
|
i64 35, label %match.arm.55
|
|
i64 58, label %match.arm.55
|
|
i64 60, label %match.arm.55
|
|
i64 36, label %match.arm.56
|
|
i64 53, label %match.arm.56
|
|
i64 18, label %match.arm.57
|
|
i64 22, label %match.arm.57
|
|
i64 24, label %match.arm.57
|
|
i64 26, label %match.arm.57
|
|
i64 28, label %match.arm.57
|
|
i64 29, label %match.arm.57
|
|
i64 31, label %match.arm.57
|
|
i64 33, label %match.arm.57
|
|
i64 42, label %match.arm.57
|
|
i64 44, label %match.arm.57
|
|
i64 45, label %match.arm.57
|
|
i64 46, label %match.arm.57
|
|
i64 48, label %match.arm.57
|
|
i64 50, label %match.arm.57
|
|
i64 51, label %match.arm.57
|
|
i64 52, label %match.arm.57
|
|
i64 54, label %match.arm.57
|
|
i64 55, label %match.arm.57
|
|
i64 56, label %match.arm.57
|
|
i64 57, label %match.arm.57
|
|
i64 59, label %match.arm.57
|
|
i64 61, label %match.arm.57
|
|
i64 13, label %match.arm.59
|
|
]
|
|
|
|
match.merge.45: ; preds = %dispatch.merge.224, %dispatch.merge.210, %dispatch.merge.190, %dispatch.merge.182, %dispatch.merge.102, %float.merge.91, %if.merge.63, %match.unr.60, %match.arm.59, %match.arm.49, %match.arm.48, %match.arm.46
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
|
|
match.arm.46: ; preds = %entry
|
|
store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
match.arm.47: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%refl.tag = extractvalue { i64, i64 } %loadN, 0
|
|
%refl.val = extractvalue { i64, i64 } %loadN, 1
|
|
%refl.istype = icmp eq i64 %refl.tag, 13
|
|
%refl.tid = select i1 %refl.istype, i64 %refl.val, i64 %refl.tag
|
|
%tiu.gep = getelementptr inbounds [94 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %refl.tid
|
|
%tiu.load = load i1, ptr %tiu.gep, align 1
|
|
br i1 %tiu.load, label %if.then.61, label %if.else.62
|
|
|
|
match.arm.48: ; preds = %entry
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
|
%ua.load = load { ptr, i64 }, ptr %ua.ptr, align 8
|
|
store { ptr, i64 } %ua.load, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
store { ptr, i64 } %loadN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
match.arm.49: ; preds = %entry
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
%ua.raw11 = extractvalue { i64, i64 } %loadN, 1
|
|
%tr = trunc i64 %ua.raw11 to i1
|
|
%call = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr)
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
match.arm.50: ; preds = %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
%sgN = extractvalue { i64, i64 } %loadN, 0
|
|
%icmp = icmp eq i64 %sgN, 10
|
|
br i1 %icmp, label %fN.unbox.89, label %fN.unbox.90
|
|
|
|
match.arm.51: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
switch i64 %ua.raw16, label %dispatch.default.103 [
|
|
i64 19, label %dispatch.case.104
|
|
i64 20, label %dispatch.case.105
|
|
i64 21, label %dispatch.case.106
|
|
i64 23, label %dispatch.case.107
|
|
i64 25, label %dispatch.case.108
|
|
i64 27, label %dispatch.case.109
|
|
i64 30, label %dispatch.case.110
|
|
i64 32, label %dispatch.case.111
|
|
i64 34, label %dispatch.case.112
|
|
i64 39, label %dispatch.case.113
|
|
i64 41, label %dispatch.case.114
|
|
i64 47, label %dispatch.case.115
|
|
i64 49, label %dispatch.case.116
|
|
]
|
|
|
|
match.arm.52: ; preds = %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
switch i64 %ua.raw20, label %dispatch.default.183 [
|
|
i64 37, label %dispatch.case.184
|
|
i64 38, label %dispatch.case.185
|
|
]
|
|
|
|
match.arm.53: ; No predecessors!
|
|
unreachable
|
|
|
|
match.arm.54: ; No predecessors!
|
|
unreachable
|
|
|
|
match.arm.55: ; preds = %entry, %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
switch i64 %ua.raw24, label %dispatch.default.191 [
|
|
i64 35, label %dispatch.case.192
|
|
i64 58, label %dispatch.case.193
|
|
i64 60, label %dispatch.case.194
|
|
]
|
|
|
|
match.arm.56: ; preds = %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
switch i64 %ua.raw28, label %dispatch.default.211 [
|
|
i64 36, label %dispatch.case.212
|
|
i64 53, label %dispatch.case.213
|
|
]
|
|
|
|
match.arm.57: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
switch i64 %ua.raw32, label %dispatch.default.225 [
|
|
i64 18, label %dispatch.case.226
|
|
i64 22, label %dispatch.case.227
|
|
i64 24, label %dispatch.case.228
|
|
i64 26, label %dispatch.case.229
|
|
i64 28, label %dispatch.case.230
|
|
i64 29, label %dispatch.case.231
|
|
i64 31, label %dispatch.case.232
|
|
i64 33, label %dispatch.case.233
|
|
i64 42, label %dispatch.case.234
|
|
i64 44, label %dispatch.case.235
|
|
i64 45, label %dispatch.case.236
|
|
i64 46, label %dispatch.case.237
|
|
i64 48, label %dispatch.case.238
|
|
i64 50, label %dispatch.case.239
|
|
i64 51, label %dispatch.case.240
|
|
i64 52, label %dispatch.case.241
|
|
i64 54, label %dispatch.case.242
|
|
i64 55, label %dispatch.case.243
|
|
i64 56, label %dispatch.case.244
|
|
i64 57, label %dispatch.case.245
|
|
i64 59, label %dispatch.case.246
|
|
i64 61, label %dispatch.case.247
|
|
]
|
|
|
|
match.arm.58: ; No predecessors!
|
|
unreachable
|
|
|
|
match.arm.59: ; preds = %entry
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
%refl.tag36 = extractvalue { i64, i64 } %loadN, 0
|
|
%refl.val37 = extractvalue { i64, i64 } %loadN, 1
|
|
%refl.istype38 = icmp eq i64 %refl.tag36, 13
|
|
%refl.tid39 = select i1 %refl.istype38, i64 %refl.val37, i64 %refl.tag36
|
|
%tn.gep = getelementptr inbounds [94 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %refl.tid39
|
|
%tn.load = load { ptr, i64 }, ptr %tn.gep, align 8
|
|
store { ptr, i64 } %tn.load, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
match.unr.60: ; preds = %entry
|
|
br label %match.merge.45
|
|
|
|
if.then.61: ; preds = %match.arm.47
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
%ua.raw41 = extractvalue { i64, i64 } %loadN, 1
|
|
%callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw41)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.63
|
|
|
|
if.else.62: ; preds = %match.arm.47
|
|
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
|
%ua.raw44 = extractvalue { i64, i64 } %loadN, 1
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw44)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.63
|
|
|
|
if.merge.63: ; preds = %if.else.62, %if.then.61
|
|
br label %match.merge.45
|
|
|
|
f32.unbox.89: ; preds = %match.arm.50
|
|
%ua.raw46 = extractvalue { i64, i64 } %loadN, 1
|
|
%trN = trunc i64 %ua.raw46 to i32
|
|
%iNf = bitcast i32 %trN to float
|
|
%fpext = fpext float %iNf to double
|
|
store double %fpext, ptr %allocaN, align 8
|
|
br label %float.merge.91
|
|
|
|
f64.unbox.90: ; preds = %match.arm.50
|
|
%ua.raw47 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNd = bitcast i64 %ua.raw47 to double
|
|
store double %iNd, ptr %allocaN, align 8
|
|
br label %float.merge.91
|
|
|
|
float.merge.91: ; preds = %fN.unbox.90, %fN.unbox.89
|
|
%loadN = load double, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @float_to_string(ptr %0, double %loadN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
dispatch.merge.102: ; preds = %dispatch.case.116, %dispatch.case.115, %dispatch.case.114, %dispatch.case.113, %dispatch.case.112, %dispatch.case.111, %dispatch.case.110, %dispatch.case.109, %dispatch.case.108, %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.default.103
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
store { ptr, i64 } %loadN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
dispatch.default.103: ; preds = %match.arm.51
|
|
store { ptr, i64 } { ptr @str.100, i64 0 }, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.104: ; preds = %match.arm.51
|
|
%ua.raw51 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr52 = inttoptr i64 %ua.raw51 to ptr
|
|
%ua.load53 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr52, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load53)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.105: ; preds = %match.arm.51
|
|
%ua.raw55 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr56 = inttoptr i64 %ua.raw55 to ptr
|
|
%ua.load57 = load { ptr, ptr, ptr }, ptr %ua.ptr56, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load57)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.106: ; preds = %match.arm.51
|
|
%ua.raw59 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr60 = inttoptr i64 %ua.raw59 to ptr
|
|
%ua.load61 = load {}, ptr %ua.ptr60, align 1
|
|
%callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load61)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.107: ; preds = %match.arm.51
|
|
%ua.raw63 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr64 = inttoptr i64 %ua.raw63 to ptr
|
|
%ua.load65 = load { i64 }, ptr %ua.ptr64, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load65)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.108: ; preds = %match.arm.51
|
|
%ua.raw67 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr68 = inttoptr i64 %ua.raw67 to ptr
|
|
%ua.load69 = load { ptr, i64 }, ptr %ua.ptr68, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load69)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.109: ; preds = %match.arm.51
|
|
%ua.raw71 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr72 = inttoptr i64 %ua.raw71 to ptr
|
|
%ua.load73 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr72, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load73)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.110: ; preds = %match.arm.51
|
|
%ua.raw75 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr76 = inttoptr i64 %ua.raw75 to ptr
|
|
%ua.load77 = load { ptr, i64, i64 }, ptr %ua.ptr76, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load77)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.111: ; preds = %match.arm.51
|
|
%ua.raw79 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr80 = inttoptr i64 %ua.raw79 to ptr
|
|
%ua.load81 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr80, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load81)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.112: ; preds = %match.arm.51
|
|
%ua.raw83 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr84 = inttoptr i64 %ua.raw83 to ptr
|
|
%ua.load85 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr84, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load85)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.113: ; preds = %match.arm.51
|
|
%ua.raw87 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr88 = inttoptr i64 %ua.raw87 to ptr
|
|
%ua.load89 = load {}, ptr %ua.ptr88, align 1
|
|
%callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load89)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.114: ; preds = %match.arm.51
|
|
%ua.raw91 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr92 = inttoptr i64 %ua.raw91 to ptr
|
|
%ua.load93 = load {}, ptr %ua.ptr92, align 1
|
|
%callN = call { ptr, i64 } @struct_to_string__NSString(ptr %0, {} %ua.load93)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.115: ; preds = %match.arm.51
|
|
%ua.raw95 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr96 = inttoptr i64 %ua.raw95 to ptr
|
|
%ua.load97 = load {}, ptr %ua.ptr96, align 1
|
|
%callN = call { ptr, i64 } @struct_to_string__SxBox(ptr %0, {} %ua.load97)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.case.116: ; preds = %match.arm.51
|
|
%ua.raw99 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr100 = inttoptr i64 %ua.raw99 to ptr
|
|
%ua.load101 = load { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %ua.ptr100, align 8
|
|
%callN = call { ptr, i64 } @struct_to_string____SxBoxState(ptr %0, { { ptr, ptr, ptr }, i32, i32, i32 } %ua.load101)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.102
|
|
|
|
dispatch.merge.182: ; preds = %dispatch.case.185, %dispatch.case.184, %dispatch.default.183
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
store { ptr, i64 } %loadN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
dispatch.default.183: ; preds = %match.arm.52
|
|
store { ptr, i64 } { ptr @str.101, i64 0 }, ptr %allocaN, align 8
|
|
br label %dispatch.merge.182
|
|
|
|
dispatch.case.184: ; preds = %match.arm.52
|
|
%ua.raw104 = extractvalue { i64, i64 } %loadN, 1
|
|
%callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw104)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.182
|
|
|
|
dispatch.case.185: ; preds = %match.arm.52
|
|
%ua.raw106 = extractvalue { i64, i64 } %loadN, 1
|
|
%callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw106)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.182
|
|
|
|
dispatch.merge.190: ; preds = %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.default.191
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
store { ptr, i64 } %loadN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
dispatch.default.191: ; preds = %match.arm.55
|
|
store { ptr, i64 } { ptr @str.102, i64 0 }, ptr %allocaN, align 8
|
|
br label %dispatch.merge.190
|
|
|
|
dispatch.case.192: ; preds = %match.arm.55
|
|
%ua.raw109 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr110 = inttoptr i64 %ua.raw109 to ptr
|
|
%ua.load111 = load [4 x i64], ptr %ua.ptr110, align 8
|
|
%callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load111)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.190
|
|
|
|
dispatch.case.193: ; preds = %match.arm.55
|
|
%ua.raw113 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr114 = inttoptr i64 %ua.raw113 to ptr
|
|
%ua.load115 = load [1 x { i64, i64 }], ptr %ua.ptr114, align 8
|
|
%callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load115)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.190
|
|
|
|
dispatch.case.194: ; preds = %match.arm.55
|
|
%ua.raw117 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr118 = inttoptr i64 %ua.raw117 to ptr
|
|
%ua.load119 = load [3 x { i64, i64 }], ptr %ua.ptr118, align 8
|
|
%callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load119)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.190
|
|
|
|
dispatch.merge.210: ; preds = %dispatch.case.213, %dispatch.case.212, %dispatch.default.211
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
store { ptr, i64 } %loadN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
dispatch.default.211: ; preds = %match.arm.56
|
|
store { ptr, i64 } { ptr @str.103, i64 0 }, ptr %allocaN, align 8
|
|
br label %dispatch.merge.210
|
|
|
|
dispatch.case.212: ; preds = %match.arm.56
|
|
%ua.raw122 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr123 = inttoptr i64 %ua.raw122 to ptr
|
|
%ua.load124 = load { ptr, i64 }, ptr %ua.ptr123, align 8
|
|
%callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load124)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.210
|
|
|
|
dispatch.case.213: ; preds = %match.arm.56
|
|
%ua.raw126 = extractvalue { i64, i64 } %loadN, 1
|
|
%ua.ptr127 = inttoptr i64 %ua.raw126 to ptr
|
|
%ua.load128 = load { ptr, i64 }, ptr %ua.ptr127, align 8
|
|
%callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load128)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.210
|
|
|
|
dispatch.merge.224: ; preds = %dispatch.case.247, %dispatch.case.246, %dispatch.case.245, %dispatch.case.244, %dispatch.case.243, %dispatch.case.242, %dispatch.case.241, %dispatch.case.240, %dispatch.case.239, %dispatch.case.238, %dispatch.case.237, %dispatch.case.236, %dispatch.case.235, %dispatch.case.234, %dispatch.case.233, %dispatch.case.232, %dispatch.case.231, %dispatch.case.230, %dispatch.case.229, %dispatch.case.228, %dispatch.case.227, %dispatch.case.226, %dispatch.default.225
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
store { ptr, i64 } %loadN, ptr %allocaN, align 8
|
|
br label %match.merge.45
|
|
|
|
dispatch.default.225: ; preds = %match.arm.57
|
|
store { ptr, i64 } { ptr @str.104, i64 0 }, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.226: ; preds = %match.arm.57
|
|
%ua.raw131 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp = inttoptr i64 %ua.raw131 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_void(ptr %0, ptr %iNp)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.227: ; preds = %match.arm.57
|
|
%ua.raw133 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp134 = inttoptr i64 %ua.raw133 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp134)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.228: ; preds = %match.arm.57
|
|
%ua.raw136 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp137 = inttoptr i64 %ua.raw136 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp137)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.229: ; preds = %match.arm.57
|
|
%ua.raw139 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp140 = inttoptr i64 %ua.raw139 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp140)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.230: ; preds = %match.arm.57
|
|
%ua.raw142 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp143 = inttoptr i64 %ua.raw142 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp143)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.231: ; preds = %match.arm.57
|
|
%ua.raw145 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp146 = inttoptr i64 %ua.raw145 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp146)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.232: ; preds = %match.arm.57
|
|
%ua.raw148 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp149 = inttoptr i64 %ua.raw148 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp149)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.233: ; preds = %match.arm.57
|
|
%ua.raw151 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp152 = inttoptr i64 %ua.raw151 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp152)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.234: ; preds = %match.arm.57
|
|
%ua.raw154 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp155 = inttoptr i64 %ua.raw154 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_NSString(ptr %0, ptr %iNp155)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.235: ; preds = %match.arm.57
|
|
%ua.raw157 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp158 = inttoptr i64 %ua.raw157 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp158)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.236: ; preds = %match.arm.57
|
|
%ua.raw160 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp161 = inttoptr i64 %ua.raw160 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp161)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.237: ; preds = %match.arm.57
|
|
%ua.raw163 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp164 = inttoptr i64 %ua.raw163 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp164)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.238: ; preds = %match.arm.57
|
|
%ua.raw166 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp167 = inttoptr i64 %ua.raw166 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_SxBox(ptr %0, ptr %iNp167)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.239: ; preds = %match.arm.57
|
|
%ua.raw169 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp170 = inttoptr i64 %ua.raw169 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_SxBox(ptr %0, ptr %iNp170)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.240: ; preds = %match.arm.57
|
|
%ua.raw172 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp173 = inttoptr i64 %ua.raw172 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp173)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.241: ; preds = %match.arm.57
|
|
%ua.raw175 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp176 = inttoptr i64 %ua.raw175 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp176)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.242: ; preds = %match.arm.57
|
|
%ua.raw178 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp179 = inttoptr i64 %ua.raw178 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp179)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.243: ; preds = %match.arm.57
|
|
%ua.raw181 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp182 = inttoptr i64 %ua.raw181 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp182)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.244: ; preds = %match.arm.57
|
|
%ua.raw184 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp185 = inttoptr i64 %ua.raw184 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp185)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.245: ; preds = %match.arm.57
|
|
%ua.raw187 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp188 = inttoptr i64 %ua.raw187 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp188)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.246: ; preds = %match.arm.57
|
|
%ua.raw190 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp191 = inttoptr i64 %ua.raw190 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp191)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
|
|
dispatch.case.247: ; preds = %match.arm.57
|
|
%ua.raw193 = extractvalue { i64, i64 } %loadN, 1
|
|
%iNp194 = inttoptr i64 %ua.raw193 to ptr
|
|
%callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp194)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %dispatch.merge.224
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @build_format(ptr %0, { ptr, i64 } %1) #0 {
|
|
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.105, i64 14 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.4
|
|
|
|
while.hdr.4: ; preds = %if.merge.9, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmp = icmp slt i64 %load, %len
|
|
br i1 %icmp, label %while.body.5, label %while.exit.6
|
|
|
|
while.body.5: ; preds = %while.hdr.4
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
|
%ig.val = load i8, ptr %ig.ptr, align 1
|
|
%cmp.ext = zext i8 %ig.val to i64
|
|
%icmpN = icmp eq i64 %cmp.ext, 123
|
|
br i1 %icmpN, label %if.then.7, label %if.else.8
|
|
|
|
while.exit.6: ; preds = %while.hdr.4
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmpN = icmp slt i64 %loadN, %lenN
|
|
br i1 %icmpN, label %if.then.39, label %if.merge.40
|
|
|
|
if.then.7: ; preds = %while.body.5
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmpN = icmp slt i64 %add, %lenN
|
|
br i1 %icmpN, label %if.then.10, label %if.else.11
|
|
|
|
if.else.8: ; preds = %while.body.5
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data19 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr20 = getelementptr i8, ptr %ig.data19, i64 %loadN
|
|
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
|
%cmp.ext22 = zext i8 %ig.val21 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext22, 125
|
|
br i1 %icmpN, label %if.then.30, label %if.else.31
|
|
|
|
if.merge.9: ; preds = %if.merge.32, %if.merge.12
|
|
br label %while.hdr.4
|
|
|
|
if.then.10: ; preds = %if.then.7
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%ig.data27 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr28 = getelementptr i8, ptr %ig.data27, i64 %addN
|
|
%ig.val29 = load i8, ptr %ig.ptr28, align 1
|
|
%cmp.ext30 = zext i8 %ig.val29 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext30, 125
|
|
br i1 %icmpN, label %if.then.13, label %if.else.14
|
|
|
|
if.else.11: ; preds = %if.then.7
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.12
|
|
|
|
if.merge.12: ; preds = %if.merge.15, %if.else.11
|
|
br label %if.merge.9
|
|
|
|
if.then.13: ; preds = %if.then.10
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, %loadN
|
|
br i1 %icmpN, label %if.then.16, label %if.merge.17
|
|
|
|
if.else.14: ; preds = %if.then.10
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%ig.data40 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr41 = getelementptr i8, ptr %ig.data40, i64 %addN
|
|
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
|
%cmp.ext43 = zext i8 %ig.val42 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext43, 123
|
|
br i1 %icmpN, label %if.then.27, label %if.else.28
|
|
|
|
if.merge.15: ; preds = %if.merge.29, %if.merge.17
|
|
br label %if.merge.12
|
|
|
|
if.then.16: ; preds = %if.then.13
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, 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
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%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.107, 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
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 %loadN, %loadN
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %sub)
|
|
%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.108, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.17
|
|
|
|
if.merge.17: ; preds = %if.then.16, %if.then.13
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, 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
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%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.110, i64 5 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 2
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %if.merge.15
|
|
|
|
if.then.27: ; preds = %if.else.14
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, 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
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%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.112, 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
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, %loadN
|
|
%addN = add i64 %subN, 1
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %addN)
|
|
%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.113, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 2
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %if.merge.29
|
|
|
|
if.else.28: ; preds = %if.else.14
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.29
|
|
|
|
if.merge.29: ; preds = %if.else.28, %if.then.27
|
|
br label %if.merge.15
|
|
|
|
if.then.30: ; preds = %if.else.8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmpN = icmp slt i64 %addN, %lenN
|
|
br i1 %icmpN, label %if.then.33, label %if.else.34
|
|
|
|
if.else.31: ; preds = %if.else.8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.32
|
|
|
|
if.merge.32: ; preds = %if.merge.35, %if.else.31
|
|
br label %if.merge.9
|
|
|
|
if.then.33: ; preds = %if.then.30
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%ig.data104 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr105 = getelementptr i8, ptr %ig.data104, i64 %addN
|
|
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
|
%cmp.ext107 = zext i8 %ig.val106 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext107, 125
|
|
br i1 %icmpN, label %if.then.36, label %if.else.37
|
|
|
|
if.else.34: ; preds = %if.then.30
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.35
|
|
|
|
if.merge.35: ; preds = %if.merge.38, %if.else.34
|
|
br label %if.merge.32
|
|
|
|
if.then.36: ; preds = %if.then.33
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, 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
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%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 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, %loadN
|
|
%addN = add i64 %subN, 1
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %addN)
|
|
%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.116, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 2
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %if.merge.38
|
|
|
|
if.else.37: ; preds = %if.then.33
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.38
|
|
|
|
if.merge.38: ; preds = %if.else.37, %if.then.36
|
|
br label %if.merge.35
|
|
|
|
if.then.39: ; preds = %while.exit.6
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, 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
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%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.118, 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
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %lenN, %loadN
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %subN)
|
|
%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 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.40
|
|
|
|
if.merge.40: ; preds = %if.then.39, %while.exit.6
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_framework(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_output_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.asset_dir_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.binary_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.bundle_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.bundle_id(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.codesign_identity(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.provisioning_profile(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.target_triple(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_macos(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios_device(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios_simulator(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_android(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.framework_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.framework_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.framework_path_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.manifest_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.keystore_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.jni_main_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @build_options() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @objc_getClass(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @objc_lookUpClass(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @sel_registerName(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @class_createInstance(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @object_getClass(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @object_getIvar(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @object_setIvar(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @objc_msgSend(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @objc_allocateClassPair(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @class_addMethod(ptr, ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @class_addProtocol(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @objc_getProtocol(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @objc_registerClassPair(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @NSLog(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @objc_autoreleasePoolPush() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @objc_autoreleasePoolPop(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @autoreleasepool(ptr, [2 x i64]) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @class_getInstanceMethod(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define i32 @main() #0 {
|
|
entry:
|
|
call void @__sx_objc_selector_init()
|
|
call void @__sx_objc_defined_class_init()
|
|
call void @__sx_objc_class_init()
|
|
%allocaN = alloca i32, align 4
|
|
%allocaN = alloca ptr, align 8
|
|
%allocaN = alloca ptr, align 8
|
|
%allocaN = alloca ptr, align 8
|
|
%load = load ptr, ptr @OBJC_CLASSLIST_REFERENCES_SxBox, align 8
|
|
%call = call ptr @class_createInstance(ptr %load, i64 0)
|
|
%loadN = load { { ptr, ptr, ptr }, ptr }, ptr @__sx_default_context, align 8
|
|
%sg = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 1
|
|
%icall = call ptr %sgN(ptr @__sx_default_context, ptr %sgN, i64 40)
|
|
%callN = call ptr @memset(ptr %icall, i32 0, i64 40)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %icall, i32 0, i32 0
|
|
store { ptr, ptr, ptr } %sg, ptr %gep, align 8
|
|
%loadN = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
call void @object_setIvar(ptr %call, ptr %loadN, ptr %icall)
|
|
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_init, align 8
|
|
%objc.msg = call ptr @objc_msgSend(ptr %call, ptr %loadN)
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %objc.msg, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_setWidth_, align 8
|
|
call void @objc_msgSend(ptr %loadN, ptr %loadN, i32 10)
|
|
%loadN = load ptr, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_setHeight_, align 8
|
|
call void @objc_msgSend(ptr %loadN, ptr %loadN, i32 7)
|
|
%loadN = load ptr, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_width, align 8
|
|
%objc.msg13 = call i32 @objc_msgSend(ptr %loadN, ptr %loadN)
|
|
%allocaN = alloca i32, align 4
|
|
store i32 %objc.msg13, ptr %allocaN, align 4
|
|
%loadN = load ptr, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_height, align 8
|
|
%objc.msg17 = call i32 @objc_msgSend(ptr %loadN, ptr %loadN)
|
|
%allocaN = alloca i32, align 4
|
|
store i32 %objc.msg17, ptr %allocaN, align 4
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%cmp.ext = sext i32 %loadN to i64
|
|
%icmp = icmp ne i64 %cmp.ext, 10
|
|
br i1 %icmp, label %or.merge.1, label %or.rhs.0
|
|
|
|
or.rhs.0: ; preds = %entry
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%cmp.ext21 = sext i32 %loadN to i64
|
|
%icmpN = icmp ne i64 %cmp.ext21, 7
|
|
br label %or.merge.1
|
|
|
|
or.merge.1: ; preds = %or.rhs.0, %entry
|
|
%bp = phi i1 [ true, %entry ], [ %icmpN, %or.rhs.0 ]
|
|
br i1 %bp, label %if.then.2, label %if.merge.3
|
|
|
|
if.then.2: ; preds = %or.merge.1
|
|
call void @print__ct_s8b0209b1c8e86f29__pack(ptr @__sx_default_context)
|
|
ret i32 1
|
|
|
|
if.merge.3: ; preds = %or.merge.1
|
|
%loadN = load ptr, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_area, align 8
|
|
%objc.msg25 = call i32 @objc_msgSend(ptr %loadN, ptr %loadN)
|
|
store i32 %objc.msg25, ptr %allocaN, align 4
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%cmp.ext28 = sext i32 %loadN to i64
|
|
%icmpN = icmp ne i64 %cmp.ext28, 0
|
|
br i1 %icmpN, label %if.then.41, label %if.merge.42
|
|
|
|
if.then.41: ; preds = %if.merge.3
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
call void @print__ct_s39d1c95f7ad02cfe__pack_s32(ptr @__sx_default_context, i32 %loadN)
|
|
ret i32 1
|
|
|
|
if.merge.42: ; preds = %if.merge.3
|
|
%callN = call ptr @objc_getClass(ptr @str.120)
|
|
store ptr %callN, ptr %allocaN, align 8
|
|
%callN = call ptr @sel_registerName(ptr @str.121)
|
|
store ptr %callN, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%callN = call ptr @class_getInstanceMethod(ptr %loadN, ptr %loadN)
|
|
store ptr %callN, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%icmpN = icmp ne ptr %loadN, null
|
|
br i1 %icmpN, label %if.then.43, label %if.merge.44
|
|
|
|
if.then.43: ; preds = %if.merge.42
|
|
call void @print__ct_sa76620ef481aaa22__pack(ptr @__sx_default_context)
|
|
ret i32 1
|
|
|
|
if.merge.44: ; preds = %if.merge.42
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
call void @print__ct_se44eb1a972327e7d__pack_s32_s32_s32(ptr @__sx_default_context, i32 %loadN, i32 %loadN, i32 %loadN)
|
|
ret i32 0
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal ptr @__thunk_CAllocator_Allocator_alloc(ptr %0, ptr %1, i64 %2) #0 {
|
|
entry:
|
|
%call = call ptr @CAllocator.alloc(ptr %0, ptr %1, i64 %2)
|
|
ret ptr %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @__thunk_CAllocator_Allocator_dealloc(ptr %0, ptr %1, ptr %2) #0 {
|
|
entry:
|
|
call void @CAllocator.dealloc(ptr %0, ptr %1, ptr %2)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @print__ct_s8b0209b1c8e86f29__pack(ptr %0) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.122, i64 30 }, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
store ptr null, ptr %gep, align 8
|
|
%gepN = getelementptr inbounds { 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.123, 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 30)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %load, { ptr, i64 } %call)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%str.ptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%str.len = extractvalue { ptr, i64 } %loadN, 1
|
|
%1 = call i64 @write(i32 1, ptr %str.ptr, i64 %str.len)
|
|
ret void
|
|
}
|
|
|
|
; 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.124, i64 30 })
|
|
ret { ptr, i64 } %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @print__ct_s39d1c95f7ad02cfe__pack_s32(ptr %0, i32 %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.125, i64 30 }, ptr %alloca, align 8
|
|
%allocaN = alloca i32, align 4
|
|
store i32 %1, ptr %allocaN, align 4
|
|
%allocaN = alloca [1 x { i64, i64 }], align 8
|
|
%load = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %load to i64
|
|
%ba.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%igp.ptr = getelementptr { i64, i64 }, ptr %allocaN, i64 0
|
|
store { i64, i64 } %ba.val, ptr %igp.ptr, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%igp.ptr4 = getelementptr { i64, i64 }, ptr %allocaN, i64 0
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
store ptr %igp.ptr4, ptr %gep, align 8
|
|
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
|
store i64 1, ptr %gepN, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8
|
|
%loadN = 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)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %call)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %loadN to i64
|
|
%ba.val13 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val13)
|
|
%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
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 29, i64 1)
|
|
%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
|
|
%str.ptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%str.len = extractvalue { ptr, i64 } %loadN, 1
|
|
%2 = call i64 @write(i32 1, ptr %str.ptr, i64 %str.len)
|
|
ret void
|
|
}
|
|
|
|
; 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.127, i64 30 })
|
|
ret { ptr, i64 } %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @print__ct_sa76620ef481aaa22__pack(ptr %0) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.128, i64 51 }, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
store ptr null, ptr %gep, align 8
|
|
%gepN = getelementptr inbounds { 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.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 51)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %load, { ptr, i64 } %call)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%str.ptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%str.len = extractvalue { ptr, i64 } %loadN, 1
|
|
%1 = call i64 @write(i32 1, ptr %str.ptr, i64 %str.len)
|
|
ret void
|
|
}
|
|
|
|
; 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.130, i64 51 })
|
|
ret { ptr, i64 } %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @print__ct_se44eb1a972327e7d__pack_s32_s32_s32(ptr %0, i32 %1, i32 %2, i32 %3) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.131, i64 28 }, ptr %alloca, align 8
|
|
%allocaN = alloca i32, align 4
|
|
store i32 %1, ptr %allocaN, align 4
|
|
%allocaN = alloca i32, align 4
|
|
store i32 %2, ptr %allocaN, align 4
|
|
%allocaN = alloca i32, align 4
|
|
store i32 %3, ptr %allocaN, align 4
|
|
%allocaN = alloca [3 x { i64, i64 }], align 8
|
|
%load = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %load to i64
|
|
%ba.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%igp.ptr = getelementptr { i64, i64 }, ptr %allocaN, i64 0
|
|
store { i64, i64 } %ba.val, ptr %igp.ptr, align 8
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %loadN to i64
|
|
%ba.val7 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%igp.ptr8 = getelementptr { i64, i64 }, ptr %allocaN, i64 1
|
|
store { i64, i64 } %ba.val7, ptr %igp.ptr8, align 8
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %loadN to i64
|
|
%ba.val11 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%igp.ptr12 = getelementptr { i64, i64 }, ptr %allocaN, i64 2
|
|
store { i64, i64 } %ba.val11, ptr %igp.ptr12, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%igp.ptr14 = getelementptr { i64, i64 }, ptr %allocaN, i64 0
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
store ptr %igp.ptr14, ptr %gep, align 8
|
|
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
|
store i64 3, ptr %gepN, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.132, i64 0 }, ptr %allocaN, align 8
|
|
%loadN = 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)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %call)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %loadN to i64
|
|
%ba.val23 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val23)
|
|
%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
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 14, i64 3)
|
|
%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
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %loadN to i64
|
|
%ba.val33 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val33)
|
|
%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
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 19, i64 6)
|
|
%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
|
|
%loadN = load i32, ptr %allocaN, align 4
|
|
%sN = sext i32 %loadN to i64
|
|
%ba.val43 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val43)
|
|
%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
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 27, i64 1)
|
|
%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
|
|
%str.ptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%str.len = extractvalue { ptr, i64 } %loadN, 1
|
|
%4 = call i64 @write(i32 1, ptr %str.ptr, i64 %str.len)
|
|
ret void
|
|
}
|
|
|
|
; 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.133, i64 28 })
|
|
ret { ptr, i64 } %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
|
%ba.tmp = alloca { ptr, i64 }, align 8
|
|
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
|
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.134, i64 15 }, { ptr, i64 } { ptr @str.135, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.117
|
|
|
|
while.hdr.117: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 4
|
|
br i1 %icmp, label %while.body.118, label %while.exit.119
|
|
|
|
while.body.118: ; preds = %while.hdr.117
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.120, label %if.merge.121
|
|
|
|
while.exit.119: ; preds = %while.hdr.117
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.120: ; preds = %while.body.118
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.121
|
|
|
|
if.merge.121: ; preds = %if.then.120, %while.body.118
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.141, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
i64 2, label %fv.case20
|
|
i64 3, label %fv.case24
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case24, %fv.case20, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ %fv.val23, %fv.case20 ], [ %fv.val28, %fv.case24 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.117
|
|
|
|
fv.default: ; preds = %if.merge.121
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.121
|
|
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
|
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.121
|
|
%fv.field18 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 1
|
|
%sN = sext i32 %fv.field18 to i64
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
br label %fv.merge
|
|
|
|
fv.case20: ; preds = %if.merge.121
|
|
%fv.field21 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 2
|
|
%sN = sext i32 %fv.field21 to i64
|
|
%fv.val23 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
br label %fv.merge
|
|
|
|
fv.case24: ; preds = %if.merge.121
|
|
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
|
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
|
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
|
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, ptr, ptr }, align 8
|
|
store { ptr, ptr, ptr } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.142, i64 9 }, { ptr, i64 } { ptr @str.143, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.122
|
|
|
|
while.hdr.122: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 3
|
|
br i1 %icmp, label %while.body.123, label %while.exit.124
|
|
|
|
while.body.123: ; preds = %while.hdr.122
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.125, label %if.merge.126
|
|
|
|
while.exit.124: ; preds = %while.hdr.122
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.125: ; preds = %while.body.123
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.145, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.126
|
|
|
|
if.merge.126: ; preds = %if.then.125, %while.body.123
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.149, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.150, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
i64 2, label %fv.case21
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case21, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val20, %fv.case17 ], [ %fv.val24, %fv.case21 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.122
|
|
|
|
fv.default: ; preds = %if.merge.126
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.126
|
|
%fv.field = extractvalue { ptr, ptr, ptr } %loadN, 0
|
|
%pNi = ptrtoint ptr %fv.field to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.126
|
|
%fv.field18 = extractvalue { ptr, ptr, ptr } %loadN, 1
|
|
%pNi19 = ptrtoint ptr %fv.field18 to i64
|
|
%fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1
|
|
br label %fv.merge
|
|
|
|
fv.case21: ; preds = %if.merge.126
|
|
%fv.field22 = extractvalue { ptr, ptr, ptr } %loadN, 2
|
|
%pNi23 = ptrtoint ptr %fv.field22 to i64
|
|
%fv.val24 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi23, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %1) #0 {
|
|
entry:
|
|
%alloca = alloca {}, align 8
|
|
store {} %1, ptr %alloca, align 1
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.151, i64 10 }, { ptr, i64 } { ptr @str.152, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.127
|
|
|
|
while.hdr.127: ; preds = %if.merge.131, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 0
|
|
br i1 %icmp, label %while.body.128, label %while.exit.129
|
|
|
|
while.body.128: ; preds = %while.hdr.127
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.130, label %if.merge.131
|
|
|
|
while.exit.129: ; preds = %while.hdr.127
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.130: ; preds = %while.body.128
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.131
|
|
|
|
if.merge.131: ; preds = %if.then.130, %while.body.128
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.155, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.156, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load {}, ptr %alloca, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } { i64 17, i64 0 })
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.127
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { i64 }, align 8
|
|
store { i64 } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.157, i64 3 }, { ptr, i64 } { ptr @str.158, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.132
|
|
|
|
while.hdr.132: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 1
|
|
br i1 %icmp, label %while.body.133, label %while.exit.134
|
|
|
|
while.body.133: ; preds = %while.hdr.132
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.135, label %if.merge.136
|
|
|
|
while.exit.134: ; preds = %while.hdr.132
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.135: ; preds = %while.body.133
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.160, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.136
|
|
|
|
if.merge.136: ; preds = %if.then.135, %while.body.133
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.162, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.163, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.132
|
|
|
|
fv.default: ; preds = %if.merge.136
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.136
|
|
%fv.field = extractvalue { i64 } %loadN, 0
|
|
%fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.164, i64 10 }, { ptr, i64 } { ptr @str.165, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.137
|
|
|
|
while.hdr.137: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 2
|
|
br i1 %icmp, label %while.body.138, label %while.exit.139
|
|
|
|
while.body.138: ; preds = %while.hdr.137
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.140, label %if.merge.141
|
|
|
|
while.exit.139: ; preds = %while.hdr.137
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.140: ; preds = %while.body.138
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.141
|
|
|
|
if.merge.141: ; preds = %if.then.140, %while.body.138
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.170, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.171, 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
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.137
|
|
|
|
fv.default: ; preds = %if.merge.141
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.141
|
|
%fv.field = extractvalue { ptr, i64 } %loadN, 0
|
|
%pNi = ptrtoint ptr %fv.field to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 26, i64 undef }, i64 %pNi, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.141
|
|
%fv.field18 = extractvalue { ptr, i64 } %loadN, 1
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
|
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
|
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.172, i64 5 }, { ptr, i64 } { ptr @str.173, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.142
|
|
|
|
while.hdr.142: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 3
|
|
br i1 %icmp, label %while.body.143, label %while.exit.144
|
|
|
|
while.body.143: ; preds = %while.hdr.142
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.145, label %if.merge.146
|
|
|
|
while.exit.144: ; preds = %while.hdr.142
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.145: ; preds = %while.body.143
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.146
|
|
|
|
if.merge.146: ; preds = %if.then.145, %while.body.143
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.179, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.180, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
i64 2, label %fv.case20
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case20, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ %fv.val22, %fv.case20 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.142
|
|
|
|
fv.default: ; preds = %if.merge.146
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.146
|
|
%fv.field = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 0
|
|
%pNi = ptrtoint ptr %fv.field to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 26, i64 undef }, i64 %pNi, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.146
|
|
%fv.field18 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 1
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1
|
|
br label %fv.merge
|
|
|
|
fv.case20: ; preds = %if.merge.146
|
|
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
|
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64, i64 }, align 8
|
|
store { ptr, i64, i64 } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.181, i64 8 }, { ptr, i64 } { ptr @str.182, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.147
|
|
|
|
while.hdr.147: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 3
|
|
br i1 %icmp, label %while.body.148, label %while.exit.149
|
|
|
|
while.body.148: ; preds = %while.hdr.147
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.150, label %if.merge.151
|
|
|
|
while.exit.149: ; preds = %while.hdr.147
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.150: ; preds = %while.body.148
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.151
|
|
|
|
if.merge.151: ; preds = %if.then.150, %while.body.148
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.188, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.189, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
i64 2, label %fv.case20
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case20, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ %fv.val22, %fv.case20 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.147
|
|
|
|
fv.default: ; preds = %if.merge.151
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.151
|
|
%fv.field = extractvalue { ptr, i64, i64 } %loadN, 0
|
|
%pNi = ptrtoint ptr %fv.field to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 29, i64 undef }, i64 %pNi, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.151
|
|
%fv.field18 = extractvalue { ptr, i64, i64 } %loadN, 1
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1
|
|
br label %fv.merge
|
|
|
|
fv.case20: ; preds = %if.merge.151
|
|
%fv.field21 = extractvalue { ptr, i64, i64 } %loadN, 2
|
|
%fv.val22 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field21, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
|
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
|
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 17 }, { ptr, i64 } { ptr @str.191, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.152
|
|
|
|
while.hdr.152: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 4
|
|
br i1 %icmp, label %while.body.153, label %while.exit.154
|
|
|
|
while.body.153: ; preds = %while.hdr.152
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.155, label %if.merge.156
|
|
|
|
while.exit.154: ; preds = %while.hdr.152
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.155: ; preds = %while.body.153
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.193, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.156
|
|
|
|
if.merge.156: ; preds = %if.then.155, %while.body.153
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.198, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.199, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
i64 2, label %fv.case20
|
|
i64 3, label %fv.case23
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case23, %fv.case20, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ %fv.val22, %fv.case20 ], [ %fv.val25, %fv.case23 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.152
|
|
|
|
fv.default: ; preds = %if.merge.156
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.156
|
|
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
|
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.156
|
|
%fv.field18 = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 1
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1
|
|
br label %fv.merge
|
|
|
|
fv.case20: ; preds = %if.merge.156
|
|
%fv.field21 = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 2
|
|
%fv.val22 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field21, 1
|
|
br label %fv.merge
|
|
|
|
fv.case23: ; preds = %if.merge.156
|
|
%fv.field24 = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 3
|
|
%fv.val25 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field24, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
|
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
|
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 7 }, { ptr, i64 } { ptr @str.201, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.157
|
|
|
|
while.hdr.157: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 2
|
|
br i1 %icmp, label %while.body.158, label %while.exit.159
|
|
|
|
while.body.158: ; preds = %while.hdr.157
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.160, label %if.merge.161
|
|
|
|
while.exit.159: ; preds = %while.hdr.157
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.160: ; preds = %while.body.158
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.203, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.161
|
|
|
|
if.merge.161: ; preds = %if.then.160, %while.body.158
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.206, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.207, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { { ptr, ptr, ptr }, ptr }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.157
|
|
|
|
fv.default: ; preds = %if.merge.161
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.161
|
|
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
|
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.161
|
|
%fv.field18 = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 1
|
|
%pNi = ptrtoint ptr %fv.field18 to i64
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %1) #0 {
|
|
entry:
|
|
%alloca = alloca {}, align 8
|
|
store {} %1, ptr %alloca, align 1
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 12 }, { ptr, i64 } { ptr @str.209, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.162
|
|
|
|
while.hdr.162: ; preds = %if.merge.166, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 0
|
|
br i1 %icmp, label %while.body.163, label %while.exit.164
|
|
|
|
while.body.163: ; preds = %while.hdr.162
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.165, label %if.merge.166
|
|
|
|
while.exit.164: ; preds = %while.hdr.162
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.210, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.165: ; preds = %while.body.163
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.211, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.166
|
|
|
|
if.merge.166: ; preds = %if.then.165, %while.body.163
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.212, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.213, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load {}, ptr %alloca, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } { i64 17, i64 0 })
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.162
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__NSString(ptr %0, {} %1) #0 {
|
|
entry:
|
|
%alloca = alloca {}, align 8
|
|
store {} %1, ptr %alloca, align 1
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 8 }, { ptr, i64 } { ptr @str.215, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.167
|
|
|
|
while.hdr.167: ; preds = %if.merge.171, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 0
|
|
br i1 %icmp, label %while.body.168, label %while.exit.169
|
|
|
|
while.body.168: ; preds = %while.hdr.167
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.170, label %if.merge.171
|
|
|
|
while.exit.169: ; preds = %while.hdr.167
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.170: ; preds = %while.body.168
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.217, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.171
|
|
|
|
if.merge.171: ; preds = %if.then.170, %while.body.168
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.218, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.219, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load {}, ptr %alloca, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } { i64 17, i64 0 })
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.167
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string__SxBox(ptr %0, {} %1) #0 {
|
|
entry:
|
|
%alloca = alloca {}, align 8
|
|
store {} %1, ptr %alloca, align 1
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 5 }, { ptr, i64 } { ptr @str.221, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.172
|
|
|
|
while.hdr.172: ; preds = %if.merge.176, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 0
|
|
br i1 %icmp, label %while.body.173, label %while.exit.174
|
|
|
|
while.body.173: ; preds = %while.hdr.172
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.175, label %if.merge.176
|
|
|
|
while.exit.174: ; preds = %while.hdr.172
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.222, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.175: ; preds = %while.body.173
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.223, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.176
|
|
|
|
if.merge.176: ; preds = %if.then.175, %while.body.173
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.224, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.225, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load {}, ptr %alloca, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } { i64 17, i64 0 })
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.172
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @struct_to_string____SxBoxState(ptr %0, { { ptr, ptr, ptr }, i32, i32, i32 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { { ptr, ptr, ptr }, i32, i32, i32 }, align 8
|
|
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
|
store { { ptr, ptr, ptr }, i32, i32, i32 } %1, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 12 }, { ptr, i64 } { ptr @str.227, i64 1 })
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.177
|
|
|
|
while.hdr.177: ; preds = %fv.merge, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 4
|
|
br i1 %icmp, label %while.body.178, label %while.exit.179
|
|
|
|
while.body.178: ; preds = %while.hdr.177
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.180, label %if.merge.181
|
|
|
|
while.exit.179: ; preds = %while.hdr.177
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 1 })
|
|
ret { ptr, i64 } %callN
|
|
|
|
if.then.180: ; preds = %while.body.178
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.229, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.181
|
|
|
|
if.merge.181: ; preds = %if.then.180, %while.body.178
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.234, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %fn.load)
|
|
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.235, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
switch i64 %loadN, label %fv.default [
|
|
i64 0, label %fv.case
|
|
i64 1, label %fv.case17
|
|
i64 2, label %fv.case20
|
|
i64 3, label %fv.case24
|
|
]
|
|
|
|
fv.merge: ; preds = %fv.default, %fv.case24, %fv.case20, %fv.case17, %fv.case
|
|
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val19, %fv.case17 ], [ %fv.val23, %fv.case20 ], [ %fv.val27, %fv.case24 ], [ undef, %fv.default ]
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %fv.phi)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.177
|
|
|
|
fv.default: ; preds = %if.merge.181
|
|
br label %fv.merge
|
|
|
|
fv.case: ; preds = %if.merge.181
|
|
%fv.field = extractvalue { { ptr, ptr, ptr }, i32, i32, i32 } %loadN, 0
|
|
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
|
br label %fv.merge
|
|
|
|
fv.case17: ; preds = %if.merge.181
|
|
%fv.field18 = extractvalue { { ptr, ptr, ptr }, i32, i32, i32 } %loadN, 1
|
|
%sN = sext i32 %fv.field18 to i64
|
|
%fv.val19 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
br label %fv.merge
|
|
|
|
fv.case20: ; preds = %if.merge.181
|
|
%fv.field21 = extractvalue { { ptr, ptr, ptr }, i32, i32, i32 } %loadN, 2
|
|
%sN = sext i32 %fv.field21 to i64
|
|
%fv.val23 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
br label %fv.merge
|
|
|
|
fv.case24: ; preds = %if.merge.181
|
|
%fv.field25 = extractvalue { { ptr, ptr, ptr }, i32, i32, i32 } %loadN, 3
|
|
%sN = sext i32 %fv.field25 to i64
|
|
%fv.val27 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1
|
|
br label %fv.merge
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %load, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [7 x { ptr, i64 }], ptr @field_names.244, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 1 }, { ptr, i64 } %fn.load)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%allocaN = alloca { i64, i64 }, align 8
|
|
store { i64, i64 } { i64 17, i64 0 }, ptr %allocaN, align 8
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %loadN)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmp = icmp sgt i64 %len, 0
|
|
br i1 %icmp, label %if.then.186, label %if.merge.187
|
|
|
|
if.then.186: ; preds = %entry
|
|
%loadN = load { ptr, i64 }, 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.246, i64 1 })
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 1 }, { ptr, i64 } %callN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.187
|
|
|
|
if.merge.187: ; preds = %if.then.186, %entry
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %load, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%fn.gep = getelementptr inbounds [5 x { ptr, i64 }], ptr @field_names.253, i64 0, i64 %loadN
|
|
%fn.load = load { ptr, i64 }, ptr %fn.gep, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 1 }, { ptr, i64 } %fn.load)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%allocaN = alloca { i64, i64 }, align 8
|
|
store { i64, i64 } { i64 17, i64 0 }, ptr %allocaN, align 8
|
|
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %loadN)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmp = icmp sgt i64 %len, 0
|
|
br i1 %icmp, label %if.then.188, label %if.merge.189
|
|
|
|
if.then.188: ; preds = %entry
|
|
%loadN = load { ptr, i64 }, 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.255, i64 1 })
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 1 }, { ptr, i64 } %callN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.189
|
|
|
|
if.merge.189: ; preds = %if.then.188, %entry
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
|
entry:
|
|
%alloca = alloca [4 x i64], align 8
|
|
%ig.tmp = alloca [4 x i64], align 8
|
|
store [4 x i64] %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.256, i64 1 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.195
|
|
|
|
while.hdr.195: ; preds = %if.merge.199, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 4
|
|
br i1 %icmp, label %while.body.196, label %while.exit.197
|
|
|
|
while.body.196: ; preds = %while.hdr.195
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.198, label %if.merge.199
|
|
|
|
while.exit.197: ; preds = %while.hdr.195
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.257, i64 1 })
|
|
ret { ptr, i64 } %call
|
|
|
|
if.then.198: ; preds = %while.body.196
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.258, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.199
|
|
|
|
if.merge.199: ; preds = %if.then.198, %while.body.196
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [4 x i64], ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
|
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
|
%ig.val = load i64, ptr %ig.ptr, align 8
|
|
%ba.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %ig.val, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.195
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
|
entry:
|
|
%alloca = alloca [1 x { i64, i64 }], align 8
|
|
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
|
%ba.tmp = alloca { i64, i64 }, align 8
|
|
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.259, i64 1 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.200
|
|
|
|
while.hdr.200: ; preds = %if.merge.204, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 1
|
|
br i1 %icmp, label %while.body.201, label %while.exit.202
|
|
|
|
while.body.201: ; preds = %while.hdr.200
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.203, label %if.merge.204
|
|
|
|
while.exit.202: ; preds = %while.hdr.200
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.260, i64 1 })
|
|
ret { ptr, i64 } %call
|
|
|
|
if.then.203: ; preds = %while.body.201
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.261, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.204
|
|
|
|
if.merge.204: ; preds = %if.then.203, %while.body.201
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [1 x { i64, i64 }], ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
|
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
|
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
|
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.200
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %1) #0 {
|
|
entry:
|
|
%alloca = alloca [3 x { i64, i64 }], align 8
|
|
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
|
%ba.tmp = alloca { i64, i64 }, align 8
|
|
store [3 x { i64, i64 }] %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.262, i64 1 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.205
|
|
|
|
while.hdr.205: ; preds = %if.merge.209, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp slt i64 %load, 3
|
|
br i1 %icmp, label %while.body.206, label %while.exit.207
|
|
|
|
while.body.206: ; preds = %while.hdr.205
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.208, label %if.merge.209
|
|
|
|
while.exit.207: ; preds = %while.hdr.205
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.263, i64 1 })
|
|
ret { ptr, i64 } %call
|
|
|
|
if.then.208: ; preds = %while.body.206
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.264, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.209
|
|
|
|
if.merge.209: ; preds = %if.then.208, %while.body.206
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load [3 x { i64, i64 }], ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store [3 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
|
%ig.ptr = getelementptr [3 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
|
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
|
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.205
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
%ba.tmp = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.265, i64 1 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.214
|
|
|
|
while.hdr.214: ; preds = %if.merge.218, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmp = icmp slt i64 %load, %len
|
|
br i1 %icmp, label %while.body.215, label %while.exit.216
|
|
|
|
while.body.215: ; preds = %while.hdr.214
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.217, label %if.merge.218
|
|
|
|
while.exit.216: ; preds = %while.hdr.214
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.266, i64 1 })
|
|
ret { ptr, i64 } %call
|
|
|
|
if.then.217: ; preds = %while.body.215
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.267, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.218
|
|
|
|
if.merge.218: ; preds = %if.then.217, %while.body.215
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
|
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
|
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.214
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
%ba.tmp = alloca { i64, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.268, i64 1 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.219
|
|
|
|
while.hdr.219: ; preds = %if.merge.223, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmp = icmp slt i64 %load, %len
|
|
br i1 %icmp, label %while.body.220, label %while.exit.221
|
|
|
|
while.body.220: ; preds = %while.hdr.219
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.222, label %if.merge.223
|
|
|
|
while.exit.221: ; preds = %while.hdr.219
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.269, i64 1 })
|
|
ret { ptr, i64 } %call
|
|
|
|
if.then.222: ; preds = %while.body.220
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.270, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.223
|
|
|
|
if.merge.223: ; preds = %if.then.222, %while.body.220
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
|
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
|
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
|
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
|
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
|
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
store i64 %add, ptr %allocaN, align 8
|
|
br label %while.hdr.219
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_void(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.248, label %if.else.249
|
|
|
|
if.then.248: ; preds = %entry
|
|
br label %if.merge.250
|
|
|
|
if.else.249: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.273, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.272, i64 5 }, { ptr, i64 } %callN)
|
|
br label %if.merge.250
|
|
|
|
if.merge.250: ; preds = %if.else.249, %if.then.248
|
|
%bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.264, label %if.else.265
|
|
|
|
if.then.264: ; preds = %entry
|
|
br label %if.merge.266
|
|
|
|
if.else.265: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.276, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.275, i64 11 }, { ptr, i64 } %callN)
|
|
br label %if.merge.266
|
|
|
|
if.merge.266: ; preds = %if.else.265, %if.then.264
|
|
%bp = phi { ptr, i64 } [ { ptr @str.274, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.267, label %if.else.268
|
|
|
|
if.then.267: ; preds = %entry
|
|
br label %if.merge.269
|
|
|
|
if.else.268: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.279, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.278, i64 4 }, { ptr, i64 } %callN)
|
|
br label %if.merge.269
|
|
|
|
if.merge.269: ; preds = %if.else.268, %if.then.267
|
|
%bp = phi { ptr, i64 } [ { ptr @str.277, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.270, label %if.else.271
|
|
|
|
if.then.270: ; preds = %entry
|
|
br label %if.merge.272
|
|
|
|
if.else.271: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.282, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.281, i64 11 }, { ptr, i64 } %callN)
|
|
br label %if.merge.272
|
|
|
|
if.merge.272: ; preds = %if.else.271, %if.then.270
|
|
%bp = phi { ptr, i64 } [ { ptr @str.280, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.273, label %if.else.274
|
|
|
|
if.then.273: ; preds = %entry
|
|
br label %if.merge.275
|
|
|
|
if.else.274: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.285, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.284, i64 6 }, { ptr, i64 } %callN)
|
|
br label %if.merge.275
|
|
|
|
if.merge.275: ; preds = %if.else.274, %if.then.273
|
|
%bp = phi { ptr, i64 } [ { ptr @str.283, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
store ptr %load, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.276, label %if.else.277
|
|
|
|
if.then.276: ; preds = %entry
|
|
br label %if.merge.278
|
|
|
|
if.else.277: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.288, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.287, i64 5 }, { ptr, i64 } %callN)
|
|
br label %if.merge.278
|
|
|
|
if.merge.278: ; preds = %if.else.277, %if.then.276
|
|
%bp = phi { ptr, i64 } [ { ptr @str.286, i64 4 }, %if.then.276 ], [ %callN, %if.else.277 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.279, label %if.else.280
|
|
|
|
if.then.279: ; preds = %entry
|
|
br label %if.merge.281
|
|
|
|
if.else.280: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.291, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.290, i64 9 }, { ptr, i64 } %callN)
|
|
br label %if.merge.281
|
|
|
|
if.merge.281: ; preds = %if.else.280, %if.then.279
|
|
%bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.279 ], [ %callN, %if.else.280 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.282, label %if.else.283
|
|
|
|
if.then.282: ; preds = %entry
|
|
br label %if.merge.284
|
|
|
|
if.else.283: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.294, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.293, i64 18 }, { ptr, i64 } %callN)
|
|
br label %if.merge.284
|
|
|
|
if.merge.284: ; preds = %if.else.283, %if.then.282
|
|
%bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.282 ], [ %callN, %if.else.283 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_NSString(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.285, label %if.else.286
|
|
|
|
if.then.285: ; preds = %entry
|
|
br label %if.merge.287
|
|
|
|
if.else.286: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.297, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.296, i64 9 }, { ptr, i64 } %callN)
|
|
br label %if.merge.287
|
|
|
|
if.merge.287: ; preds = %if.else.286, %if.then.285
|
|
%bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.285 ], [ %callN, %if.else.286 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.288, label %if.else.289
|
|
|
|
if.then.288: ; preds = %entry
|
|
br label %if.merge.290
|
|
|
|
if.else.289: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.300, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.299, i64 12 }, { ptr, i64 } %callN)
|
|
br label %if.merge.290
|
|
|
|
if.merge.290: ; preds = %if.else.289, %if.then.288
|
|
%bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.288 ], [ %callN, %if.else.289 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.291, label %if.else.292
|
|
|
|
if.then.291: ; preds = %entry
|
|
br label %if.merge.293
|
|
|
|
if.else.292: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.303, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.302, i64 4 }, { ptr, i64 } %callN)
|
|
br label %if.merge.293
|
|
|
|
if.merge.293: ; preds = %if.else.292, %if.then.291
|
|
%bp = phi { ptr, i64 } [ { ptr @str.301, i64 4 }, %if.then.291 ], [ %callN, %if.else.292 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.294, label %if.else.295
|
|
|
|
if.then.294: ; preds = %entry
|
|
br label %if.merge.296
|
|
|
|
if.else.295: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.306, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.305, i64 6 }, { ptr, i64 } %callN)
|
|
br label %if.merge.296
|
|
|
|
if.merge.296: ; preds = %if.else.295, %if.then.294
|
|
%bp = phi { ptr, i64 } [ { ptr @str.304, i64 4 }, %if.then.294 ], [ %callN, %if.else.295 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_SxBox(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.297, label %if.else.298
|
|
|
|
if.then.297: ; preds = %entry
|
|
br label %if.merge.299
|
|
|
|
if.else.298: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.309, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 6 }, { ptr, i64 } %callN)
|
|
br label %if.merge.299
|
|
|
|
if.merge.299: ; preds = %if.else.298, %if.then.297
|
|
%bp = phi { ptr, i64 } [ { ptr @str.307, i64 4 }, %if.then.297 ], [ %callN, %if.else.298 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_ptr_SxBox(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.300, label %if.else.301
|
|
|
|
if.then.300: ; preds = %entry
|
|
br label %if.merge.302
|
|
|
|
if.else.301: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.312, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.311, i64 7 }, { ptr, i64 } %callN)
|
|
br label %if.merge.302
|
|
|
|
if.merge.302: ; preds = %if.else.301, %if.then.300
|
|
%bp = phi { ptr, i64 } [ { ptr @str.310, i64 4 }, %if.then.300 ], [ %callN, %if.else.301 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.303, label %if.else.304
|
|
|
|
if.then.303: ; preds = %entry
|
|
br label %if.merge.305
|
|
|
|
if.else.304: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.315, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.314, i64 4 }, { ptr, i64 } %callN)
|
|
br label %if.merge.305
|
|
|
|
if.merge.305: ; preds = %if.else.304, %if.then.303
|
|
%bp = phi { ptr, i64 } [ { ptr @str.313, i64 4 }, %if.then.303 ], [ %callN, %if.else.304 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.306, label %if.else.307
|
|
|
|
if.then.306: ; preds = %entry
|
|
br label %if.merge.308
|
|
|
|
if.else.307: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.318, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.317, i64 7 }, { ptr, i64 } %callN)
|
|
br label %if.merge.308
|
|
|
|
if.merge.308: ; preds = %if.else.307, %if.then.306
|
|
%bp = phi { ptr, i64 } [ { ptr @str.316, i64 4 }, %if.then.306 ], [ %callN, %if.else.307 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.309, label %if.else.310
|
|
|
|
if.then.309: ; preds = %entry
|
|
br label %if.merge.311
|
|
|
|
if.else.310: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.321, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.320, i64 4 }, { ptr, i64 } %callN)
|
|
br label %if.merge.311
|
|
|
|
if.merge.311: ; preds = %if.else.310, %if.then.309
|
|
%bp = phi { ptr, i64 } [ { ptr @str.319, i64 4 }, %if.then.309 ], [ %callN, %if.else.310 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.312, label %if.else.313
|
|
|
|
if.then.312: ; preds = %entry
|
|
br label %if.merge.314
|
|
|
|
if.else.313: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.324, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.323, i64 6 }, { ptr, i64 } %callN)
|
|
br label %if.merge.314
|
|
|
|
if.merge.314: ; preds = %if.else.313, %if.then.312
|
|
%bp = phi { ptr, i64 } [ { ptr @str.322, i64 4 }, %if.then.312 ], [ %callN, %if.else.313 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.315, label %if.else.316
|
|
|
|
if.then.315: ; preds = %entry
|
|
br label %if.merge.317
|
|
|
|
if.else.316: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.327, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.326, i64 3 }, { ptr, i64 } %callN)
|
|
br label %if.merge.317
|
|
|
|
if.merge.317: ; preds = %if.else.316, %if.then.315
|
|
%bp = phi { ptr, i64 } [ { ptr @str.325, i64 4 }, %if.then.315 ], [ %callN, %if.else.316 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.318, label %if.else.319
|
|
|
|
if.then.318: ; preds = %entry
|
|
br label %if.merge.320
|
|
|
|
if.else.319: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.330, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.329, i64 5 }, { ptr, i64 } %callN)
|
|
br label %if.merge.320
|
|
|
|
if.merge.320: ; preds = %if.else.319, %if.then.318
|
|
%bp = phi { ptr, i64 } [ { ptr @str.328, i64 4 }, %if.then.318 ], [ %callN, %if.else.319 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.321, label %if.else.322
|
|
|
|
if.then.321: ; preds = %entry
|
|
br label %if.merge.323
|
|
|
|
if.else.322: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.333, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.332, i64 7 }, { ptr, i64 } %callN)
|
|
br label %if.merge.323
|
|
|
|
if.merge.323: ; preds = %if.else.322, %if.then.321
|
|
%bp = phi { ptr, i64 } [ { ptr @str.331, i64 4 }, %if.then.321 ], [ %callN, %if.else.322 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%pti = ptrtoint ptr %load to i64
|
|
store i64 %pti, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmp = icmp eq i64 %loadN, 0
|
|
br i1 %icmp, label %if.then.324, label %if.else.325
|
|
|
|
if.then.324: ; preds = %entry
|
|
br label %if.merge.326
|
|
|
|
if.else.325: ; preds = %entry
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @int_to_hex_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.336, i64 3 }, { ptr, i64 } %call)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.335, i64 7 }, { ptr, i64 } %callN)
|
|
br label %if.merge.326
|
|
|
|
if.merge.326: ; preds = %if.else.325, %if.then.324
|
|
%bp = phi { ptr, i64 } [ { ptr @str.334, i64 4 }, %if.then.324 ], [ %callN, %if.else.325 ]
|
|
ret { ptr, i64 } %bp
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define ptr @__SxBox_alloc_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%call = call ptr @class_createInstance(ptr %0, i64 0)
|
|
%load = load { { ptr, ptr, ptr }, ptr }, ptr @__sx_default_context, align 8
|
|
%sg = extractvalue { { ptr, ptr, ptr }, ptr } %load, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 1
|
|
%icall = call ptr %sgN(ptr @__sx_default_context, ptr %sgN, i64 40)
|
|
%callN = call ptr @memset(ptr %icall, i32 0, i64 40)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %icall, i32 0, i32 0
|
|
store { ptr, ptr, ptr } %sg, ptr %gep, align 8
|
|
%loadN = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
call void @object_setIvar(ptr %call, ptr %loadN, ptr %icall)
|
|
ret ptr %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define void @__SxBox_dealloc_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %call, i32 0, i32 0
|
|
%loadN = load { ptr, ptr, ptr }, ptr %gep, align 8
|
|
%sg = extractvalue { ptr, ptr, ptr } %loadN, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
|
call void %sgN(ptr @__sx_default_context, ptr %sg, ptr %call)
|
|
call void @object_setIvar(ptr %0, ptr %load, ptr null)
|
|
%alloca = alloca { ptr, ptr }, align 8
|
|
%gepN = getelementptr inbounds { ptr, ptr }, ptr %alloca, i32 0, i32 0
|
|
store ptr %0, ptr %gepN, align 8
|
|
%loadN = load ptr, ptr @__SxBox_class, align 8
|
|
%gepN = getelementptr inbounds { ptr, ptr }, ptr %alloca, i32 0, i32 1
|
|
store ptr %loadN, ptr %gepN, align 8
|
|
%callN = call ptr @sel_registerName(ptr @__sx_objc_cstr_dealloc)
|
|
call void @objc_msgSendSuper2(ptr %alloca, ptr %callN)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @objc_msgSendSuper2(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define i32 @__SxBox_width_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %call, i32 0, i32 1
|
|
%loadN = load i32, ptr %gep, align 4
|
|
ret i32 %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define void @__SxBox_setWidth_imp(ptr %0, ptr %1, i32 %2) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %call, i32 0, i32 1
|
|
store i32 %2, ptr %gep, align 4
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define i32 @__SxBox_height_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %call, i32 0, i32 2
|
|
%loadN = load i32, ptr %gep, align 4
|
|
ret i32 %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define void @__SxBox_setHeight_imp(ptr %0, ptr %1, i32 %2) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %call, i32 0, i32 2
|
|
store i32 %2, ptr %gep, align 4
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define i32 @__SxBox_area_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxBox_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %call, i32 0, i32 3
|
|
%loadN = load i32, ptr %gep, align 4
|
|
ret i32 %loadN
|
|
}
|
|
|
|
declare i64 @write(i32, ptr, i64)
|
|
|
|
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_.337)
|
|
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_setWidth_, align 8
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.338)
|
|
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_setHeight_, align 8
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.339)
|
|
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_width, align 8
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.340)
|
|
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_height, align 8
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.341)
|
|
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_area, align 8
|
|
ret void
|
|
}
|
|
|
|
declare i8 @class_addIvar(ptr, ptr, i64, i8, ptr)
|
|
|
|
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_.342, 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_.343)
|
|
%1 = call i1 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxBox_width_imp, ptr @OBJC_METH_VAR_TYPE_)
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.344)
|
|
%2 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_setWidth_imp, ptr @OBJC_METH_VAR_TYPE_.345)
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.346)
|
|
%3 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_height_imp, ptr @OBJC_METH_VAR_TYPE_.347)
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.348)
|
|
%4 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_setHeight_imp, ptr @OBJC_METH_VAR_TYPE_.349)
|
|
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.350)
|
|
%5 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_area_imp, ptr @OBJC_METH_VAR_TYPE_.351)
|
|
call void @objc_registerClassPair(ptr %cls)
|
|
store ptr %cls, ptr @__SxBox_class, align 8
|
|
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.352)
|
|
%6 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxBox_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.353)
|
|
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.354)
|
|
%7 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxBox_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.355)
|
|
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
|
|
store ptr %iv, ptr @__SxBox_state_ivar, align 8
|
|
ret void
|
|
}
|
|
|
|
define internal void @__sx_objc_class_init() {
|
|
entry:
|
|
%cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_.356)
|
|
store ptr %cls, ptr @OBJC_CLASSLIST_REFERENCES_SxBox, align 8
|
|
ret void
|
|
}
|