diff --git a/examples/0046-basic-int-formatter-extremes.sx b/examples/0046-basic-int-formatter-extremes.sx new file mode 100644 index 0000000..7454cde --- /dev/null +++ b/examples/0046-basic-int-formatter-extremes.sx @@ -0,0 +1,37 @@ +// Integer `{}` formatting across the full signed/unsigned range. +// +// Regression (issue 0090): the `{}` formatter was s64-based — it negated +// the value to print the sign (so s64::MIN, whose magnitude is +// unrepresentable as a positive s64, rendered as a bare "-"), and it had +// no unsigned-aware path (so a u64 all-ones value printed as the s64 +// reinterpretation, "-1"). Both extremes now render correctly: signed +// MIN prints all its digits, and unsigned integers print as unsigned +// decimal across all 64 bits. + +#import "modules/std.sx"; + +main :: () { + // Signed extreme: magnitude is never negated, so MIN survives. + print("s64.min={}\n", s64.min); + print("s64.max={}\n", s64.max); + + // Unsigned extreme: all 64 bits as unsigned decimal, not -1. + print("u64.max={}\n", u64.max); + + // Spread across widths — signed. + print("s8.min={} s8.max={}\n", s8.min, s8.max); + print("s16.min={} s16.max={}\n", s16.min, s16.max); + print("s32.min={} s32.max={}\n", s32.min, s32.max); + + // Spread across widths — unsigned (max is all-ones for that width). + print("u8.max={} u16.max={}\n", u8.max, u16.max); + print("u32.max={}\n", u32.max); + + // Mins of unsigned widths and zero. + print("u8.min={} u64.min={} zero={}\n", u8.min, u64.min, 0); + + // Ordinary signed/unsigned values still print correctly. + neg : s32 = -42; + pos : u32 = 4000000000; + print("neg={} pos={}\n", neg, pos); +} diff --git a/examples/expected/0031-basic-local-fn-return.ir b/examples/expected/0031-basic-local-fn-return.ir index c6df18f..51870d4 100644 --- a/examples/expected/0031-basic-local-fn-return.ir +++ b/examples/expected/0031-basic-local-fn-return.ir @@ -4,328 +4,335 @@ @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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.34 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.35 = private unnamed_addr constant [6 x i8] c"false\00", align 1 @str.36 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.37 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.38 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.37 = private unnamed_addr constant [5 x i8] c"true\00", align 1 +@str.38 = private unnamed_addr constant [6 x i8] c"false\00", align 1 +@str.39 = private unnamed_addr constant [2 x i8] c"0\00", align 1 +@str.40 = private unnamed_addr constant [4 x i8] c"\00", align 1 +@str.41 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@__sx_type_is_unsigned = private constant [89 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.39 = private constant [5 x i8] c"bool\00" -@tn.str.40 = private constant [3 x i8] c"s8\00" -@tn.str.41 = private constant [4 x i8] c"s16\00" -@tn.str.42 = private constant [4 x i8] c"s32\00" -@tn.str.43 = private constant [4 x i8] c"s64\00" -@tn.str.44 = private constant [3 x i8] c"u8\00" -@tn.str.45 = private constant [4 x i8] c"u16\00" -@tn.str.46 = private constant [4 x i8] c"u32\00" -@tn.str.47 = private constant [4 x i8] c"u64\00" -@tn.str.48 = private constant [4 x i8] c"f32\00" -@tn.str.49 = private constant [4 x i8] c"f64\00" -@tn.str.50 = private constant [7 x i8] c"string\00" -@tn.str.51 = private constant [4 x i8] c"Any\00" -@tn.str.52 = private constant [9 x i8] c"noreturn\00" -@tn.str.53 = private constant [6 x i8] c"isize\00" -@tn.str.54 = private constant [6 x i8] c"usize\00" -@tn.str.55 = private constant [5 x i8] c"void\00" -@tn.str.56 = private constant [6 x i8] c"*void\00" -@tn.str.57 = private constant [16 x i8] c"Source_Location\00" -@tn.str.58 = private constant [10 x i8] c"Allocator\00" -@tn.str.59 = private constant [11 x i8] c"CAllocator\00" -@tn.str.60 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.61 = private constant [4 x i8] c"GPA\00" -@tn.str.62 = private constant [5 x i8] c"*GPA\00" -@tn.str.63 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.64 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.65 = private constant [6 x i8] c"Arena\00" -@tn.str.66 = private constant [7 x i8] c"*Arena\00" -@tn.str.67 = private constant [6 x i8] c"[*]u8\00" -@tn.str.68 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.69 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.70 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.71 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.72 = private constant [8 x i8] c"Context\00" -@tn.str.73 = private constant [9 x i8] c"[]string\00" -@tn.str.74 = private constant [16 x i8] c"OperatingSystem\00" -@tn.str.75 = private constant [13 x i8] c"Architecture\00" -@tn.str.76 = private constant [13 x i8] c"BuildOptions\00" -@tn.str.77 = private constant [11 x i8] c"() -> bool\00" -@tn.str.78 = private constant [6 x i8] c"Point\00" -@tn.str.79 = private constant [11 x i8] c"Shape.rect\00" -@tn.str.80 = private constant [6 x i8] c"Shape\00" -@tn.str.81 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.82 = private constant [5 x i8] c"*s64\00" -@tn.str.83 = private constant [7 x i8] c"**void\00" -@tn.str.84 = private constant [8 x i8] c"*string\00" -@tn.str.85 = private constant [6 x i8] c"[]Any\00" -@tn.str.86 = private constant [5 x i8] c"*Any\00" -@tn.str.87 = private constant [7 x i8] c"*[]Any\00" -@tn.str.88 = private constant [4 x i8] c"*u8\00" -@tn.str.89 = private constant [6 x i8] c"*bool\00" -@tn.str.90 = private constant [7 x i8] c"*Point\00" -@tn.str.91 = private constant [5 x i8] c"*s32\00" -@tn.str.92 = private constant [7 x i8] c"[2]Any\00" -@tn.str.93 = private constant [8 x i8] c"*[2]Any\00" -@tn.str.94 = private constant [7 x i8] c"*Shape\00" -@tn.str.95 = private constant [7 x i8] c"[1]Any\00" -@tn.str.96 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.97 = private constant [5 x i8] c"*f64\00" -@tn.str.98 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.99 = private constant [11 x i8] c"*Allocator\00" -@tn.str.100 = private constant [9 x i8] c"*Context\00" -@tn.str.101 = private constant [14 x i8] c"*BuildOptions\00" -@tn.str.102 = private constant [12 x i8] c"*Shape.rect\00" -@tn.str.103 = private constant [17 x i8] c"*OperatingSystem\00" -@tn.str.104 = private constant [14 x i8] c"*Architecture\00" -@tn.str.105 = private constant [10 x i8] c"*[]string\00" -@tn.str.106 = private constant [6 x i8] c"**GPA\00" -@tn.str.107 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.108 = private constant [8 x i8] c"**Arena\00" -@tn.str.109 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.110 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.111 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.112 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.113 = private constant [6 x i8] c"**s64\00" -@tn.str.114 = private constant [8 x i8] c"***void\00" -@tn.str.115 = private constant [9 x i8] c"**string\00" -@tn.str.116 = private constant [6 x i8] c"**Any\00" -@tn.str.117 = private constant [8 x i8] c"**[]Any\00" -@tn.str.118 = private constant [5 x i8] c"**u8\00" -@tn.str.119 = private constant [7 x i8] c"**bool\00" -@tn.str.120 = private constant [8 x i8] c"**Point\00" -@tn.str.121 = private constant [6 x i8] c"**s32\00" -@tn.str.122 = private constant [9 x i8] c"**[2]Any\00" -@tn.str.123 = private constant [8 x i8] c"**Shape\00" -@tn.str.124 = private constant [9 x i8] c"**[1]Any\00" -@__sx_type_names = private constant [87 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.39, i64 4 }, { ptr, i64 } { ptr @tn.str.40, i64 2 }, { ptr, i64 } { ptr @tn.str.41, i64 3 }, { ptr, i64 } { ptr @tn.str.42, i64 3 }, { ptr, i64 } { ptr @tn.str.43, i64 3 }, { ptr, i64 } { ptr @tn.str.44, i64 2 }, { ptr, i64 } { ptr @tn.str.45, i64 3 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 3 }, { ptr, i64 } { ptr @tn.str.48, i64 3 }, { ptr, i64 } { ptr @tn.str.49, i64 3 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 8 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 15 }, { ptr, i64 } { ptr @tn.str.58, i64 9 }, { ptr, i64 } { ptr @tn.str.59, i64 10 }, { ptr, i64 } { ptr @tn.str.60, i64 11 }, { ptr, i64 } { ptr @tn.str.61, i64 3 }, { ptr, i64 } { ptr @tn.str.62, i64 4 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 11 }, { ptr, i64 } { ptr @tn.str.65, i64 5 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 8 }, { ptr, i64 } { ptr @tn.str.69, i64 9 }, { ptr, i64 } { ptr @tn.str.70, i64 17 }, { ptr, i64 } { ptr @tn.str.71, i64 18 }, { ptr, i64 } { ptr @tn.str.72, i64 7 }, { ptr, i64 } { ptr @tn.str.73, i64 8 }, { ptr, i64 } { ptr @tn.str.74, i64 15 }, { ptr, i64 } { ptr @tn.str.75, i64 12 }, { ptr, i64 } { ptr @tn.str.76, i64 12 }, { ptr, i64 } { ptr @tn.str.77, i64 10 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 10 }, { ptr, i64 } { ptr @tn.str.80, i64 5 }, { ptr, i64 } { ptr @tn.str.81, i64 12 }, { ptr, i64 } { ptr @tn.str.82, i64 4 }, { ptr, i64 } { ptr @tn.str.83, i64 6 }, { ptr, i64 } { ptr @tn.str.84, i64 7 }, { ptr, i64 } { ptr @tn.str.85, i64 5 }, { ptr, i64 } { ptr @tn.str.86, i64 4 }, { ptr, i64 } { ptr @tn.str.87, i64 6 }, { ptr, i64 } { ptr @tn.str.88, i64 3 }, { ptr, i64 } { ptr @tn.str.89, i64 5 }, { ptr, i64 } { ptr @tn.str.90, i64 6 }, { ptr, i64 } { ptr @tn.str.91, i64 4 }, { ptr, i64 } { ptr @tn.str.92, i64 6 }, { ptr, i64 } { ptr @tn.str.93, i64 7 }, { ptr, i64 } { ptr @tn.str.94, i64 6 }, { ptr, i64 } { ptr @tn.str.95, i64 6 }, { ptr, i64 } { ptr @tn.str.96, i64 7 }, { ptr, i64 } { ptr @tn.str.97, i64 4 }, { ptr, i64 } { ptr @tn.str.98, i64 16 }, { ptr, i64 } { ptr @tn.str.99, i64 10 }, { ptr, i64 } { ptr @tn.str.100, i64 8 }, { ptr, i64 } { ptr @tn.str.101, i64 13 }, { ptr, i64 } { ptr @tn.str.102, i64 11 }, { ptr, i64 } { ptr @tn.str.103, i64 16 }, { ptr, i64 } { ptr @tn.str.104, i64 13 }, { ptr, i64 } { ptr @tn.str.105, i64 9 }, { ptr, i64 } { ptr @tn.str.106, i64 5 }, { ptr, i64 } { ptr @tn.str.107, i64 12 }, { ptr, i64 } { ptr @tn.str.108, i64 7 }, { ptr, i64 } { ptr @tn.str.109, i64 6 }, { ptr, i64 } { ptr @tn.str.110, i64 10 }, { ptr, i64 } { ptr @tn.str.111, i64 19 }, { ptr, i64 } { ptr @tn.str.112, i64 13 }, { ptr, i64 } { ptr @tn.str.113, i64 5 }, { ptr, i64 } { ptr @tn.str.114, i64 7 }, { ptr, i64 } { ptr @tn.str.115, i64 8 }, { ptr, i64 } { ptr @tn.str.116, i64 5 }, { ptr, i64 } { ptr @tn.str.117, i64 7 }, { ptr, i64 } { ptr @tn.str.118, i64 4 }, { ptr, i64 } { ptr @tn.str.119, i64 6 }, { ptr, i64 } { ptr @tn.str.120, i64 7 }, { ptr, i64 } { ptr @tn.str.121, i64 5 }, { ptr, i64 } { ptr @tn.str.122, i64 8 }, { ptr, i64 } { ptr @tn.str.123, i64 7 }, { ptr, i64 } { ptr @tn.str.124, i64 8 }] -@str.125 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.127 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.130 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.134 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.135 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 +@tn.str.42 = private constant [5 x i8] c"bool\00" +@tn.str.43 = private constant [3 x i8] c"s8\00" +@tn.str.44 = private constant [4 x i8] c"s16\00" +@tn.str.45 = private constant [4 x i8] c"s32\00" +@tn.str.46 = private constant [4 x i8] c"s64\00" +@tn.str.47 = private constant [3 x i8] c"u8\00" +@tn.str.48 = private constant [4 x i8] c"u16\00" +@tn.str.49 = private constant [4 x i8] c"u32\00" +@tn.str.50 = private constant [4 x i8] c"u64\00" +@tn.str.51 = private constant [4 x i8] c"f32\00" +@tn.str.52 = private constant [4 x i8] c"f64\00" +@tn.str.53 = private constant [7 x i8] c"string\00" +@tn.str.54 = private constant [4 x i8] c"Any\00" +@tn.str.55 = private constant [9 x i8] c"noreturn\00" +@tn.str.56 = private constant [6 x i8] c"isize\00" +@tn.str.57 = private constant [6 x i8] c"usize\00" +@tn.str.58 = private constant [5 x i8] c"void\00" +@tn.str.59 = private constant [6 x i8] c"*void\00" +@tn.str.60 = private constant [16 x i8] c"Source_Location\00" +@tn.str.61 = private constant [10 x i8] c"Allocator\00" +@tn.str.62 = private constant [11 x i8] c"CAllocator\00" +@tn.str.63 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.64 = private constant [4 x i8] c"GPA\00" +@tn.str.65 = private constant [5 x i8] c"*GPA\00" +@tn.str.66 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.67 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.68 = private constant [6 x i8] c"Arena\00" +@tn.str.69 = private constant [7 x i8] c"*Arena\00" +@tn.str.70 = private constant [6 x i8] c"[*]u8\00" +@tn.str.71 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.72 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.73 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.74 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.75 = private constant [8 x i8] c"Context\00" +@tn.str.76 = private constant [7 x i8] c"[4]s64\00" +@tn.str.77 = private constant [9 x i8] c"[]string\00" +@tn.str.78 = private constant [16 x i8] c"OperatingSystem\00" +@tn.str.79 = private constant [13 x i8] c"Architecture\00" +@tn.str.80 = private constant [13 x i8] c"BuildOptions\00" +@tn.str.81 = private constant [11 x i8] c"() -> bool\00" +@tn.str.82 = private constant [6 x i8] c"Point\00" +@tn.str.83 = private constant [11 x i8] c"Shape.rect\00" +@tn.str.84 = private constant [6 x i8] c"Shape\00" +@tn.str.85 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.86 = private constant [5 x i8] c"*s64\00" +@tn.str.87 = private constant [7 x i8] c"**void\00" +@tn.str.88 = private constant [8 x i8] c"*string\00" +@tn.str.89 = private constant [6 x i8] c"[]Any\00" +@tn.str.90 = private constant [5 x i8] c"*Any\00" +@tn.str.91 = private constant [7 x i8] c"*[]Any\00" +@tn.str.92 = private constant [4 x i8] c"*u8\00" +@tn.str.93 = private constant [6 x i8] c"*bool\00" +@tn.str.94 = private constant [7 x i8] c"*Point\00" +@tn.str.95 = private constant [5 x i8] c"*s32\00" +@tn.str.96 = private constant [7 x i8] c"[2]Any\00" +@tn.str.97 = private constant [8 x i8] c"*[2]Any\00" +@tn.str.98 = private constant [7 x i8] c"*Shape\00" +@tn.str.99 = private constant [7 x i8] c"[1]Any\00" +@tn.str.100 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.101 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.102 = private constant [5 x i8] c"*f64\00" +@tn.str.103 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.104 = private constant [11 x i8] c"*Allocator\00" +@tn.str.105 = private constant [9 x i8] c"*Context\00" +@tn.str.106 = private constant [14 x i8] c"*BuildOptions\00" +@tn.str.107 = private constant [12 x i8] c"*Shape.rect\00" +@tn.str.108 = private constant [17 x i8] c"*OperatingSystem\00" +@tn.str.109 = private constant [14 x i8] c"*Architecture\00" +@tn.str.110 = private constant [10 x i8] c"*[]string\00" +@tn.str.111 = private constant [6 x i8] c"**GPA\00" +@tn.str.112 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.113 = private constant [8 x i8] c"**Arena\00" +@tn.str.114 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.115 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.116 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.117 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.118 = private constant [6 x i8] c"**s64\00" +@tn.str.119 = private constant [8 x i8] c"***void\00" +@tn.str.120 = private constant [9 x i8] c"**string\00" +@tn.str.121 = private constant [6 x i8] c"**Any\00" +@tn.str.122 = private constant [8 x i8] c"**[]Any\00" +@tn.str.123 = private constant [5 x i8] c"**u8\00" +@tn.str.124 = private constant [7 x i8] c"**bool\00" +@tn.str.125 = private constant [8 x i8] c"**Point\00" +@tn.str.126 = private constant [6 x i8] c"**s32\00" +@tn.str.127 = private constant [9 x i8] c"**[2]Any\00" +@tn.str.128 = private constant [8 x i8] c"**Shape\00" +@tn.str.129 = private constant [9 x i8] c"**[1]Any\00" +@__sx_type_names = private constant [89 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 2 }, { ptr, i64 } { ptr @tn.str.44, i64 3 }, { ptr, i64 } { ptr @tn.str.45, i64 3 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 2 }, { ptr, i64 } { ptr @tn.str.48, i64 3 }, { ptr, i64 } { ptr @tn.str.49, i64 3 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 3 }, { ptr, i64 } { ptr @tn.str.55, i64 8 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 5 }, { ptr, i64 } { ptr @tn.str.60, i64 15 }, { ptr, i64 } { ptr @tn.str.61, i64 9 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 11 }, { ptr, i64 } { ptr @tn.str.64, i64 3 }, { ptr, i64 } { ptr @tn.str.65, i64 4 }, { ptr, i64 } { ptr @tn.str.66, i64 10 }, { ptr, i64 } { ptr @tn.str.67, i64 11 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 6 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 9 }, { ptr, i64 } { ptr @tn.str.73, i64 17 }, { ptr, i64 } { ptr @tn.str.74, i64 18 }, { ptr, i64 } { ptr @tn.str.75, i64 7 }, { ptr, i64 } { ptr @tn.str.76, i64 6 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 15 }, { ptr, i64 } { ptr @tn.str.79, i64 12 }, { ptr, i64 } { ptr @tn.str.80, i64 12 }, { ptr, i64 } { ptr @tn.str.81, i64 10 }, { ptr, i64 } { ptr @tn.str.82, i64 5 }, { ptr, i64 } { ptr @tn.str.83, i64 10 }, { ptr, i64 } { ptr @tn.str.84, i64 5 }, { ptr, i64 } { ptr @tn.str.85, i64 12 }, { ptr, i64 } { ptr @tn.str.86, i64 4 }, { ptr, i64 } { ptr @tn.str.87, i64 6 }, { ptr, i64 } { ptr @tn.str.88, i64 7 }, { ptr, i64 } { ptr @tn.str.89, i64 5 }, { ptr, i64 } { ptr @tn.str.90, i64 4 }, { ptr, i64 } { ptr @tn.str.91, i64 6 }, { ptr, i64 } { ptr @tn.str.92, i64 3 }, { ptr, i64 } { ptr @tn.str.93, i64 5 }, { ptr, i64 } { ptr @tn.str.94, i64 6 }, { ptr, i64 } { ptr @tn.str.95, i64 4 }, { ptr, i64 } { ptr @tn.str.96, i64 6 }, { ptr, i64 } { ptr @tn.str.97, i64 7 }, { ptr, i64 } { ptr @tn.str.98, i64 6 }, { ptr, i64 } { ptr @tn.str.99, i64 6 }, { ptr, i64 } { ptr @tn.str.100, i64 7 }, { ptr, i64 } { ptr @tn.str.101, i64 7 }, { ptr, i64 } { ptr @tn.str.102, i64 4 }, { ptr, i64 } { ptr @tn.str.103, i64 16 }, { ptr, i64 } { ptr @tn.str.104, i64 10 }, { ptr, i64 } { ptr @tn.str.105, i64 8 }, { ptr, i64 } { ptr @tn.str.106, i64 13 }, { ptr, i64 } { ptr @tn.str.107, i64 11 }, { ptr, i64 } { ptr @tn.str.108, i64 16 }, { ptr, i64 } { ptr @tn.str.109, i64 13 }, { ptr, i64 } { ptr @tn.str.110, i64 9 }, { ptr, i64 } { ptr @tn.str.111, i64 5 }, { ptr, i64 } { ptr @tn.str.112, i64 12 }, { ptr, i64 } { ptr @tn.str.113, i64 7 }, { ptr, i64 } { ptr @tn.str.114, i64 6 }, { ptr, i64 } { ptr @tn.str.115, i64 10 }, { ptr, i64 } { ptr @tn.str.116, i64 19 }, { ptr, i64 } { ptr @tn.str.117, i64 13 }, { ptr, i64 } { ptr @tn.str.118, i64 5 }, { ptr, i64 } { ptr @tn.str.119, i64 7 }, { ptr, i64 } { ptr @tn.str.120, i64 8 }, { ptr, i64 } { ptr @tn.str.121, i64 5 }, { ptr, i64 } { ptr @tn.str.122, i64 7 }, { ptr, i64 } { ptr @tn.str.123, i64 4 }, { ptr, i64 } { ptr @tn.str.124, i64 6 }, { ptr, i64 } { ptr @tn.str.125, i64 7 }, { ptr, i64 } { ptr @tn.str.126, i64 5 }, { ptr, i64 } { ptr @tn.str.127, i64 8 }, { ptr, i64 } { ptr @tn.str.128, i64 7 }, { ptr, i64 } { ptr @tn.str.129, i64 8 }] +@str.130 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.131 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.132 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.133 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.134 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.135 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.136 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.139 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.141 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.142 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.143 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.144 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.145 = private unnamed_addr constant [29 x i8] c"=== 19. Local Fn Return ===\0A\00", align 1 -@str.146 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.147 = private unnamed_addr constant [29 x i8] c"=== 19. Local Fn Return ===\0A\00", align 1 -@str.148 = private unnamed_addr constant [21 x i8] c"local-struct: {} {}\0A\00", align 1 -@str.149 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.150 = private unnamed_addr constant [21 x i8] c"local-struct: {} {}\0A\00", align 1 -@str.151 = private unnamed_addr constant [16 x i8] c"local-enum: {}\0A\00", align 1 -@str.152 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.153 = private unnamed_addr constant [16 x i8] c"local-enum: {}\0A\00", align 1 -@str.154 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.139 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.140 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 +@str.141 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.143 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.144 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.145 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.146 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.147 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.149 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.150 = private unnamed_addr constant [29 x i8] c"=== 19. Local Fn Return ===\0A\00", align 1 +@str.151 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.152 = private unnamed_addr constant [29 x i8] c"=== 19. Local Fn Return ===\0A\00", align 1 +@str.153 = private unnamed_addr constant [21 x i8] c"local-struct: {} {}\0A\00", align 1 +@str.154 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.155 = private unnamed_addr constant [21 x i8] c"local-struct: {} {}\0A\00", align 1 +@str.156 = private unnamed_addr constant [16 x i8] c"local-enum: {}\0A\00", align 1 +@str.157 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.158 = private unnamed_addr constant [16 x i8] c"local-enum: {}\0A\00", align 1 +@str.159 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.160 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.162 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.158 = private constant [5 x i8] c"line\00" -@fld.str.159 = private constant [4 x i8] c"col\00" -@fld.str.160 = 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.158, i64 4 }, { ptr, i64 } { ptr @fld.str.159, i64 3 }, { ptr, i64 } { ptr @fld.str.160, i64 4 }] -@str.161 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.162 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.163 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.164 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.165 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.166 = private constant [4 x i8] c"ctx\00" -@fld.str.167 = private constant [6 x i8] c"alloc\00" -@fld.str.168 = private constant [8 x i8] c"dealloc\00" -@field_names.169 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.166, i64 3 }, { ptr, i64 } { ptr @fld.str.167, i64 5 }, { ptr, i64 } { ptr @fld.str.168, i64 7 }] -@str.170 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.171 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.173 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.174 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.175 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.176 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.177 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.181 = private constant [12 x i8] c"alloc_count\00" -@field_names.182 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.181, i64 11 }] -@str.183 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.184 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.185 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.187 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.188 = private constant [5 x i8] c"next\00" -@fld.str.189 = private constant [4 x i8] c"cap\00" -@field_names.190 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.188, i64 4 }, { ptr, i64 } { ptr @fld.str.189, i64 3 }] -@str.191 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.192 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.193 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.194 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.195 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.196 = private constant [6 x i8] c"first\00" -@fld.str.197 = private constant [10 x i8] c"end_index\00" -@fld.str.198 = private constant [7 x i8] c"parent\00" -@field_names.199 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.196, i64 5 }, { ptr, i64 } { ptr @fld.str.197, i64 9 }, { ptr, i64 } { ptr @fld.str.198, i64 6 }] -@str.200 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.201 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.202 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.203 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.204 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.205 = private constant [4 x i8] c"buf\00" -@fld.str.206 = private constant [4 x i8] c"len\00" -@fld.str.207 = private constant [4 x i8] c"pos\00" -@field_names.208 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.205, i64 3 }, { ptr, i64 } { ptr @fld.str.206, i64 3 }, { ptr, i64 } { ptr @fld.str.207, i64 3 }] -@str.209 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.210 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.211 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.212 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.213 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.214 = private constant [7 x i8] c"parent\00" -@fld.str.215 = private constant [12 x i8] c"alloc_count\00" -@fld.str.216 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.217 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.218 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.214, i64 6 }, { ptr, i64 } { ptr @fld.str.215, i64 11 }, { ptr, i64 } { ptr @fld.str.216, i64 13 }, { ptr, i64 } { ptr @fld.str.217, i64 17 }] -@str.219 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.220 = private unnamed_addr constant [8 x i8] c"Context\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 -@fld.str.224 = private constant [10 x i8] c"allocator\00" -@fld.str.225 = private constant [5 x i8] c"data\00" -@field_names.226 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.224, i64 9 }, { ptr, i64 } { ptr @fld.str.225, i64 4 }] -@str.227 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.228 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 -@str.229 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.230 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.231 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.232 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.233 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.234 = private unnamed_addr constant [6 x i8] c"Point\00", align 1 -@str.235 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.236 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.237 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.238 = private constant [2 x i8] c"x\00" -@fld.str.239 = private constant [2 x i8] c"y\00" -@field_names.240 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.238, i64 1 }, { ptr, i64 } { ptr @fld.str.239, i64 1 }] -@str.241 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.242 = private unnamed_addr constant [11 x i8] c"Shape.rect\00", align 1 -@str.243 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.244 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.245 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.246 = private constant [2 x i8] c"w\00" -@fld.str.247 = private constant [2 x i8] c"h\00" -@field_names.248 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.246, i64 1 }, { ptr, i64 } { ptr @fld.str.247, i64 1 }] -@str.249 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.250 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.251 = private constant [6 x i8] c"macos\00" -@fld.str.252 = private constant [6 x i8] c"linux\00" -@fld.str.253 = private constant [8 x i8] c"windows\00" -@fld.str.254 = private constant [5 x i8] c"wasm\00" -@fld.str.255 = private constant [4 x i8] c"ios\00" -@fld.str.256 = private constant [8 x i8] c"android\00" -@fld.str.257 = private constant [8 x i8] c"unknown\00" -@field_names.258 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.251, i64 5 }, { ptr, i64 } { ptr @fld.str.252, i64 5 }, { ptr, i64 } { ptr @fld.str.253, i64 7 }, { ptr, i64 } { ptr @fld.str.254, i64 4 }, { ptr, i64 } { ptr @fld.str.255, i64 3 }, { ptr, i64 } { ptr @fld.str.256, i64 7 }, { ptr, i64 } { ptr @fld.str.257, i64 7 }] -@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 [2 x i8] c".\00", align 1 -@fld.str.262 = private constant [8 x i8] c"aarch64\00" -@fld.str.263 = private constant [7 x i8] c"x86_64\00" -@fld.str.264 = private constant [7 x i8] c"wasm32\00" -@fld.str.265 = private constant [7 x i8] c"wasm64\00" -@fld.str.266 = private constant [8 x i8] c"unknown\00" -@field_names.267 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.262, i64 7 }, { ptr, i64 } { ptr @fld.str.263, i64 6 }, { ptr, i64 } { ptr @fld.str.264, i64 6 }, { ptr, i64 } { ptr @fld.str.265, i64 6 }, { ptr, i64 } { ptr @fld.str.266, i64 7 }] -@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 [2 x i8] c".\00", align 1 -@fld.str.271 = private constant [7 x i8] c"circle\00" -@fld.str.272 = private constant [5 x i8] c"rect\00" -@fld.str.273 = private constant [5 x i8] c"none\00" -@field_names.274 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.271, i64 6 }, { ptr, i64 } { ptr @fld.str.272, i64 4 }, { ptr, i64 } { ptr @fld.str.273, i64 4 }] -@str.275 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.276 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.277 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.278 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.279 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.280 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.281 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.282 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.283 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.284 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.285 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.286 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.287 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.288 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.289 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.290 = private unnamed_addr constant [6 x i8] c"*void\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 [12 x i8] c"*CAllocator\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 [5 x i8] c"*GPA\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 [12 x i8] c"*ArenaChunk\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 [7 x i8] c"*Arena\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 [6 x i8] c"[*]u8\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 [10 x i8] c"*BufAlloc\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 [19 x i8] c"*TrackingAllocator\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 [13 x i8] c"**CAllocator\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 [5 x i8] c"*s64\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 [7 x i8] c"**void\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 [8 x i8] c"*string\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 [5 x i8] c"*Any\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 [7 x i8] c"*[]Any\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 [4 x i8] c"*u8\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 [6 x i8] c"*bool\00", align 1 -@str.336 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.337 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.338 = private unnamed_addr constant [7 x i8] c"*Point\00", align 1 -@str.339 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.340 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.341 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 -@str.342 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.343 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.344 = private unnamed_addr constant [8 x i8] c"*[2]Any\00", align 1 -@str.345 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.346 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.347 = private unnamed_addr constant [7 x i8] c"*Shape\00", align 1 -@str.348 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.349 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.350 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 -@str.351 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@fld.str.163 = private constant [5 x i8] c"line\00" +@fld.str.164 = private constant [4 x i8] c"col\00" +@fld.str.165 = 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.163, i64 4 }, { ptr, i64 } { ptr @fld.str.164, i64 3 }, { ptr, i64 } { ptr @fld.str.165, i64 4 }] +@str.166 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.167 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.170 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.171 = private constant [4 x i8] c"ctx\00" +@fld.str.172 = private constant [6 x i8] c"alloc\00" +@fld.str.173 = private constant [8 x i8] c"dealloc\00" +@field_names.174 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.171, i64 3 }, { ptr, i64 } { ptr @fld.str.172, i64 5 }, { ptr, i64 } { ptr @fld.str.173, i64 7 }] +@str.175 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.176 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.177 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.178 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.179 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.180 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.181 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.182 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.183 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.186 = private constant [12 x i8] c"alloc_count\00" +@field_names.187 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.186, i64 11 }] +@str.188 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.189 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.190 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.191 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.192 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.193 = private constant [5 x i8] c"next\00" +@fld.str.194 = private constant [4 x i8] c"cap\00" +@field_names.195 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.193, i64 4 }, { ptr, i64 } { ptr @fld.str.194, i64 3 }] +@str.196 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.197 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.198 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.199 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.200 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.201 = private constant [6 x i8] c"first\00" +@fld.str.202 = private constant [10 x i8] c"end_index\00" +@fld.str.203 = private constant [7 x i8] c"parent\00" +@field_names.204 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.201, i64 5 }, { ptr, i64 } { ptr @fld.str.202, i64 9 }, { ptr, i64 } { ptr @fld.str.203, i64 6 }] +@str.205 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.206 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.207 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.208 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.209 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.210 = private constant [4 x i8] c"buf\00" +@fld.str.211 = private constant [4 x i8] c"len\00" +@fld.str.212 = private constant [4 x i8] c"pos\00" +@field_names.213 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.210, i64 3 }, { ptr, i64 } { ptr @fld.str.211, i64 3 }, { ptr, i64 } { ptr @fld.str.212, i64 3 }] +@str.214 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.215 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.216 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.217 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.218 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.219 = private constant [7 x i8] c"parent\00" +@fld.str.220 = private constant [12 x i8] c"alloc_count\00" +@fld.str.221 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.222 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.223 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.219, i64 6 }, { ptr, i64 } { ptr @fld.str.220, i64 11 }, { ptr, i64 } { ptr @fld.str.221, i64 13 }, { ptr, i64 } { ptr @fld.str.222, i64 17 }] +@str.224 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.225 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.226 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.227 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.228 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.229 = private constant [10 x i8] c"allocator\00" +@fld.str.230 = private constant [5 x i8] c"data\00" +@field_names.231 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.229, i64 9 }, { ptr, i64 } { ptr @fld.str.230, i64 4 }] +@str.232 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.233 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 +@str.234 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.235 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.236 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.237 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.238 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.239 = private unnamed_addr constant [6 x i8] c"Point\00", align 1 +@str.240 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.241 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.242 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.243 = private constant [2 x i8] c"x\00" +@fld.str.244 = private constant [2 x i8] c"y\00" +@field_names.245 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.243, i64 1 }, { ptr, i64 } { ptr @fld.str.244, i64 1 }] +@str.246 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.247 = private unnamed_addr constant [11 x i8] c"Shape.rect\00", align 1 +@str.248 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.249 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.250 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.251 = private constant [2 x i8] c"w\00" +@fld.str.252 = private constant [2 x i8] c"h\00" +@field_names.253 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.251, i64 1 }, { ptr, i64 } { ptr @fld.str.252, i64 1 }] +@str.254 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.255 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.256 = private constant [6 x i8] c"macos\00" +@fld.str.257 = private constant [6 x i8] c"linux\00" +@fld.str.258 = private constant [8 x i8] c"windows\00" +@fld.str.259 = private constant [5 x i8] c"wasm\00" +@fld.str.260 = private constant [4 x i8] c"ios\00" +@fld.str.261 = private constant [8 x i8] c"android\00" +@fld.str.262 = private constant [8 x i8] c"unknown\00" +@field_names.263 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.256, i64 5 }, { ptr, i64 } { ptr @fld.str.257, i64 5 }, { ptr, i64 } { ptr @fld.str.258, i64 7 }, { ptr, i64 } { ptr @fld.str.259, i64 4 }, { ptr, i64 } { ptr @fld.str.260, i64 3 }, { ptr, i64 } { ptr @fld.str.261, i64 7 }, { ptr, i64 } { ptr @fld.str.262, i64 7 }] +@str.264 = private unnamed_addr constant [2 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 +@fld.str.267 = private constant [8 x i8] c"aarch64\00" +@fld.str.268 = private constant [7 x i8] c"x86_64\00" +@fld.str.269 = private constant [7 x i8] c"wasm32\00" +@fld.str.270 = private constant [7 x i8] c"wasm64\00" +@fld.str.271 = private constant [8 x i8] c"unknown\00" +@field_names.272 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.267, i64 7 }, { ptr, i64 } { ptr @fld.str.268, i64 6 }, { ptr, i64 } { ptr @fld.str.269, i64 6 }, { ptr, i64 } { ptr @fld.str.270, i64 6 }, { ptr, i64 } { ptr @fld.str.271, i64 7 }] +@str.273 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.274 = private unnamed_addr constant [2 x i8] c")\00", align 1 +@str.275 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.276 = private constant [7 x i8] c"circle\00" +@fld.str.277 = private constant [5 x i8] c"rect\00" +@fld.str.278 = private constant [5 x i8] c"none\00" +@field_names.279 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.276, i64 6 }, { ptr, i64 } { ptr @fld.str.277, i64 4 }, { ptr, i64 } { ptr @fld.str.278, i64 4 }] +@str.280 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.281 = private unnamed_addr constant [2 x i8] c")\00", align 1 +@str.282 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.283 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.284 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.285 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.286 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.287 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.288 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.289 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.290 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.291 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.292 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.293 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.294 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.295 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.296 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.297 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.298 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 +@str.299 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.300 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.301 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 +@str.302 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.303 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.304 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.305 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.306 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.307 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.308 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.309 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.310 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.311 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.312 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.313 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.314 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.315 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.316 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.317 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.318 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.319 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.320 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.321 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.322 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.323 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.324 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.325 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.326 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.327 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.328 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.329 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.330 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.331 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.332 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.333 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.334 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.335 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.336 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.337 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.338 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.339 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.340 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.341 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.342 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.343 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.344 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.345 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.346 = private unnamed_addr constant [7 x i8] c"*Point\00", align 1 +@str.347 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.348 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.349 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.350 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.351 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.352 = private unnamed_addr constant [8 x i8] c"*[2]Any\00", align 1 +@str.353 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.354 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.355 = private unnamed_addr constant [7 x i8] c"*Shape\00", align 1 +@str.356 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.357 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.358 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.359 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -464,38 +471,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -508,50 +520,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.36, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.34, i64 4 }, %if.then.54 ], [ { ptr @str.35, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.37, i64 4 }, %if.then.78 ], [ { ptr @str.38, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -565,19 +705,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -594,15 +734,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -620,16 +760,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -646,17 +786,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -719,39 +859,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.219 + br label %while.hdr.241 -while.hdr.219: ; preds = %if.merge.224, %entry +while.hdr.241: ; preds = %if.merge.246, %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.220, label %while.exit.221 + br i1 %icmp, label %while.body.242, label %while.exit.243 -while.body.220: ; preds = %while.hdr.219 +while.body.242: ; preds = %while.hdr.241 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.222, label %if.else.223 + br i1 %icmpN, label %if.then.244, label %if.else.245 -while.exit.221: ; preds = %while.hdr.219 +while.exit.243: ; preds = %while.hdr.241 ret void -if.then.222: ; preds = %while.body.220 +if.then.244: ; preds = %while.body.242 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.224 + br label %if.merge.246 -if.else.223: ; preds = %while.body.220 +if.else.245: ; preds = %while.body.242 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.224 + br label %if.merge.246 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi i64 [ %addN, %if.then.222 ], [ %addN, %if.else.223 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi i64 [ %addN, %if.then.244 ], [ %addN, %if.else.245 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -764,37 +904,29 @@ if.merge.224: ; preds = %if.else.223, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.219 + br label %while.hdr.241 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.209, label %if.merge.210 - -if.then.209: ; preds = %entry - ret { ptr, i64 } { ptr @str.36, i64 1 } - -if.merge.210: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.211, label %if.merge.212 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.211: ; preds = %if.merge.210 +if.then.58: ; 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.212 + br label %if.merge.59 -if.merge.212: ; preds = %if.then.211, %if.merge.210 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -807,15 +939,15 @@ if.merge.212: ; preds = %if.then.211, %if.me 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.213, label %if.merge.214 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.213: ; preds = %if.merge.212 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.214 + br label %if.merge.61 -if.merge.214: ; preds = %if.then.213, %if.merge.212 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -828,15 +960,15 @@ if.merge.214: ; preds = %if.then.213, %if.me 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.215, label %if.merge.216 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.215: ; preds = %if.merge.214 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.216 + br label %if.merge.63 -if.merge.216: ; preds = %if.then.215, %if.merge.214 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -849,65 +981,116 @@ if.merge.216: ; preds = %if.then.215, %if.me 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.217, label %if.merge.218 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.217: ; preds = %if.merge.216 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.218 + br label %if.merge.65 -if.merge.218: ; preds = %if.then.217, %if.merge.216 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.239, label %if.merge.240 + +if.then.239: ; preds = %entry + ret { ptr, i64 } { ptr @str.39, i64 1 } + +if.merge.240: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.225 + br label %while.hdr.247 -while.hdr.225: ; preds = %if.merge.229, %if.merge.218 +while.hdr.247: ; preds = %if.merge.251, %if.merge.240 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.226, label %while.exit.227 + br i1 %icmpN, label %while.body.248, label %while.exit.249 -while.body.226: ; preds = %while.hdr.225 +while.body.248: ; preds = %while.hdr.247 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.228, label %if.merge.229 + br i1 %icmpN, label %if.then.250, label %if.merge.251 -while.exit.227: ; preds = %if.then.228, %while.hdr.225 +while.exit.249: ; preds = %if.then.250, %while.hdr.247 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.228: ; preds = %while.body.226 - br label %while.exit.227 +if.then.250: ; preds = %while.body.248 + br label %while.exit.249 -if.merge.229: ; preds = %while.body.226 +if.merge.251: ; preds = %while.body.248 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.225 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.247 } ; Function Attrs: nounwind @@ -986,7 +1169,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.37, i64 3 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.40, 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 @@ -994,565 +1177,592 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 39, label %match.arm.43 + i64 41, label %match.arm.43 + i64 42, label %match.arm.43 + i64 37, label %match.arm.44 i64 38, label %match.arm.44 - i64 40, label %match.arm.44 - i64 41, label %match.arm.44 - i64 36, label %match.arm.45 - i64 37, label %match.arm.45 - i64 42, label %match.arm.45 - i64 54, label %match.arm.48 - i64 57, label %match.arm.48 - i64 35, label %match.arm.49 + i64 43, label %match.arm.44 + i64 35, label %match.arm.47 + i64 55, label %match.arm.47 + i64 58, label %match.arm.47 + i64 36, label %match.arm.48 + i64 48, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 44, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 i64 47, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 48, label %match.arm.50 - i64 49, label %match.arm.50 - i64 50, label %match.arm.50 - i64 51, label %match.arm.50 - i64 52, label %match.arm.50 - i64 53, label %match.arm.50 - i64 55, label %match.arm.50 - i64 56, label %match.arm.50 - i64 58, label %match.arm.50 - i64 13, label %match.arm.52 + i64 49, label %match.arm.49 + i64 50, label %match.arm.49 + i64 51, label %match.arm.49 + i64 52, label %match.arm.49 + i64 53, label %match.arm.49 + i64 54, label %match.arm.49 + i64 56, label %match.arm.49 + i64 57, label %match.arm.49 + i64 59, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.183, %dispatch.merge.169, %dispatch.merge.155, %dispatch.merge.144, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.213, %dispatch.merge.199, %dispatch.merge.179, %dispatch.merge.168, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.38, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.41, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [89 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 38, label %dispatch.case.81 - i64 40, label %dispatch.case.82 - i64 41, label %dispatch.case.83 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 39, label %dispatch.case.105 + i64 41, label %dispatch.case.106 + i64 42, label %dispatch.case.107 ] -match.arm.45: ; preds = %entry, %entry, %entry +match.arm.44: ; preds = %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.145 [ - i64 36, label %dispatch.case.146 - i64 37, label %dispatch.case.147 - i64 42, label %dispatch.case.148 + switch i64 %ua.raw20, label %dispatch.default.169 [ + i64 37, label %dispatch.case.170 + i64 38, label %dispatch.case.171 + i64 43, label %dispatch.case.172 ] +match.arm.45: ; No predecessors! + unreachable + match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable +match.arm.47: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.180 [ + i64 35, label %dispatch.case.181 + i64 55, label %dispatch.case.182 + i64 58, label %dispatch.case.183 + ] match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.156 [ - i64 54, label %dispatch.case.157 - i64 57, label %dispatch.case.158 + switch i64 %ua.raw28, label %dispatch.default.200 [ + i64 36, label %dispatch.case.201 + i64 48, label %dispatch.case.202 ] -match.arm.49: ; preds = %entry, %entry +match.arm.49: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw32 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.170 [ - i64 35, label %dispatch.case.171 - i64 47, label %dispatch.case.172 + switch i64 %ua.raw32, label %dispatch.default.214 [ + i64 18, label %dispatch.case.215 + i64 22, label %dispatch.case.216 + i64 24, label %dispatch.case.217 + i64 26, label %dispatch.case.218 + i64 28, label %dispatch.case.219 + i64 29, label %dispatch.case.220 + i64 31, label %dispatch.case.221 + i64 33, label %dispatch.case.222 + i64 44, label %dispatch.case.223 + i64 45, label %dispatch.case.224 + i64 46, label %dispatch.case.225 + i64 47, label %dispatch.case.226 + i64 49, label %dispatch.case.227 + i64 50, label %dispatch.case.228 + i64 51, label %dispatch.case.229 + i64 52, label %dispatch.case.230 + i64 53, label %dispatch.case.231 + i64 54, label %dispatch.case.232 + i64 56, label %dispatch.case.233 + i64 57, label %dispatch.case.234 + i64 59, label %dispatch.case.235 ] -match.arm.50: ; preds = %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.raw34 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.184 [ - i64 18, label %dispatch.case.185 - i64 22, label %dispatch.case.186 - i64 24, label %dispatch.case.187 - i64 26, label %dispatch.case.188 - i64 28, label %dispatch.case.189 - i64 29, label %dispatch.case.190 - i64 31, label %dispatch.case.191 - i64 33, label %dispatch.case.192 - i64 43, label %dispatch.case.193 - i64 44, label %dispatch.case.194 - i64 45, label %dispatch.case.195 - i64 46, label %dispatch.case.196 - i64 48, label %dispatch.case.197 - i64 49, label %dispatch.case.198 - i64 50, label %dispatch.case.199 - i64 51, label %dispatch.case.200 - i64 52, label %dispatch.case.201 - i64 53, label %dispatch.case.202 - i64 55, label %dispatch.case.203 - i64 56, label %dispatch.case.204 - i64 58, label %dispatch.case.205 - ] - -match.arm.51: ; No predecessors! +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [87 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [89 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.125, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.130, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load {}, ptr %ua.ptr80, align 1 - %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { i32, i32 }, ptr %ua.ptr84, align 4 - %callN = call { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %ua.load85) + %ua.load85 = load {}, ptr %ua.ptr84, align 1 + %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { float, float }, ptr %ua.ptr88, align 4 - %callN = call { ptr, i64 } @struct_to_string__Shape.rect(ptr %0, { float, float } %ua.load89) + %ua.load89 = load { i32, i32 }, ptr %ua.ptr88, align 4 + %callN = call { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.144: ; preds = %dispatch.case.148, %dispatch.case.147, %dispatch.case.146, %dispatch.default.145 +dispatch.case.107: ; preds = %match.arm.43 + %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr + %ua.load93 = load { float, float }, ptr %ua.ptr92, align 4 + %callN = call { ptr, i64 } @struct_to_string__Shape.rect(ptr %0, { float, float } %ua.load93) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.168: ; preds = %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.default.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.145: ; preds = %match.arm.45 - store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.144 +dispatch.default.169: ; preds = %match.arm.44 + store { ptr, i64 } { ptr @str.131, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.168 -dispatch.case.146: ; preds = %match.arm.45 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw92) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 - -dispatch.case.147: ; preds = %match.arm.45 - %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw94) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 - -dispatch.case.148: ; preds = %match.arm.45 +dispatch.case.170: ; preds = %match.arm.44 %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr97 = inttoptr i64 %ua.raw96 to ptr - %ua.load98 = load { i64, [8 x i8] }, ptr %ua.ptr97, align 8 - %callN = call { ptr, i64 } @enum_to_string__Shape(ptr %0, { i64, [8 x i8] } %ua.load98) + %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw96) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 + br label %dispatch.merge.168 -dispatch.merge.155: ; preds = %dispatch.case.158, %dispatch.case.157, %dispatch.default.156 +dispatch.case.171: ; preds = %match.arm.44 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw98) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.168 + +dispatch.case.172: ; preds = %match.arm.44 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr101 = inttoptr i64 %ua.raw100 to ptr + %ua.load102 = load { i64, [8 x i8] }, ptr %ua.ptr101, align 8 + %callN = call { ptr, i64 } @enum_to_string__Shape(ptr %0, { i64, [8 x i8] } %ua.load102) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.168 + +dispatch.merge.179: ; preds = %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.default.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.156: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.127, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.155 +dispatch.default.180: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.132, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.179 -dispatch.case.157: ; preds = %match.arm.48 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr - %ua.load103 = load [2 x { i64, i64 }], ptr %ua.ptr102, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %ua.load103) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.155 - -dispatch.case.158: ; preds = %match.arm.48 +dispatch.case.181: ; preds = %match.arm.47 %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr - %ua.load107 = load [1 x { i64, i64 }], ptr %ua.ptr106, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load107) + %ua.load107 = load [4 x i64], ptr %ua.ptr106, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.155 + br label %dispatch.merge.179 -dispatch.merge.169: ; preds = %dispatch.case.172, %dispatch.case.171, %dispatch.default.170 +dispatch.case.182: ; preds = %match.arm.47 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr + %ua.load111 = load [2 x { i64, i64 }], ptr %ua.ptr110, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %ua.load111) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.179 + +dispatch.case.183: ; preds = %match.arm.47 + %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.179 + +dispatch.merge.199: ; preds = %dispatch.case.202, %dispatch.case.201, %dispatch.default.200 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.170: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.128, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.169 +dispatch.default.200: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.133, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.199 -dispatch.case.171: ; preds = %match.arm.49 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr111 = inttoptr i64 %ua.raw110 to ptr - %ua.load112 = load { ptr, i64 }, ptr %ua.ptr111, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load112) +dispatch.case.201: ; preds = %match.arm.48 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr119 = inttoptr i64 %ua.raw118 to ptr + %ua.load120 = load { ptr, i64 }, ptr %ua.ptr119, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.169 + br label %dispatch.merge.199 -dispatch.case.172: ; preds = %match.arm.49 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr115 = inttoptr i64 %ua.raw114 to ptr - %ua.load116 = load { ptr, i64 }, ptr %ua.ptr115, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load116) +dispatch.case.202: ; preds = %match.arm.48 + %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__Any(ptr %0, { ptr, i64 } %ua.load124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.169 + br label %dispatch.merge.199 -dispatch.merge.183: ; preds = %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.default.184 +dispatch.merge.213: ; preds = %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.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.default.214 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.184: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.129, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.183 +dispatch.default.214: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.134, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.213 -dispatch.case.185: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw119 to ptr +dispatch.case.215: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw127 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.183 + br label %dispatch.merge.213 -dispatch.case.186: ; preds = %match.arm.50 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp122) +dispatch.case.216: ; preds = %match.arm.49 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.187: ; preds = %match.arm.50 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp125) +dispatch.case.217: ; preds = %match.arm.49 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.188: ; preds = %match.arm.50 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp128) +dispatch.case.218: ; preds = %match.arm.49 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.189: ; preds = %match.arm.50 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp131) +dispatch.case.219: ; preds = %match.arm.49 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.190: ; preds = %match.arm.50 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp134) +dispatch.case.220: ; preds = %match.arm.49 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.191: ; preds = %match.arm.50 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp137) +dispatch.case.221: ; preds = %match.arm.49 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.192: ; preds = %match.arm.50 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp140) +dispatch.case.222: ; preds = %match.arm.49 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.193: ; preds = %match.arm.50 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp143) +dispatch.case.223: ; preds = %match.arm.49 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.194: ; preds = %match.arm.50 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp146) +dispatch.case.224: ; preds = %match.arm.49 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.195: ; preds = %match.arm.50 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp149) +dispatch.case.225: ; preds = %match.arm.49 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.196: ; preds = %match.arm.50 - %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 - %iNp152 = inttoptr i64 %ua.raw151 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp152) +dispatch.case.226: ; preds = %match.arm.49 + %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 + %iNp160 = inttoptr i64 %ua.raw159 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp160) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.197: ; preds = %match.arm.50 - %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 - %iNp155 = inttoptr i64 %ua.raw154 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp155) +dispatch.case.227: ; preds = %match.arm.49 + %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 + %iNp163 = inttoptr i64 %ua.raw162 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp163) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.198: ; preds = %match.arm.50 - %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 - %iNp158 = inttoptr i64 %ua.raw157 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp158) +dispatch.case.228: ; preds = %match.arm.49 + %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 + %iNp166 = inttoptr i64 %ua.raw165 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp166) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.199: ; preds = %match.arm.50 - %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 - %iNp161 = inttoptr i64 %ua.raw160 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp161) +dispatch.case.229: ; preds = %match.arm.49 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %iNp169 = inttoptr i64 %ua.raw168 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp169) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.200: ; preds = %match.arm.50 - %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 - %iNp164 = inttoptr i64 %ua.raw163 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp164) +dispatch.case.230: ; preds = %match.arm.49 + %ua.raw171 = extractvalue { i64, i64 } %loadN, 1 + %iNp172 = inttoptr i64 %ua.raw171 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp172) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.201: ; preds = %match.arm.50 - %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 - %iNp167 = inttoptr i64 %ua.raw166 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Point(ptr %0, ptr %iNp167) +dispatch.case.231: ; preds = %match.arm.49 + %ua.raw174 = extractvalue { i64, i64 } %loadN, 1 + %iNp175 = inttoptr i64 %ua.raw174 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Point(ptr %0, ptr %iNp175) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.202: ; preds = %match.arm.50 - %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 - %iNp170 = inttoptr i64 %ua.raw169 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp170) +dispatch.case.232: ; preds = %match.arm.49 + %ua.raw177 = extractvalue { i64, i64 } %loadN, 1 + %iNp178 = inttoptr i64 %ua.raw177 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp178) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.203: ; preds = %match.arm.50 - %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 - %iNp173 = inttoptr i64 %ua.raw172 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_2_Any(ptr %0, ptr %iNp173) +dispatch.case.233: ; preds = %match.arm.49 + %ua.raw180 = extractvalue { i64, i64 } %loadN, 1 + %iNp181 = inttoptr i64 %ua.raw180 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_2_Any(ptr %0, ptr %iNp181) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.204: ; preds = %match.arm.50 - %ua.raw175 = extractvalue { i64, i64 } %loadN, 1 - %iNp176 = inttoptr i64 %ua.raw175 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Shape(ptr %0, ptr %iNp176) +dispatch.case.234: ; preds = %match.arm.49 + %ua.raw183 = extractvalue { i64, i64 } %loadN, 1 + %iNp184 = inttoptr i64 %ua.raw183 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Shape(ptr %0, ptr %iNp184) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 -dispatch.case.205: ; preds = %match.arm.50 - %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 - %iNp179 = inttoptr i64 %ua.raw178 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp179) +dispatch.case.235: ; preds = %match.arm.49 + %ua.raw186 = extractvalue { i64, i64 } %loadN, 1 + %iNp187 = inttoptr i64 %ua.raw186 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp187) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.183 + br label %dispatch.merge.213 } ; Function Attrs: nounwind @@ -1561,7 +1771,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.130, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.135, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1592,7 +1802,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1610,9 +1820,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1650,14 +1860,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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 @@ -1665,99 +1875,99 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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.133, i64 4 }) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.13 - -if.merge.13: ; preds = %if.then.12, %if.then.9 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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.135, 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.11 - -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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.137, 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.138, i64 4 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.13 + +if.merge.13: ; preds = %if.then.12, %if.then.9 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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.140, 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.11 + +if.then.23: ; preds = %if.else.10 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, 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.142, 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.138, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, 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.26 + br label %if.merge.25 -if.else.25: ; preds = %if.else.10 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 + br label %if.merge.25 -if.merge.26: ; preds = %if.else.25, %if.then.24 +if.merge.25: ; preds = %if.else.24, %if.then.23 br label %if.merge.11 -if.then.27: ; preds = %if.else.4 +if.then.26: ; preds = %if.else.4 %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.30, label %if.else.31 + br i1 %icmpN, label %if.then.29, label %if.else.30 -if.else.28: ; preds = %if.else.4 +if.else.27: ; preds = %if.else.4 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.29 + br label %if.merge.28 -if.merge.29: ; preds = %if.merge.32, %if.else.28 +if.merge.28: ; preds = %if.merge.31, %if.else.27 br label %if.merge.5 -if.then.30: ; preds = %if.then.27 +if.then.29: ; preds = %if.then.26 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1766,20 +1976,20 @@ if.then.30: ; preds = %if.then.27 %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.33, label %if.else.34 + br i1 %icmpN, label %if.then.32, label %if.else.33 -if.else.31: ; preds = %if.then.27 +if.else.30: ; preds = %if.then.26 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.32 + br label %if.merge.31 -if.merge.32: ; preds = %if.merge.35, %if.else.31 - br label %if.merge.29 +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 -if.then.33: ; preds = %if.then.30 +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 36 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, 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 @@ -1787,7 +1997,7 @@ if.then.33: ; preds = %if.then.30 %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.140, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -1798,27 +2008,27 @@ if.then.33: ; preds = %if.then.30 %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.141, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, 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.35 + br label %if.merge.34 -if.else.34: ; preds = %if.then.30 +if.else.33: ; preds = %if.then.29 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 -if.then.36: ; preds = %while.exit.2 +if.then.35: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 36 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, 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 @@ -1826,7 +2036,7 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, 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 @@ -1837,11 +2047,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -2033,34 +2243,40 @@ declare ptr @cstring.22(ptr, i64) #0 declare ptr @int_to_string.23(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @bool_to_string.24(ptr, i1) #0 +declare ptr @uint_to_string.24(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @float_to_string.25(ptr, double) #0 +declare ptr @bool_to_string.25(ptr, i1) #0 ; Function Attrs: nounwind -declare void @hex_group.26(ptr, ptr, i64, i64) #0 +declare ptr @float_to_string.26(ptr, double) #0 ; Function Attrs: nounwind -declare ptr @int_to_hex_string.27(ptr, i64) #0 +declare void @hex_group.27(ptr, ptr, i64, i64) #0 ; Function Attrs: nounwind -declare ptr @concat.28(ptr, ptr, ptr) #0 +declare [4 x i64] @decompose_u16x4.28(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @substr.29(ptr, ptr, i64, i64) #0 +declare ptr @int_to_hex_string.29(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @xml_escape.30(ptr, ptr) #0 +declare ptr @concat.30(ptr, ptr, ptr) #0 ; Function Attrs: nounwind -declare ptr @path_join.31(ptr, ptr) #0 +declare ptr @substr.31(ptr, ptr, i64, i64) #0 ; Function Attrs: nounwind -declare ptr @any_to_string.32(ptr, [2 x i64]) #0 +declare ptr @xml_escape.32(ptr, ptr) #0 ; Function Attrs: nounwind -declare ptr @build_format.33(ptr, ptr) #0 +declare ptr @path_join.33(ptr, ptr) #0 + +; Function Attrs: nounwind +declare ptr @any_to_string.34(ptr, [2 x i64]) #0 + +; Function Attrs: nounwind +declare ptr @build_format.35(ptr, ptr) #0 ; Function Attrs: nounwind declare ptr @cwd_greet(ptr) #0 @@ -2112,14 +2328,14 @@ entry: define internal void @print__ct_s4f0c3447f66dcf6d__pack(ptr %0) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.145, i64 28 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.150, i64 28 }, 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.146, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.151, 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 28) @@ -2135,7 +2351,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.147, i64 28 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.152, i64 28 }) ret { ptr, i64 } %call } @@ -2149,7 +2365,7 @@ entry: define internal void @print__ct_s546acbc299164a0e__pack_s32_s32(ptr %0, i32 %1, i32 %2) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.148, i64 20 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.153, i64 20 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca i32, align 4 @@ -2172,7 +2388,7 @@ entry: %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 2, ptr %gepN, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.149, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.154, 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 14) @@ -2212,7 +2428,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.150, i64 20 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.155, i64 20 }) ret { ptr, i64 } %call } @@ -2232,7 +2448,7 @@ entry: define internal void @print__ct_scc8edc2d4140bd92__pack_Shape(ptr %0, { i64, [8 x i8] } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.151, i64 15 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.156, i64 15 }, ptr %alloca, align 8 %allocaN = alloca { i64, [8 x i8] }, align 8 store { i64, [8 x i8] } %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2240,7 +2456,7 @@ entry: %ba.tmp = alloca { i64, [8 x i8] }, align 8 store { i64, [8 x i8] } %load, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 43, i64 undef }, i64 %ba.p2i, 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 @@ -2250,7 +2466,7 @@ entry: %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.152, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.157, 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) @@ -2261,7 +2477,7 @@ entry: %ba.tmp12 = alloca { i64, [8 x i8] }, align 8 store { i64, [8 x i8] } %loadN, ptr %ba.tmp12, align 8 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 43, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2280,7 +2496,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.153, i64 15 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.158, i64 15 }) ret { ptr, i64 } %call } @@ -2289,35 +2505,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.154, i64 15 }, { ptr, i64 } { ptr @str.155, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.159, i64 15 }, { ptr, i64 } { ptr @str.160, 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.84 + br label %while.hdr.108 -while.hdr.84: ; preds = %fv.merge, %entry +while.hdr.108: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.85, label %while.exit.86 + br i1 %icmp, label %while.body.109, label %while.exit.110 -while.body.85: ; preds = %while.hdr.84 +while.body.109: ; preds = %while.hdr.108 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.87, label %if.merge.88 + br i1 %icmpN, label %if.then.111, label %if.merge.112 -while.exit.86: ; preds = %while.hdr.84 +while.exit.110: ; preds = %while.hdr.108 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 1 }) ret { ptr, i64 } %callN -if.then.87: ; preds = %while.body.85 +if.then.111: ; preds = %while.body.109 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.88 + br label %if.merge.112 -if.merge.88: ; preds = %if.then.87, %while.body.85 +if.merge.112: ; preds = %if.then.111, %while.body.109 %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 @@ -2325,7 +2541,7 @@ if.merge.88: ; preds = %if.then.87, %while. %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.161, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, 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 @@ -2345,12 +2561,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.84 + br label %while.hdr.108 -fv.default: ; preds = %if.merge.88 +fv.default: ; preds = %if.merge.112 br label %fv.merge -fv.case: ; preds = %if.merge.88 +fv.case: ; preds = %if.merge.112 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2358,19 +2574,19 @@ fv.case: ; preds = %if.merge.88 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.88 +fv.case17: ; preds = %if.merge.112 %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.88 +fv.case20: ; preds = %if.merge.112 %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.88 +fv.case24: ; preds = %if.merge.112 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2384,43 +2600,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.162, i64 9 }, { ptr, i64 } { ptr @str.163, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.167, i64 9 }, { ptr, i64 } { ptr @str.168, 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.89 + br label %while.hdr.113 -while.hdr.89: ; preds = %fv.merge, %entry +while.hdr.113: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.90, label %while.exit.91 + br i1 %icmp, label %while.body.114, label %while.exit.115 -while.body.90: ; preds = %while.hdr.89 +while.body.114: ; preds = %while.hdr.113 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.92, label %if.merge.93 + br i1 %icmpN, label %if.then.116, label %if.merge.117 -while.exit.91: ; preds = %while.hdr.89 +while.exit.115: ; preds = %while.hdr.113 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 1 }) ret { ptr, i64 } %callN -if.then.92: ; preds = %while.body.90 +if.then.116: ; preds = %while.body.114 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.93 + br label %if.merge.117 -if.merge.93: ; preds = %if.then.92, %while.body.90 +if.merge.117: ; preds = %if.then.116, %while.body.114 %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.169, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.174, 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.170, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8 @@ -2439,24 +2655,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.89 + br label %while.hdr.113 -fv.default: ; preds = %if.merge.93 +fv.default: ; preds = %if.merge.117 br label %fv.merge -fv.case: ; preds = %if.merge.93 +fv.case: ; preds = %if.merge.117 %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.93 +fv.case17: ; preds = %if.merge.117 %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.93 +fv.case21: ; preds = %if.merge.117 %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 @@ -2468,43 +2684,43 @@ 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.171, i64 10 }, { ptr, i64 } { ptr @str.172, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.176, i64 10 }, { ptr, i64 } { ptr @str.177, 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.94 + br label %while.hdr.118 -while.hdr.94: ; preds = %if.merge.98, %entry +while.hdr.118: ; preds = %if.merge.122, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.95, label %while.exit.96 + br i1 %icmp, label %while.body.119, label %while.exit.120 -while.body.95: ; preds = %while.hdr.94 +while.body.119: ; preds = %while.hdr.118 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.97, label %if.merge.98 + br i1 %icmpN, label %if.then.121, label %if.merge.122 -while.exit.96: ; preds = %while.hdr.94 +while.exit.120: ; preds = %while.hdr.118 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) ret { ptr, i64 } %callN -if.then.97: ; preds = %while.body.95 +if.then.121: ; preds = %while.body.119 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.98 + br label %if.merge.122 -if.merge.98: ; preds = %if.then.97, %while.body.95 +if.merge.122: ; preds = %if.then.121, %while.body.119 %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.175, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.180, 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.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2515,7 +2731,7 @@ if.merge.98: ; preds = %if.then.97, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.94 + br label %while.hdr.118 } ; Function Attrs: nounwind @@ -2523,43 +2739,43 @@ 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.177, i64 3 }, { ptr, i64 } { ptr @str.178, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 3 }, { ptr, i64 } { ptr @str.183, 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.99 + br label %while.hdr.123 -while.hdr.99: ; preds = %fv.merge, %entry +while.hdr.123: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.100, label %while.exit.101 + br i1 %icmp, label %while.body.124, label %while.exit.125 -while.body.100: ; preds = %while.hdr.99 +while.body.124: ; preds = %while.hdr.123 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.102, label %if.merge.103 + br i1 %icmpN, label %if.then.126, label %if.merge.127 -while.exit.101: ; preds = %while.hdr.99 +while.exit.125: ; preds = %while.hdr.123 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) ret { ptr, i64 } %callN -if.then.102: ; preds = %while.body.100 +if.then.126: ; preds = %while.body.124 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.103 + br label %if.merge.127 -if.merge.103: ; preds = %if.then.102, %while.body.100 +if.merge.127: ; preds = %if.then.126, %while.body.124 %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.182, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.187, 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.183, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, 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 @@ -2576,12 +2792,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.99 + br label %while.hdr.123 -fv.default: ; preds = %if.merge.103 +fv.default: ; preds = %if.merge.127 br label %fv.merge -fv.case: ; preds = %if.merge.103 +fv.case: ; preds = %if.merge.127 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2592,43 +2808,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.184, i64 10 }, { ptr, i64 } { ptr @str.185, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.189, i64 10 }, { ptr, i64 } { ptr @str.190, 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.104 + br label %while.hdr.128 -while.hdr.104: ; preds = %fv.merge, %entry +while.hdr.128: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.105, label %while.exit.106 + br i1 %icmp, label %while.body.129, label %while.exit.130 -while.body.105: ; preds = %while.hdr.104 +while.body.129: ; preds = %while.hdr.128 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.107, label %if.merge.108 + br i1 %icmpN, label %if.then.131, label %if.merge.132 -while.exit.106: ; preds = %while.hdr.104 +while.exit.130: ; preds = %while.hdr.128 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) ret { ptr, i64 } %callN -if.then.107: ; preds = %while.body.105 +if.then.131: ; preds = %while.body.129 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.108 + br label %if.merge.132 -if.merge.108: ; preds = %if.then.107, %while.body.105 +if.merge.132: ; preds = %if.then.131, %while.body.129 %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.190, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.195, 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.191, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, 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 @@ -2646,18 +2862,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.104 + br label %while.hdr.128 -fv.default: ; preds = %if.merge.108 +fv.default: ; preds = %if.merge.132 br label %fv.merge -fv.case: ; preds = %if.merge.108 +fv.case: ; preds = %if.merge.132 %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.108 +fv.case17: ; preds = %if.merge.132 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2668,43 +2884,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.192, i64 5 }, { ptr, i64 } { ptr @str.193, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 5 }, { ptr, i64 } { ptr @str.198, 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.109 + br label %while.hdr.133 -while.hdr.109: ; preds = %fv.merge, %entry +while.hdr.133: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.110, label %while.exit.111 + br i1 %icmp, label %while.body.134, label %while.exit.135 -while.body.110: ; preds = %while.hdr.109 +while.body.134: ; preds = %while.hdr.133 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.112, label %if.merge.113 + br i1 %icmpN, label %if.then.136, label %if.merge.137 -while.exit.111: ; preds = %while.hdr.109 +while.exit.135: ; preds = %while.hdr.133 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.199, i64 1 }) ret { ptr, i64 } %callN -if.then.112: ; preds = %while.body.110 +if.then.136: ; preds = %while.body.134 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.200, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.113 + br label %if.merge.137 -if.merge.113: ; preds = %if.then.112, %while.body.110 +if.merge.137: ; preds = %if.then.136, %while.body.134 %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.199, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.204, 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.200, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.205, 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 @@ -2723,23 +2939,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.109 + br label %while.hdr.133 -fv.default: ; preds = %if.merge.113 +fv.default: ; preds = %if.merge.137 br label %fv.merge -fv.case: ; preds = %if.merge.113 +fv.case: ; preds = %if.merge.137 %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.113 +fv.case17: ; preds = %if.merge.137 %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.113 +fv.case20: ; preds = %if.merge.137 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2753,43 +2969,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.201, i64 8 }, { ptr, i64 } { ptr @str.202, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 8 }, { ptr, i64 } { ptr @str.207, 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.114 + br label %while.hdr.138 -while.hdr.114: ; preds = %fv.merge, %entry +while.hdr.138: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.115, label %while.exit.116 + br i1 %icmp, label %while.body.139, label %while.exit.140 -while.body.115: ; preds = %while.hdr.114 +while.body.139: ; preds = %while.hdr.138 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.117, label %if.merge.118 + br i1 %icmpN, label %if.then.141, label %if.merge.142 -while.exit.116: ; preds = %while.hdr.114 +while.exit.140: ; preds = %while.hdr.138 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.203, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 1 }) ret { ptr, i64 } %callN -if.then.117: ; preds = %while.body.115 +if.then.141: ; preds = %while.body.139 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.204, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.118 + br label %if.merge.142 -if.merge.118: ; preds = %if.then.117, %while.body.115 +if.merge.142: ; preds = %if.then.141, %while.body.139 %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.208, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.213, 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.209, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.214, 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 @@ -2808,23 +3024,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.114 + br label %while.hdr.138 -fv.default: ; preds = %if.merge.118 +fv.default: ; preds = %if.merge.142 br label %fv.merge -fv.case: ; preds = %if.merge.118 +fv.case: ; preds = %if.merge.142 %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.118 +fv.case17: ; preds = %if.merge.142 %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.118 +fv.case20: ; preds = %if.merge.142 %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 @@ -2835,43 +3051,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.210, i64 17 }, { ptr, i64 } { ptr @str.211, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 17 }, { ptr, i64 } { ptr @str.216, 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.119 + br label %while.hdr.143 -while.hdr.119: ; preds = %fv.merge, %entry +while.hdr.143: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.120, label %while.exit.121 + br i1 %icmp, label %while.body.144, label %while.exit.145 -while.body.120: ; preds = %while.hdr.119 +while.body.144: ; preds = %while.hdr.143 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.122, label %if.merge.123 + br i1 %icmpN, label %if.then.146, label %if.merge.147 -while.exit.121: ; preds = %while.hdr.119 +while.exit.145: ; preds = %while.hdr.143 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.212, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.217, i64 1 }) ret { ptr, i64 } %callN -if.then.122: ; preds = %while.body.120 +if.then.146: ; preds = %while.body.144 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.218, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.123 + br label %if.merge.147 -if.merge.123: ; preds = %if.then.122, %while.body.120 +if.merge.147: ; preds = %if.then.146, %while.body.144 %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.218, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.223, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, 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 @@ -2891,12 +3107,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.119 + br label %while.hdr.143 -fv.default: ; preds = %if.merge.123 +fv.default: ; preds = %if.merge.147 br label %fv.merge -fv.case: ; preds = %if.merge.123 +fv.case: ; preds = %if.merge.147 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2904,17 +3120,17 @@ fv.case: ; preds = %if.merge.123 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.123 +fv.case17: ; preds = %if.merge.147 %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.123 +fv.case20: ; preds = %if.merge.147 %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.123 +fv.case23: ; preds = %if.merge.147 %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 @@ -2925,43 +3141,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.220, i64 7 }, { ptr, i64 } { ptr @str.221, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 7 }, { ptr, i64 } { ptr @str.226, 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.124 + br label %while.hdr.148 -while.hdr.124: ; preds = %fv.merge, %entry +while.hdr.148: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.125, label %while.exit.126 + br i1 %icmp, label %while.body.149, label %while.exit.150 -while.body.125: ; preds = %while.hdr.124 +while.body.149: ; preds = %while.hdr.148 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.127, label %if.merge.128 + br i1 %icmpN, label %if.then.151, label %if.merge.152 -while.exit.126: ; preds = %while.hdr.124 +while.exit.150: ; preds = %while.hdr.148 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 1 }) ret { ptr, i64 } %callN -if.then.127: ; preds = %while.body.125 +if.then.151: ; preds = %while.body.149 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.128 + br label %if.merge.152 -if.merge.128: ; preds = %if.then.127, %while.body.125 +if.merge.152: ; preds = %if.then.151, %while.body.149 %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.226, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.231, 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.227, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.232, 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 @@ -2979,12 +3195,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.124 + br label %while.hdr.148 -fv.default: ; preds = %if.merge.128 +fv.default: ; preds = %if.merge.152 br label %fv.merge -fv.case: ; preds = %if.merge.128 +fv.case: ; preds = %if.merge.152 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2992,7 +3208,7 @@ fv.case: ; preds = %if.merge.128 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.128 +fv.case17: ; preds = %if.merge.152 %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 @@ -3004,43 +3220,43 @@ 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.228, i64 12 }, { ptr, i64 } { ptr @str.229, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 12 }, { ptr, i64 } { ptr @str.234, 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.129 + br label %while.hdr.153 -while.hdr.129: ; preds = %if.merge.133, %entry +while.hdr.153: ; preds = %if.merge.157, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.130, label %while.exit.131 + br i1 %icmp, label %while.body.154, label %while.exit.155 -while.body.130: ; preds = %while.hdr.129 +while.body.154: ; preds = %while.hdr.153 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.132, label %if.merge.133 + br i1 %icmpN, label %if.then.156, label %if.merge.157 -while.exit.131: ; preds = %while.hdr.129 +while.exit.155: ; preds = %while.hdr.153 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.230, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.235, i64 1 }) ret { ptr, i64 } %callN -if.then.132: ; preds = %while.body.130 +if.then.156: ; preds = %while.body.154 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.231, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.133 + br label %if.merge.157 -if.merge.133: ; preds = %if.then.132, %while.body.130 +if.merge.157: ; preds = %if.then.156, %while.body.154 %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.232, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.237, 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.233, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.238, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -3051,7 +3267,7 @@ if.merge.133: ; preds = %if.then.132, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.153 } ; Function Attrs: nounwind @@ -3059,43 +3275,43 @@ define internal { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %1) # entry: %alloca = alloca { i32, i32 }, align 8 store { i32, i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 5 }, { ptr, i64 } { ptr @str.235, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 5 }, { ptr, i64 } { ptr @str.240, 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.134 + br label %while.hdr.158 -while.hdr.134: ; preds = %fv.merge, %entry +while.hdr.158: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.135, label %while.exit.136 + br i1 %icmp, label %while.body.159, label %while.exit.160 -while.body.135: ; preds = %while.hdr.134 +while.body.159: ; preds = %while.hdr.158 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.137, label %if.merge.138 + br i1 %icmpN, label %if.then.161, label %if.merge.162 -while.exit.136: ; preds = %while.hdr.134 +while.exit.160: ; preds = %while.hdr.158 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.241, i64 1 }) ret { ptr, i64 } %callN -if.then.137: ; preds = %while.body.135 +if.then.161: ; preds = %while.body.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.237, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.242, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.138 + br label %if.merge.162 -if.merge.138: ; preds = %if.then.137, %while.body.135 +if.merge.162: ; preds = %if.then.161, %while.body.159 %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.240, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.245, 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.241, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.246, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32, i32 }, ptr %alloca, align 4 @@ -3113,18 +3329,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.134 + br label %while.hdr.158 -fv.default: ; preds = %if.merge.138 +fv.default: ; preds = %if.merge.162 br label %fv.merge -fv.case: ; preds = %if.merge.138 +fv.case: ; preds = %if.merge.162 %fv.field = extractvalue { i32, i32 } %loadN, 0 %sN = sext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.138 +fv.case17: ; preds = %if.merge.162 %fv.field18 = extractvalue { i32, i32 } %loadN, 1 %sN = sext i32 %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 @@ -3136,43 +3352,43 @@ define internal { ptr, i64 } @struct_to_string__Shape.rect(ptr %0, { float, floa entry: %alloca = alloca { float, float }, align 8 store { float, float } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 10 }, { ptr, i64 } { ptr @str.243, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 10 }, { ptr, i64 } { ptr @str.248, 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.139 + br label %while.hdr.163 -while.hdr.139: ; preds = %fv.merge, %entry +while.hdr.163: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.140, label %while.exit.141 + br i1 %icmp, label %while.body.164, label %while.exit.165 -while.body.140: ; preds = %while.hdr.139 +while.body.164: ; preds = %while.hdr.163 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.142, label %if.merge.143 + br i1 %icmpN, label %if.then.166, label %if.merge.167 -while.exit.141: ; preds = %while.hdr.139 +while.exit.165: ; preds = %while.hdr.163 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.244, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.249, i64 1 }) ret { ptr, i64 } %callN -if.then.142: ; preds = %while.body.140 +if.then.166: ; preds = %while.body.164 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.245, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.250, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.143 + br label %if.merge.167 -if.merge.143: ; preds = %if.then.142, %while.body.140 +if.merge.167: ; preds = %if.then.166, %while.body.164 %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.248, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.253, 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.249, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.254, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { float, float }, ptr %alloca, align 4 @@ -3190,19 +3406,19 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.139 + br label %while.hdr.163 -fv.default: ; preds = %if.merge.143 +fv.default: ; preds = %if.merge.167 br label %fv.merge -fv.case: ; preds = %if.merge.143 +fv.case: ; preds = %if.merge.167 %fv.field = extractvalue { float, float } %loadN, 0 %fNi32 = bitcast float %fv.field to i32 %zN = zext i32 %fNi32 to i64 %fv.val = insertvalue { i64, i64 } { i64 10, i64 undef }, i64 %zN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.143 +fv.case17: ; preds = %if.merge.167 %fv.field18 = extractvalue { float, float } %loadN, 1 %fNi3219 = bitcast float %fv.field18 to i32 %zN = zext i32 %fNi3219 to i64 @@ -3219,9 +3435,9 @@ entry: %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.258, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [7 x { ptr, i64 }], ptr @field_names.263, 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.250, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, 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 @@ -3235,18 +3451,18 @@ entry: %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.149, label %if.merge.150 + br i1 %icmp, label %if.then.173, label %if.merge.174 -if.then.149: ; preds = %entry +if.then.173: ; 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.260, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.265, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.264, 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.150 + br label %if.merge.174 -if.merge.150: ; preds = %if.then.149, %entry +if.merge.174: ; preds = %if.then.173, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3260,9 +3476,9 @@ entry: %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.267, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [5 x { ptr, i64 }], ptr @field_names.272, 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.261, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, 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 @@ -3276,18 +3492,18 @@ entry: %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.151, label %if.merge.152 + br i1 %icmp, label %if.then.175, label %if.merge.176 -if.then.151: ; preds = %entry +if.then.175: ; 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.269, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.274, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.273, 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.152 + br label %if.merge.176 -if.merge.152: ; preds = %if.then.151, %entry +if.merge.176: ; preds = %if.then.175, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3302,9 +3518,9 @@ entry: %allocaN = alloca i64, align 8 store i64 %etag, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 - %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.274, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.279, 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.270, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.275, i64 1 }, { ptr, i64 } %fn.load) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %loadN = load { i64, [8 x i8] }, ptr %alloca, align 8 @@ -3315,16 +3531,16 @@ entry: i64 2, label %fv.case11 ] -if.then.153: ; preds = %fv.merge +if.then.177: ; preds = %fv.merge %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.276, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.275, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.281, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, 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.154 + br label %if.merge.178 -if.merge.154: ; preds = %if.then.153, %fv.merge +if.merge.178: ; preds = %if.then.177, %fv.merge %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN @@ -3339,7 +3555,7 @@ fv.merge: ; preds = %fv.default, %fv.cas %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.153, label %if.merge.154 + br i1 %icmp, label %if.then.177, label %if.merge.178 fv.default: ; preds = %entry br label %fv.merge @@ -3362,46 +3578,96 @@ fv.case6: ; preds = %entry %ba.tmp = alloca { float, float }, align 8 store { float, float } %fv.field9, ptr %ba.tmp, align 4 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val10 = insertvalue { i64, i64 } { i64 41, i64 undef }, i64 %ba.p2i, 1 + %fv.val10 = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge fv.case11: ; preds = %entry br label %fv.merge } +; 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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.282, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.184 + +while.hdr.184: ; preds = %if.merge.188, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.185, label %while.exit.186 + +while.body.185: ; preds = %while.hdr.184 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.187, label %if.merge.188 + +while.exit.186: ; preds = %while.hdr.184 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.283, i64 1 }) + ret { ptr, i64 } %call + +if.then.187: ; preds = %while.body.185 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.284, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.188 + +if.merge.188: ; preds = %if.then.187, %while.body.185 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.184 +} + ; Function Attrs: nounwind define internal { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %1) #0 { entry: %alloca = alloca [2 x { i64, i64 }], align 8 store [2 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.277, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.285, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.159 + br label %while.hdr.189 -while.hdr.159: ; preds = %if.merge.163, %entry +while.hdr.189: ; preds = %if.merge.193, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.160, label %while.exit.161 + br i1 %icmp, label %while.body.190, label %while.exit.191 -while.body.160: ; preds = %while.hdr.159 +while.body.190: ; preds = %while.hdr.189 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.162, label %if.merge.163 + br i1 %icmpN, label %if.then.192, label %if.merge.193 -while.exit.161: ; preds = %while.hdr.159 +while.exit.191: ; preds = %while.hdr.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.278, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.286, i64 1 }) ret { ptr, i64 } %call -if.then.162: ; preds = %while.body.160 +if.then.192: ; preds = %while.body.190 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.279, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.287, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.163 + br label %if.merge.193 -if.merge.163: ; preds = %if.then.162, %while.body.160 +if.merge.193: ; preds = %if.then.192, %while.body.190 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load [2 x { i64, i64 }], ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3419,7 +3685,7 @@ if.merge.163: ; preds = %if.then.162, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.159 + br label %while.hdr.189 } ; Function Attrs: nounwind @@ -3428,33 +3694,33 @@ entry: %alloca = alloca [1 x { 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.280, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.288, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.164 + br label %while.hdr.194 -while.hdr.164: ; preds = %if.merge.168, %entry +while.hdr.194: ; preds = %if.merge.198, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.165, label %while.exit.166 + br i1 %icmp, label %while.body.195, label %while.exit.196 -while.body.165: ; preds = %while.hdr.164 +while.body.195: ; preds = %while.hdr.194 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.167, label %if.merge.168 + br i1 %icmpN, label %if.then.197, label %if.merge.198 -while.exit.166: ; preds = %while.hdr.164 +while.exit.196: ; preds = %while.hdr.194 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.281, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.289, i64 1 }) ret { ptr, i64 } %call -if.then.167: ; preds = %while.body.165 +if.then.197: ; preds = %while.body.195 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.282, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.290, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.168 + br label %if.merge.198 -if.merge.168: ; preds = %if.then.167, %while.body.165 +if.merge.198: ; preds = %if.then.197, %while.body.195 %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 @@ -3472,7 +3738,7 @@ if.merge.168: ; preds = %if.then.167, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.164 + br label %while.hdr.194 } ; Function Attrs: nounwind @@ -3481,35 +3747,35 @@ 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.283, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.291, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.173 + br label %while.hdr.203 -while.hdr.173: ; preds = %if.merge.177, %entry +while.hdr.203: ; preds = %if.merge.207, %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.174, label %while.exit.175 + br i1 %icmp, label %while.body.204, label %while.exit.205 -while.body.174: ; preds = %while.hdr.173 +while.body.204: ; preds = %while.hdr.203 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.176, label %if.merge.177 + br i1 %icmpN, label %if.then.206, label %if.merge.207 -while.exit.175: ; preds = %while.hdr.173 +while.exit.205: ; preds = %while.hdr.203 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.284, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.292, i64 1 }) ret { ptr, i64 } %call -if.then.176: ; preds = %while.body.174 +if.then.206: ; preds = %while.body.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.285, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.293, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.177 + br label %if.merge.207 -if.merge.177: ; preds = %if.then.176, %while.body.174 +if.merge.207: ; preds = %if.then.206, %while.body.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3526,7 +3792,7 @@ if.merge.177: ; preds = %if.then.176, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.173 + br label %while.hdr.203 } ; Function Attrs: nounwind @@ -3535,35 +3801,35 @@ 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.286, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.294, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.178 + br label %while.hdr.208 -while.hdr.178: ; preds = %if.merge.182, %entry +while.hdr.208: ; preds = %if.merge.212, %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.179, label %while.exit.180 + br i1 %icmp, label %while.body.209, label %while.exit.210 -while.body.179: ; preds = %while.hdr.178 +while.body.209: ; preds = %while.hdr.208 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.181, label %if.merge.182 + br i1 %icmpN, label %if.then.211, label %if.merge.212 -while.exit.180: ; preds = %while.hdr.178 +while.exit.210: ; preds = %while.hdr.208 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.287, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.295, i64 1 }) ret { ptr, i64 } %call -if.then.181: ; preds = %while.body.179 +if.then.211: ; preds = %while.body.209 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.288, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.296, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.182 + br label %if.merge.212 -if.merge.182: ; preds = %if.then.181, %while.body.179 +if.merge.212: ; preds = %if.then.211, %while.body.209 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3580,95 +3846,11 @@ if.merge.182: ; preds = %if.then.181, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.178 + br label %while.hdr.208 } ; 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.206, label %if.else.207 - -if.then.206: ; preds = %entry - br label %if.merge.208 - -if.else.207: ; 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 5 }, { ptr, i64 } %callN) - br label %if.merge.208 - -if.merge.208: ; preds = %if.else.207, %if.then.206 - %bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.206 ], [ %callN, %if.else.207 ] - 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.230, label %if.else.231 - -if.then.230: ; preds = %entry - br label %if.merge.232 - -if.else.231: ; 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 11 }, { ptr, i64 } %callN) - br label %if.merge.232 - -if.merge.232: ; preds = %if.else.231, %if.then.230 - %bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] - 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.233, label %if.else.234 - -if.then.233: ; preds = %entry - br label %if.merge.235 - -if.else.234: ; 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 4 }, { ptr, i64 } %callN) - br label %if.merge.235 - -if.merge.235: ; preds = %if.else.234, %if.then.233 - %bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] - 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 @@ -3686,12 +3868,96 @@ if.then.236: ; preds = %entry if.else.237: ; 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 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.299, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.298, i64 5 }, { ptr, i64 } %callN) br label %if.merge.238 if.merge.238: ; preds = %if.else.237, %if.then.236 - %bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] + %bp = phi { ptr, i64 } [ { ptr @str.297, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] + 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.252, label %if.else.253 + +if.then.252: ; preds = %entry + br label %if.merge.254 + +if.else.253: ; 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.302, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.254 + +if.merge.254: ; preds = %if.else.253, %if.then.252 + %bp = phi { ptr, i64 } [ { ptr @str.300, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] + 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.255, label %if.else.256 + +if.then.255: ; preds = %entry + br label %if.merge.257 + +if.else.256: ; 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.305, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.257 + +if.merge.257: ; preds = %if.else.256, %if.then.255 + %bp = phi { ptr, i64 } [ { ptr @str.303, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] + 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.258, label %if.else.259 + +if.then.258: ; preds = %entry + br label %if.merge.260 + +if.else.259: ; 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.308, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.260 + +if.merge.260: ; preds = %if.else.259, %if.then.258 + %bp = phi { ptr, i64 } [ { ptr @str.306, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] ret { ptr, i64 } %bp } @@ -3706,20 +3972,20 @@ entry: 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.239, label %if.else.240 + br i1 %icmp, label %if.then.261, label %if.else.262 -if.then.239: ; preds = %entry - br label %if.merge.241 +if.then.261: ; preds = %entry + br label %if.merge.263 -if.else.240: ; preds = %entry +if.else.262: ; 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 6 }, { ptr, i64 } %callN) - br label %if.merge.241 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.311, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.263 -if.merge.241: ; preds = %if.else.240, %if.then.239 - %bp = phi { ptr, i64 } [ { ptr @str.301, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] +if.merge.263: ; preds = %if.else.262, %if.then.261 + %bp = phi { ptr, i64 } [ { ptr @str.309, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] ret { ptr, i64 } %bp } @@ -3733,20 +3999,20 @@ entry: 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.242, label %if.else.243 + br i1 %icmp, label %if.then.264, label %if.else.265 -if.then.242: ; preds = %entry - br label %if.merge.244 +if.then.264: ; preds = %entry + br label %if.merge.266 -if.else.243: ; preds = %entry +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.306, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.305, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.244 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.314, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.313, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.266 -if.merge.244: ; preds = %if.else.243, %if.then.242 - %bp = phi { ptr, i64 } [ { ptr @str.304, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] +if.merge.266: ; preds = %if.else.265, %if.then.264 + %bp = phi { ptr, i64 } [ { ptr @str.312, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] ret { ptr, i64 } %bp } @@ -3761,20 +4027,20 @@ entry: 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.245, label %if.else.246 + br i1 %icmp, label %if.then.267, label %if.else.268 -if.then.245: ; preds = %entry - br label %if.merge.247 +if.then.267: ; preds = %entry + br label %if.merge.269 -if.else.246: ; preds = %entry +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.309, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.247 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.317, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.316, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.269 -if.merge.247: ; preds = %if.else.246, %if.then.245 - %bp = phi { ptr, i64 } [ { ptr @str.307, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] +if.merge.269: ; preds = %if.else.268, %if.then.267 + %bp = phi { ptr, i64 } [ { ptr @str.315, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] ret { ptr, i64 } %bp } @@ -3789,20 +4055,20 @@ entry: 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 + br i1 %icmp, label %if.then.270, label %if.else.271 -if.then.248: ; preds = %entry - br label %if.merge.250 +if.then.270: ; preds = %entry + br label %if.merge.272 -if.else.249: ; preds = %entry +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.312, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.311, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.250 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.320, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.319, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.272 -if.merge.250: ; preds = %if.else.249, %if.then.248 - %bp = phi { ptr, i64 } [ { ptr @str.310, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] +if.merge.272: ; preds = %if.else.271, %if.then.270 + %bp = phi { ptr, i64 } [ { ptr @str.318, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ] ret { ptr, i64 } %bp } @@ -3817,20 +4083,20 @@ entry: 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.251, label %if.else.252 + br i1 %icmp, label %if.then.273, label %if.else.274 -if.then.251: ; preds = %entry - br label %if.merge.253 +if.then.273: ; preds = %entry + br label %if.merge.275 -if.else.252: ; preds = %entry +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.315, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.314, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.253 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.323, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.322, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.275 -if.merge.253: ; preds = %if.else.252, %if.then.251 - %bp = phi { ptr, i64 } [ { ptr @str.313, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] +if.merge.275: ; preds = %if.else.274, %if.then.273 + %bp = phi { ptr, i64 } [ { ptr @str.321, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ] ret { ptr, i64 } %bp } @@ -3845,20 +4111,20 @@ entry: 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.254, label %if.else.255 + br i1 %icmp, label %if.then.276, label %if.else.277 -if.then.254: ; preds = %entry - br label %if.merge.256 +if.then.276: ; preds = %entry + br label %if.merge.278 -if.else.255: ; preds = %entry +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.318, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.317, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.256 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.326, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.325, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.278 -if.merge.256: ; preds = %if.else.255, %if.then.254 - %bp = phi { ptr, i64 } [ { ptr @str.316, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] +if.merge.278: ; preds = %if.else.277, %if.then.276 + %bp = phi { ptr, i64 } [ { ptr @str.324, i64 4 }, %if.then.276 ], [ %callN, %if.else.277 ] ret { ptr, i64 } %bp } @@ -3873,20 +4139,20 @@ entry: 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.257, label %if.else.258 + br i1 %icmp, label %if.then.279, label %if.else.280 -if.then.257: ; preds = %entry - br label %if.merge.259 +if.then.279: ; preds = %entry + br label %if.merge.281 -if.else.258: ; preds = %entry +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.321, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.320, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.259 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.329, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.328, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.281 -if.merge.259: ; preds = %if.else.258, %if.then.257 - %bp = phi { ptr, i64 } [ { ptr @str.319, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] +if.merge.281: ; preds = %if.else.280, %if.then.279 + %bp = phi { ptr, i64 } [ { ptr @str.327, i64 4 }, %if.then.279 ], [ %callN, %if.else.280 ] ret { ptr, i64 } %bp } @@ -3901,20 +4167,20 @@ entry: 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.260, label %if.else.261 + br i1 %icmp, label %if.then.282, label %if.else.283 -if.then.260: ; preds = %entry - br label %if.merge.262 +if.then.282: ; preds = %entry + br label %if.merge.284 -if.else.261: ; preds = %entry +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.324, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.323, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.262 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.332, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.331, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.284 -if.merge.262: ; preds = %if.else.261, %if.then.260 - %bp = phi { ptr, i64 } [ { ptr @str.322, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] +if.merge.284: ; preds = %if.else.283, %if.then.282 + %bp = phi { ptr, i64 } [ { ptr @str.330, i64 4 }, %if.then.282 ], [ %callN, %if.else.283 ] ret { ptr, i64 } %bp } @@ -3929,20 +4195,20 @@ entry: 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.263, label %if.else.264 + br i1 %icmp, label %if.then.285, label %if.else.286 -if.then.263: ; preds = %entry - br label %if.merge.265 +if.then.285: ; preds = %entry + br label %if.merge.287 -if.else.264: ; preds = %entry +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.327, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.326, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.265 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.335, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.334, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.287 -if.merge.265: ; preds = %if.else.264, %if.then.263 - %bp = phi { ptr, i64 } [ { ptr @str.325, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] +if.merge.287: ; preds = %if.else.286, %if.then.285 + %bp = phi { ptr, i64 } [ { ptr @str.333, i64 4 }, %if.then.285 ], [ %callN, %if.else.286 ] ret { ptr, i64 } %bp } @@ -3957,20 +4223,20 @@ entry: 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.266, label %if.else.267 + br i1 %icmp, label %if.then.288, label %if.else.289 -if.then.266: ; preds = %entry - br label %if.merge.268 +if.then.288: ; preds = %entry + br label %if.merge.290 -if.else.267: ; preds = %entry +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.330, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.329, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.268 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.338, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.337, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.290 -if.merge.268: ; preds = %if.else.267, %if.then.266 - %bp = phi { ptr, i64 } [ { ptr @str.328, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] +if.merge.290: ; preds = %if.else.289, %if.then.288 + %bp = phi { ptr, i64 } [ { ptr @str.336, i64 4 }, %if.then.288 ], [ %callN, %if.else.289 ] ret { ptr, i64 } %bp } @@ -3985,20 +4251,20 @@ entry: 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.269, label %if.else.270 + br i1 %icmp, label %if.then.291, label %if.else.292 -if.then.269: ; preds = %entry - br label %if.merge.271 +if.then.291: ; preds = %entry + br label %if.merge.293 -if.else.270: ; preds = %entry +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.333, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.332, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.271 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.341, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.340, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.293 -if.merge.271: ; preds = %if.else.270, %if.then.269 - %bp = phi { ptr, i64 } [ { ptr @str.331, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] +if.merge.293: ; preds = %if.else.292, %if.then.291 + %bp = phi { ptr, i64 } [ { ptr @str.339, i64 4 }, %if.then.291 ], [ %callN, %if.else.292 ] ret { ptr, i64 } %bp } @@ -4013,20 +4279,20 @@ entry: 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.272, label %if.else.273 + br i1 %icmp, label %if.then.294, label %if.else.295 -if.then.272: ; preds = %entry - br label %if.merge.274 +if.then.294: ; preds = %entry + br label %if.merge.296 -if.else.273: ; preds = %entry +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.336, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.335, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.274 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.344, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.343, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.296 -if.merge.274: ; preds = %if.else.273, %if.then.272 - %bp = phi { ptr, i64 } [ { ptr @str.334, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] +if.merge.296: ; preds = %if.else.295, %if.then.294 + %bp = phi { ptr, i64 } [ { ptr @str.342, i64 4 }, %if.then.294 ], [ %callN, %if.else.295 ] ret { ptr, i64 } %bp } @@ -4041,20 +4307,20 @@ entry: 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.275, label %if.else.276 + br i1 %icmp, label %if.then.297, label %if.else.298 -if.then.275: ; preds = %entry - br label %if.merge.277 +if.then.297: ; preds = %entry + br label %if.merge.299 -if.else.276: ; preds = %entry +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.339, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.338, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.277 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.347, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.346, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.299 -if.merge.277: ; preds = %if.else.276, %if.then.275 - %bp = phi { ptr, i64 } [ { ptr @str.337, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] +if.merge.299: ; preds = %if.else.298, %if.then.297 + %bp = phi { ptr, i64 } [ { ptr @str.345, i64 4 }, %if.then.297 ], [ %callN, %if.else.298 ] ret { ptr, i64 } %bp } @@ -4069,20 +4335,20 @@ entry: 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.278, label %if.else.279 + br i1 %icmp, label %if.then.300, label %if.else.301 -if.then.278: ; preds = %entry - br label %if.merge.280 +if.then.300: ; preds = %entry + br label %if.merge.302 -if.else.279: ; preds = %entry +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.342, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.341, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.280 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.350, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.349, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.302 -if.merge.280: ; preds = %if.else.279, %if.then.278 - %bp = phi { ptr, i64 } [ { ptr @str.340, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] +if.merge.302: ; preds = %if.else.301, %if.then.300 + %bp = phi { ptr, i64 } [ { ptr @str.348, i64 4 }, %if.then.300 ], [ %callN, %if.else.301 ] ret { ptr, i64 } %bp } @@ -4097,20 +4363,20 @@ entry: 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.281, label %if.else.282 + br i1 %icmp, label %if.then.303, label %if.else.304 -if.then.281: ; preds = %entry - br label %if.merge.283 +if.then.303: ; preds = %entry + br label %if.merge.305 -if.else.282: ; preds = %entry +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.345, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.344, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.283 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.353, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.352, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.305 -if.merge.283: ; preds = %if.else.282, %if.then.281 - %bp = phi { ptr, i64 } [ { ptr @str.343, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] +if.merge.305: ; preds = %if.else.304, %if.then.303 + %bp = phi { ptr, i64 } [ { ptr @str.351, i64 4 }, %if.then.303 ], [ %callN, %if.else.304 ] ret { ptr, i64 } %bp } @@ -4125,20 +4391,20 @@ entry: 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.284, label %if.else.285 + br i1 %icmp, label %if.then.306, label %if.else.307 -if.then.284: ; preds = %entry - br label %if.merge.286 +if.then.306: ; preds = %entry + br label %if.merge.308 -if.else.285: ; preds = %entry +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.348, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.347, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.286 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.356, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.355, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.308 -if.merge.286: ; preds = %if.else.285, %if.then.284 - %bp = phi { ptr, i64 } [ { ptr @str.346, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] +if.merge.308: ; preds = %if.else.307, %if.then.306 + %bp = phi { ptr, i64 } [ { ptr @str.354, i64 4 }, %if.then.306 ], [ %callN, %if.else.307 ] ret { ptr, i64 } %bp } @@ -4153,23 +4419,21 @@ entry: 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.287, label %if.else.288 + br i1 %icmp, label %if.then.309, label %if.else.310 -if.then.287: ; preds = %entry - br label %if.merge.289 +if.then.309: ; preds = %entry + br label %if.merge.311 -if.else.288: ; preds = %entry +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.351, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.350, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.289 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.359, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.358, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.311 -if.merge.289: ; preds = %if.else.288, %if.then.287 - %bp = phi { ptr, i64 } [ { ptr @str.349, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] +if.merge.311: ; preds = %if.else.310, %if.then.309 + %bp = phi { ptr, i64 } [ { ptr @str.357, i64 4 }, %if.then.309 ], [ %callN, %if.else.310 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0032-basic-ufcs-return-type.ir b/examples/expected/0032-basic-ufcs-return-type.ir index 0665515..47f1b10 100644 --- a/examples/expected/0032-basic-ufcs-return-type.ir +++ b/examples/expected/0032-basic-ufcs-return-type.ir @@ -4,296 +4,303 @@ @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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.34 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.35 = private unnamed_addr constant [6 x i8] c"false\00", align 1 @str.36 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.37 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.38 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.37 = private unnamed_addr constant [5 x i8] c"true\00", align 1 +@str.38 = private unnamed_addr constant [6 x i8] c"false\00", align 1 +@str.39 = private unnamed_addr constant [2 x i8] c"0\00", align 1 +@str.40 = private unnamed_addr constant [4 x i8] c"\00", align 1 +@str.41 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@__sx_type_is_unsigned = private constant [81 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.39 = private constant [5 x i8] c"bool\00" -@tn.str.40 = private constant [3 x i8] c"s8\00" -@tn.str.41 = private constant [4 x i8] c"s16\00" -@tn.str.42 = private constant [4 x i8] c"s32\00" -@tn.str.43 = private constant [4 x i8] c"s64\00" -@tn.str.44 = private constant [3 x i8] c"u8\00" -@tn.str.45 = private constant [4 x i8] c"u16\00" -@tn.str.46 = private constant [4 x i8] c"u32\00" -@tn.str.47 = private constant [4 x i8] c"u64\00" -@tn.str.48 = private constant [4 x i8] c"f32\00" -@tn.str.49 = private constant [4 x i8] c"f64\00" -@tn.str.50 = private constant [7 x i8] c"string\00" -@tn.str.51 = private constant [4 x i8] c"Any\00" -@tn.str.52 = private constant [9 x i8] c"noreturn\00" -@tn.str.53 = private constant [6 x i8] c"isize\00" -@tn.str.54 = private constant [6 x i8] c"usize\00" -@tn.str.55 = private constant [5 x i8] c"void\00" -@tn.str.56 = private constant [6 x i8] c"*void\00" -@tn.str.57 = private constant [16 x i8] c"Source_Location\00" -@tn.str.58 = private constant [10 x i8] c"Allocator\00" -@tn.str.59 = private constant [11 x i8] c"CAllocator\00" -@tn.str.60 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.61 = private constant [4 x i8] c"GPA\00" -@tn.str.62 = private constant [5 x i8] c"*GPA\00" -@tn.str.63 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.64 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.65 = private constant [6 x i8] c"Arena\00" -@tn.str.66 = private constant [7 x i8] c"*Arena\00" -@tn.str.67 = private constant [6 x i8] c"[*]u8\00" -@tn.str.68 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.69 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.70 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.71 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.72 = private constant [8 x i8] c"Context\00" -@tn.str.73 = private constant [9 x i8] c"[]string\00" -@tn.str.74 = private constant [16 x i8] c"OperatingSystem\00" -@tn.str.75 = private constant [13 x i8] c"Architecture\00" -@tn.str.76 = private constant [13 x i8] c"BuildOptions\00" -@tn.str.77 = private constant [11 x i8] c"() -> bool\00" -@tn.str.78 = private constant [6 x i8] c"Point\00" -@tn.str.79 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.80 = private constant [5 x i8] c"*s64\00" -@tn.str.81 = private constant [7 x i8] c"**void\00" -@tn.str.82 = private constant [8 x i8] c"*string\00" -@tn.str.83 = private constant [6 x i8] c"[]Any\00" -@tn.str.84 = private constant [5 x i8] c"*Any\00" -@tn.str.85 = private constant [7 x i8] c"*[]Any\00" -@tn.str.86 = private constant [4 x i8] c"*u8\00" -@tn.str.87 = private constant [6 x i8] c"*bool\00" -@tn.str.88 = private constant [7 x i8] c"*Point\00" -@tn.str.89 = private constant [5 x i8] c"*s32\00" -@tn.str.90 = private constant [7 x i8] c"[1]Any\00" -@tn.str.91 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.92 = private constant [5 x i8] c"*f64\00" -@tn.str.93 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.94 = private constant [11 x i8] c"*Allocator\00" -@tn.str.95 = private constant [9 x i8] c"*Context\00" -@tn.str.96 = private constant [14 x i8] c"*BuildOptions\00" -@tn.str.97 = private constant [17 x i8] c"*OperatingSystem\00" -@tn.str.98 = private constant [14 x i8] c"*Architecture\00" -@tn.str.99 = private constant [10 x i8] c"*[]string\00" -@tn.str.100 = private constant [6 x i8] c"**GPA\00" -@tn.str.101 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.102 = private constant [8 x i8] c"**Arena\00" -@tn.str.103 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.104 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.105 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.106 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.107 = private constant [6 x i8] c"**s64\00" -@tn.str.108 = private constant [8 x i8] c"***void\00" -@tn.str.109 = private constant [9 x i8] c"**string\00" -@tn.str.110 = private constant [6 x i8] c"**Any\00" -@tn.str.111 = private constant [8 x i8] c"**[]Any\00" -@tn.str.112 = private constant [5 x i8] c"**u8\00" -@tn.str.113 = private constant [7 x i8] c"**bool\00" -@tn.str.114 = private constant [8 x i8] c"**Point\00" -@tn.str.115 = private constant [6 x i8] c"**s32\00" -@tn.str.116 = private constant [9 x i8] c"**[1]Any\00" -@__sx_type_names = private constant [79 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.39, i64 4 }, { ptr, i64 } { ptr @tn.str.40, i64 2 }, { ptr, i64 } { ptr @tn.str.41, i64 3 }, { ptr, i64 } { ptr @tn.str.42, i64 3 }, { ptr, i64 } { ptr @tn.str.43, i64 3 }, { ptr, i64 } { ptr @tn.str.44, i64 2 }, { ptr, i64 } { ptr @tn.str.45, i64 3 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 3 }, { ptr, i64 } { ptr @tn.str.48, i64 3 }, { ptr, i64 } { ptr @tn.str.49, i64 3 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 8 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 15 }, { ptr, i64 } { ptr @tn.str.58, i64 9 }, { ptr, i64 } { ptr @tn.str.59, i64 10 }, { ptr, i64 } { ptr @tn.str.60, i64 11 }, { ptr, i64 } { ptr @tn.str.61, i64 3 }, { ptr, i64 } { ptr @tn.str.62, i64 4 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 11 }, { ptr, i64 } { ptr @tn.str.65, i64 5 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 8 }, { ptr, i64 } { ptr @tn.str.69, i64 9 }, { ptr, i64 } { ptr @tn.str.70, i64 17 }, { ptr, i64 } { ptr @tn.str.71, i64 18 }, { ptr, i64 } { ptr @tn.str.72, i64 7 }, { ptr, i64 } { ptr @tn.str.73, i64 8 }, { ptr, i64 } { ptr @tn.str.74, i64 15 }, { ptr, i64 } { ptr @tn.str.75, i64 12 }, { ptr, i64 } { ptr @tn.str.76, i64 12 }, { ptr, i64 } { ptr @tn.str.77, i64 10 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 12 }, { ptr, i64 } { ptr @tn.str.80, i64 4 }, { ptr, i64 } { ptr @tn.str.81, i64 6 }, { ptr, i64 } { ptr @tn.str.82, i64 7 }, { ptr, i64 } { ptr @tn.str.83, i64 5 }, { ptr, i64 } { ptr @tn.str.84, i64 4 }, { ptr, i64 } { ptr @tn.str.85, i64 6 }, { ptr, i64 } { ptr @tn.str.86, i64 3 }, { ptr, i64 } { ptr @tn.str.87, i64 5 }, { ptr, i64 } { ptr @tn.str.88, i64 6 }, { ptr, i64 } { ptr @tn.str.89, i64 4 }, { ptr, i64 } { ptr @tn.str.90, i64 6 }, { ptr, i64 } { ptr @tn.str.91, i64 7 }, { ptr, i64 } { ptr @tn.str.92, i64 4 }, { ptr, i64 } { ptr @tn.str.93, i64 16 }, { ptr, i64 } { ptr @tn.str.94, i64 10 }, { ptr, i64 } { ptr @tn.str.95, i64 8 }, { ptr, i64 } { ptr @tn.str.96, i64 13 }, { ptr, i64 } { ptr @tn.str.97, i64 16 }, { ptr, i64 } { ptr @tn.str.98, i64 13 }, { ptr, i64 } { ptr @tn.str.99, i64 9 }, { ptr, i64 } { ptr @tn.str.100, i64 5 }, { ptr, i64 } { ptr @tn.str.101, i64 12 }, { ptr, i64 } { ptr @tn.str.102, i64 7 }, { ptr, i64 } { ptr @tn.str.103, i64 6 }, { ptr, i64 } { ptr @tn.str.104, i64 10 }, { ptr, i64 } { ptr @tn.str.105, i64 19 }, { ptr, i64 } { ptr @tn.str.106, i64 13 }, { ptr, i64 } { ptr @tn.str.107, i64 5 }, { ptr, i64 } { ptr @tn.str.108, i64 7 }, { ptr, i64 } { ptr @tn.str.109, i64 8 }, { ptr, i64 } { ptr @tn.str.110, i64 5 }, { ptr, i64 } { ptr @tn.str.111, i64 7 }, { ptr, i64 } { ptr @tn.str.112, i64 4 }, { ptr, i64 } { ptr @tn.str.113, i64 6 }, { ptr, i64 } { ptr @tn.str.114, i64 7 }, { ptr, i64 } { ptr @tn.str.115, i64 5 }, { ptr, i64 } { ptr @tn.str.116, i64 8 }] -@str.117 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.118 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.119 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.120 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.121 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.122 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.123 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.125 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.126 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.127 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 +@tn.str.42 = private constant [5 x i8] c"bool\00" +@tn.str.43 = private constant [3 x i8] c"s8\00" +@tn.str.44 = private constant [4 x i8] c"s16\00" +@tn.str.45 = private constant [4 x i8] c"s32\00" +@tn.str.46 = private constant [4 x i8] c"s64\00" +@tn.str.47 = private constant [3 x i8] c"u8\00" +@tn.str.48 = private constant [4 x i8] c"u16\00" +@tn.str.49 = private constant [4 x i8] c"u32\00" +@tn.str.50 = private constant [4 x i8] c"u64\00" +@tn.str.51 = private constant [4 x i8] c"f32\00" +@tn.str.52 = private constant [4 x i8] c"f64\00" +@tn.str.53 = private constant [7 x i8] c"string\00" +@tn.str.54 = private constant [4 x i8] c"Any\00" +@tn.str.55 = private constant [9 x i8] c"noreturn\00" +@tn.str.56 = private constant [6 x i8] c"isize\00" +@tn.str.57 = private constant [6 x i8] c"usize\00" +@tn.str.58 = private constant [5 x i8] c"void\00" +@tn.str.59 = private constant [6 x i8] c"*void\00" +@tn.str.60 = private constant [16 x i8] c"Source_Location\00" +@tn.str.61 = private constant [10 x i8] c"Allocator\00" +@tn.str.62 = private constant [11 x i8] c"CAllocator\00" +@tn.str.63 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.64 = private constant [4 x i8] c"GPA\00" +@tn.str.65 = private constant [5 x i8] c"*GPA\00" +@tn.str.66 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.67 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.68 = private constant [6 x i8] c"Arena\00" +@tn.str.69 = private constant [7 x i8] c"*Arena\00" +@tn.str.70 = private constant [6 x i8] c"[*]u8\00" +@tn.str.71 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.72 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.73 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.74 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.75 = private constant [8 x i8] c"Context\00" +@tn.str.76 = private constant [7 x i8] c"[4]s64\00" +@tn.str.77 = private constant [9 x i8] c"[]string\00" +@tn.str.78 = private constant [16 x i8] c"OperatingSystem\00" +@tn.str.79 = private constant [13 x i8] c"Architecture\00" +@tn.str.80 = private constant [13 x i8] c"BuildOptions\00" +@tn.str.81 = private constant [11 x i8] c"() -> bool\00" +@tn.str.82 = private constant [6 x i8] c"Point\00" +@tn.str.83 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.84 = private constant [5 x i8] c"*s64\00" +@tn.str.85 = private constant [7 x i8] c"**void\00" +@tn.str.86 = private constant [8 x i8] c"*string\00" +@tn.str.87 = private constant [6 x i8] c"[]Any\00" +@tn.str.88 = private constant [5 x i8] c"*Any\00" +@tn.str.89 = private constant [7 x i8] c"*[]Any\00" +@tn.str.90 = private constant [4 x i8] c"*u8\00" +@tn.str.91 = private constant [6 x i8] c"*bool\00" +@tn.str.92 = private constant [7 x i8] c"*Point\00" +@tn.str.93 = private constant [5 x i8] c"*s32\00" +@tn.str.94 = private constant [7 x i8] c"[1]Any\00" +@tn.str.95 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.96 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.97 = private constant [5 x i8] c"*f64\00" +@tn.str.98 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.99 = private constant [11 x i8] c"*Allocator\00" +@tn.str.100 = private constant [9 x i8] c"*Context\00" +@tn.str.101 = private constant [14 x i8] c"*BuildOptions\00" +@tn.str.102 = private constant [17 x i8] c"*OperatingSystem\00" +@tn.str.103 = private constant [14 x i8] c"*Architecture\00" +@tn.str.104 = private constant [10 x i8] c"*[]string\00" +@tn.str.105 = private constant [6 x i8] c"**GPA\00" +@tn.str.106 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.107 = private constant [8 x i8] c"**Arena\00" +@tn.str.108 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.109 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.110 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.111 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.112 = private constant [6 x i8] c"**s64\00" +@tn.str.113 = private constant [8 x i8] c"***void\00" +@tn.str.114 = private constant [9 x i8] c"**string\00" +@tn.str.115 = private constant [6 x i8] c"**Any\00" +@tn.str.116 = private constant [8 x i8] c"**[]Any\00" +@tn.str.117 = private constant [5 x i8] c"**u8\00" +@tn.str.118 = private constant [7 x i8] c"**bool\00" +@tn.str.119 = private constant [8 x i8] c"**Point\00" +@tn.str.120 = private constant [6 x i8] c"**s32\00" +@tn.str.121 = private constant [9 x i8] c"**[1]Any\00" +@__sx_type_names = private constant [81 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 2 }, { ptr, i64 } { ptr @tn.str.44, i64 3 }, { ptr, i64 } { ptr @tn.str.45, i64 3 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 2 }, { ptr, i64 } { ptr @tn.str.48, i64 3 }, { ptr, i64 } { ptr @tn.str.49, i64 3 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 3 }, { ptr, i64 } { ptr @tn.str.55, i64 8 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 5 }, { ptr, i64 } { ptr @tn.str.60, i64 15 }, { ptr, i64 } { ptr @tn.str.61, i64 9 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 11 }, { ptr, i64 } { ptr @tn.str.64, i64 3 }, { ptr, i64 } { ptr @tn.str.65, i64 4 }, { ptr, i64 } { ptr @tn.str.66, i64 10 }, { ptr, i64 } { ptr @tn.str.67, i64 11 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 6 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 9 }, { ptr, i64 } { ptr @tn.str.73, i64 17 }, { ptr, i64 } { ptr @tn.str.74, i64 18 }, { ptr, i64 } { ptr @tn.str.75, i64 7 }, { ptr, i64 } { ptr @tn.str.76, i64 6 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 15 }, { ptr, i64 } { ptr @tn.str.79, i64 12 }, { ptr, i64 } { ptr @tn.str.80, i64 12 }, { ptr, i64 } { ptr @tn.str.81, i64 10 }, { ptr, i64 } { ptr @tn.str.82, i64 5 }, { ptr, i64 } { ptr @tn.str.83, i64 12 }, { ptr, i64 } { ptr @tn.str.84, i64 4 }, { ptr, i64 } { ptr @tn.str.85, i64 6 }, { ptr, i64 } { ptr @tn.str.86, i64 7 }, { ptr, i64 } { ptr @tn.str.87, i64 5 }, { ptr, i64 } { ptr @tn.str.88, i64 4 }, { ptr, i64 } { ptr @tn.str.89, i64 6 }, { ptr, i64 } { ptr @tn.str.90, i64 3 }, { ptr, i64 } { ptr @tn.str.91, i64 5 }, { ptr, i64 } { ptr @tn.str.92, i64 6 }, { ptr, i64 } { ptr @tn.str.93, i64 4 }, { ptr, i64 } { ptr @tn.str.94, i64 6 }, { ptr, i64 } { ptr @tn.str.95, i64 7 }, { ptr, i64 } { ptr @tn.str.96, i64 7 }, { ptr, i64 } { ptr @tn.str.97, i64 4 }, { ptr, i64 } { ptr @tn.str.98, i64 16 }, { ptr, i64 } { ptr @tn.str.99, i64 10 }, { ptr, i64 } { ptr @tn.str.100, i64 8 }, { ptr, i64 } { ptr @tn.str.101, i64 13 }, { ptr, i64 } { ptr @tn.str.102, i64 16 }, { ptr, i64 } { ptr @tn.str.103, i64 13 }, { ptr, i64 } { ptr @tn.str.104, i64 9 }, { ptr, i64 } { ptr @tn.str.105, i64 5 }, { ptr, i64 } { ptr @tn.str.106, i64 12 }, { ptr, i64 } { ptr @tn.str.107, i64 7 }, { ptr, i64 } { ptr @tn.str.108, i64 6 }, { ptr, i64 } { ptr @tn.str.109, i64 10 }, { ptr, i64 } { ptr @tn.str.110, i64 19 }, { ptr, i64 } { ptr @tn.str.111, i64 13 }, { ptr, i64 } { ptr @tn.str.112, i64 5 }, { ptr, i64 } { ptr @tn.str.113, i64 7 }, { ptr, i64 } { ptr @tn.str.114, i64 8 }, { ptr, i64 } { ptr @tn.str.115, i64 5 }, { ptr, i64 } { ptr @tn.str.116, i64 7 }, { ptr, i64 } { ptr @tn.str.117, i64 4 }, { ptr, i64 } { ptr @tn.str.118, i64 6 }, { ptr, i64 } { ptr @tn.str.119, i64 7 }, { ptr, i64 } { ptr @tn.str.120, i64 5 }, { ptr, i64 } { ptr @tn.str.121, i64 8 }] +@str.122 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.123 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.124 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.125 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.127 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.128 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.129 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.130 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.137 = private unnamed_addr constant [30 x i8] c"=== 20. UFCS Return Type ===\0A\00", align 1 -@str.138 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.139 = private unnamed_addr constant [30 x i8] c"=== 20. UFCS Return Type ===\0A\00", align 1 -@str.140 = private unnamed_addr constant [12 x i8] c"direct: {}\0A\00", align 1 -@str.141 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.142 = private unnamed_addr constant [12 x i8] c"direct: {}\0A\00", align 1 -@str.143 = private unnamed_addr constant [10 x i8] c"ufcs: {}\0A\00", align 1 -@str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.145 = private unnamed_addr constant [10 x i8] c"ufcs: {}\0A\00", align 1 -@str.146 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.147 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.148 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.149 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.131 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.132 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 +@str.133 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.135 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.136 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.137 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.138 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.139 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.141 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.142 = private unnamed_addr constant [30 x i8] c"=== 20. UFCS Return Type ===\0A\00", align 1 +@str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.144 = private unnamed_addr constant [30 x i8] c"=== 20. UFCS Return Type ===\0A\00", align 1 +@str.145 = private unnamed_addr constant [12 x i8] c"direct: {}\0A\00", align 1 +@str.146 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.147 = private unnamed_addr constant [12 x i8] c"direct: {}\0A\00", align 1 +@str.148 = private unnamed_addr constant [10 x i8] c"ufcs: {}\0A\00", align 1 +@str.149 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.150 = private unnamed_addr constant [10 x i8] c"ufcs: {}\0A\00", align 1 +@str.151 = private unnamed_addr constant [16 x i8] c"Source_Location\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 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.150 = private constant [5 x i8] c"line\00" -@fld.str.151 = private constant [4 x i8] c"col\00" -@fld.str.152 = 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.150, i64 4 }, { ptr, i64 } { ptr @fld.str.151, i64 3 }, { ptr, i64 } { ptr @fld.str.152, i64 4 }] -@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.154 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.158 = private constant [4 x i8] c"ctx\00" -@fld.str.159 = private constant [6 x i8] c"alloc\00" -@fld.str.160 = private constant [8 x i8] c"dealloc\00" -@field_names.161 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 3 }, { ptr, i64 } { ptr @fld.str.159, i64 5 }, { ptr, i64 } { ptr @fld.str.160, i64 7 }] -@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.163 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.167 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.168 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.169 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.170 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.173 = private constant [12 x i8] c"alloc_count\00" -@field_names.174 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.173, i64 11 }] -@str.175 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.176 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.177 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.179 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.180 = private constant [5 x i8] c"next\00" -@fld.str.181 = private constant [4 x i8] c"cap\00" -@field_names.182 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.180, i64 4 }, { ptr, i64 } { ptr @fld.str.181, i64 3 }] -@str.183 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.184 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.185 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.187 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.188 = private constant [6 x i8] c"first\00" -@fld.str.189 = private constant [10 x i8] c"end_index\00" -@fld.str.190 = private constant [7 x i8] c"parent\00" -@field_names.191 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.188, i64 5 }, { ptr, i64 } { ptr @fld.str.189, i64 9 }, { ptr, i64 } { ptr @fld.str.190, i64 6 }] -@str.192 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.193 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.194 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.195 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.196 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.197 = private constant [4 x i8] c"buf\00" -@fld.str.198 = private constant [4 x i8] c"len\00" -@fld.str.199 = private constant [4 x i8] c"pos\00" -@field_names.200 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.197, i64 3 }, { ptr, i64 } { ptr @fld.str.198, i64 3 }, { ptr, i64 } { ptr @fld.str.199, i64 3 }] -@str.201 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.202 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.203 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.204 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.205 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.206 = private constant [7 x i8] c"parent\00" -@fld.str.207 = private constant [12 x i8] c"alloc_count\00" -@fld.str.208 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.209 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.210 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.206, i64 6 }, { ptr, i64 } { ptr @fld.str.207, i64 11 }, { ptr, i64 } { ptr @fld.str.208, i64 13 }, { ptr, i64 } { ptr @fld.str.209, i64 17 }] -@str.211 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.212 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.213 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.214 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.215 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.216 = private constant [10 x i8] c"allocator\00" -@fld.str.217 = private constant [5 x i8] c"data\00" -@field_names.218 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.216, i64 9 }, { ptr, i64 } { ptr @fld.str.217, i64 4 }] -@str.219 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.220 = private unnamed_addr constant [13 x i8] c"BuildOptions\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 [6 x i8] c"Point\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 [2 x i8] c"x\00" -@fld.str.231 = private constant [2 x i8] c"y\00" -@field_names.232 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.230, i64 1 }, { ptr, i64 } { ptr @fld.str.231, i64 1 }] -@str.233 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.234 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.235 = private constant [6 x i8] c"macos\00" -@fld.str.236 = private constant [6 x i8] c"linux\00" -@fld.str.237 = private constant [8 x i8] c"windows\00" -@fld.str.238 = private constant [5 x i8] c"wasm\00" -@fld.str.239 = private constant [4 x i8] c"ios\00" -@fld.str.240 = private constant [8 x i8] c"android\00" -@fld.str.241 = private constant [8 x i8] c"unknown\00" -@field_names.242 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.235, i64 5 }, { ptr, i64 } { ptr @fld.str.236, i64 5 }, { ptr, i64 } { ptr @fld.str.237, i64 7 }, { ptr, i64 } { ptr @fld.str.238, i64 4 }, { ptr, i64 } { ptr @fld.str.239, i64 3 }, { ptr, i64 } { ptr @fld.str.240, i64 7 }, { ptr, i64 } { ptr @fld.str.241, i64 7 }] -@str.243 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.244 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.245 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.246 = private constant [8 x i8] c"aarch64\00" -@fld.str.247 = private constant [7 x i8] c"x86_64\00" -@fld.str.248 = private constant [7 x i8] c"wasm32\00" -@fld.str.249 = private constant [7 x i8] c"wasm64\00" -@fld.str.250 = private constant [8 x i8] c"unknown\00" -@field_names.251 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.246, i64 7 }, { ptr, i64 } { ptr @fld.str.247, i64 6 }, { ptr, i64 } { ptr @fld.str.248, i64 6 }, { ptr, i64 } { ptr @fld.str.249, i64 6 }, { ptr, i64 } { ptr @fld.str.250, i64 7 }] -@str.252 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.253 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@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 [3 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 [2 x i8] c"]\00", align 1 -@str.259 = private unnamed_addr constant [3 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 [2 x i8] c"]\00", align 1 -@str.262 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.263 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.264 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.265 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.266 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.267 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.268 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.269 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.270 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 -@str.271 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.272 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.273 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 -@str.274 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.275 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.276 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 -@str.277 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.278 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.279 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 -@str.280 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.281 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.282 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 -@str.283 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.284 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.285 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 -@str.286 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.287 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.288 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 -@str.289 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.290 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.291 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 -@str.292 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.293 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.294 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 -@str.295 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.296 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.297 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 -@str.298 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.299 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.300 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 -@str.301 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.302 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.303 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 -@str.304 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.305 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.306 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 -@str.307 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.308 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.309 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 -@str.310 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.311 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.312 = private unnamed_addr constant [7 x i8] c"*Point\00", align 1 -@str.313 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.314 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.315 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 -@str.316 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.317 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.318 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 -@str.319 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@fld.str.155 = private constant [5 x i8] c"line\00" +@fld.str.156 = private constant [4 x i8] c"col\00" +@fld.str.157 = 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.155, i64 4 }, { ptr, i64 } { ptr @fld.str.156, i64 3 }, { ptr, i64 } { ptr @fld.str.157, i64 4 }] +@str.158 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.159 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.160 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.162 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.163 = private constant [4 x i8] c"ctx\00" +@fld.str.164 = private constant [6 x i8] c"alloc\00" +@fld.str.165 = private constant [8 x i8] c"dealloc\00" +@field_names.166 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.163, i64 3 }, { ptr, i64 } { ptr @fld.str.164, i64 5 }, { ptr, i64 } { ptr @fld.str.165, i64 7 }] +@str.167 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.168 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.170 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.171 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.172 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.173 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.174 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.175 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.176 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.178 = private constant [12 x i8] c"alloc_count\00" +@field_names.179 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.178, i64 11 }] +@str.180 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.181 = private unnamed_addr constant [11 x i8] c"ArenaChunk\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 [5 x i8] c"next\00" +@fld.str.186 = private constant [4 x i8] c"cap\00" +@field_names.187 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.185, i64 4 }, { ptr, i64 } { ptr @fld.str.186, i64 3 }] +@str.188 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.189 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.190 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.191 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.192 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.193 = private constant [6 x i8] c"first\00" +@fld.str.194 = private constant [10 x i8] c"end_index\00" +@fld.str.195 = private constant [7 x i8] c"parent\00" +@field_names.196 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.193, i64 5 }, { ptr, i64 } { ptr @fld.str.194, i64 9 }, { ptr, i64 } { ptr @fld.str.195, i64 6 }] +@str.197 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.198 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.199 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.201 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.202 = private constant [4 x i8] c"buf\00" +@fld.str.203 = private constant [4 x i8] c"len\00" +@fld.str.204 = private constant [4 x i8] c"pos\00" +@field_names.205 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.202, i64 3 }, { ptr, i64 } { ptr @fld.str.203, i64 3 }, { ptr, i64 } { ptr @fld.str.204, i64 3 }] +@str.206 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.207 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.208 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.209 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.210 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.211 = private constant [7 x i8] c"parent\00" +@fld.str.212 = private constant [12 x i8] c"alloc_count\00" +@fld.str.213 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.214 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.215 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.211, i64 6 }, { ptr, i64 } { ptr @fld.str.212, i64 11 }, { ptr, i64 } { ptr @fld.str.213, i64 13 }, { ptr, i64 } { ptr @fld.str.214, i64 17 }] +@str.216 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.217 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.218 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.219 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.220 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.221 = private constant [10 x i8] c"allocator\00" +@fld.str.222 = private constant [5 x i8] c"data\00" +@field_names.223 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.221, i64 9 }, { ptr, i64 } { ptr @fld.str.222, i64 4 }] +@str.224 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.225 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 +@str.226 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.227 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.228 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.229 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.230 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.231 = private unnamed_addr constant [6 x i8] c"Point\00", align 1 +@str.232 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.233 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.234 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.235 = private constant [2 x i8] c"x\00" +@fld.str.236 = private constant [2 x i8] c"y\00" +@field_names.237 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.235, i64 1 }, { ptr, i64 } { ptr @fld.str.236, i64 1 }] +@str.238 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.239 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.240 = private constant [6 x i8] c"macos\00" +@fld.str.241 = private constant [6 x i8] c"linux\00" +@fld.str.242 = private constant [8 x i8] c"windows\00" +@fld.str.243 = private constant [5 x i8] c"wasm\00" +@fld.str.244 = private constant [4 x i8] c"ios\00" +@fld.str.245 = private constant [8 x i8] c"android\00" +@fld.str.246 = private constant [8 x i8] c"unknown\00" +@field_names.247 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.240, i64 5 }, { ptr, i64 } { ptr @fld.str.241, i64 5 }, { ptr, i64 } { ptr @fld.str.242, i64 7 }, { ptr, i64 } { ptr @fld.str.243, i64 4 }, { ptr, i64 } { ptr @fld.str.244, i64 3 }, { ptr, i64 } { ptr @fld.str.245, i64 7 }, { ptr, i64 } { ptr @fld.str.246, i64 7 }] +@str.248 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.249 = private unnamed_addr constant [2 x i8] c")\00", align 1 +@str.250 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.251 = private constant [8 x i8] c"aarch64\00" +@fld.str.252 = private constant [7 x i8] c"x86_64\00" +@fld.str.253 = private constant [7 x i8] c"wasm32\00" +@fld.str.254 = private constant [7 x i8] c"wasm64\00" +@fld.str.255 = private constant [8 x i8] c"unknown\00" +@field_names.256 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.251, i64 7 }, { ptr, i64 } { ptr @fld.str.252, i64 6 }, { ptr, i64 } { ptr @fld.str.253, i64 6 }, { ptr, i64 } { ptr @fld.str.254, i64 6 }, { ptr, i64 } { ptr @fld.str.255, i64 7 }] +@str.257 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.258 = private unnamed_addr constant [2 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 [13 x i8] c"**CAllocator\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 [5 x i8] c"*s64\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 [7 x i8] c"**void\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 [8 x i8] c"*string\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 [5 x i8] c"*Any\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 [7 x i8] c"*[]Any\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 [4 x i8] c"*u8\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 [6 x i8] c"*bool\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 [7 x i8] c"*Point\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 [5 x i8] c"*s32\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 [8 x i8] c"*[1]Any\00", align 1 +@str.327 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -432,38 +439,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -476,50 +488,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.36, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.34, i64 4 }, %if.then.54 ], [ { ptr @str.35, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.37, i64 4 }, %if.then.78 ], [ { ptr @str.38, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -533,19 +673,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -562,15 +702,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -588,16 +728,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -614,17 +754,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -687,39 +827,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.202 + br label %while.hdr.224 -while.hdr.202: ; preds = %if.merge.207, %entry +while.hdr.224: ; preds = %if.merge.229, %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.203, label %while.exit.204 + br i1 %icmp, label %while.body.225, label %while.exit.226 -while.body.203: ; preds = %while.hdr.202 +while.body.225: ; preds = %while.hdr.224 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.205, label %if.else.206 + br i1 %icmpN, label %if.then.227, label %if.else.228 -while.exit.204: ; preds = %while.hdr.202 +while.exit.226: ; preds = %while.hdr.224 ret void -if.then.205: ; preds = %while.body.203 +if.then.227: ; preds = %while.body.225 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.207 + br label %if.merge.229 -if.else.206: ; preds = %while.body.203 +if.else.228: ; preds = %while.body.225 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.207 + br label %if.merge.229 -if.merge.207: ; preds = %if.else.206, %if.then.205 - %bp = phi i64 [ %addN, %if.then.205 ], [ %addN, %if.else.206 ] +if.merge.229: ; preds = %if.else.228, %if.then.227 + %bp = phi i64 [ %addN, %if.then.227 ], [ %addN, %if.else.228 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -732,37 +872,29 @@ if.merge.207: ; preds = %if.else.206, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.202 + br label %while.hdr.224 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.192, label %if.merge.193 - -if.then.192: ; preds = %entry - ret { ptr, i64 } { ptr @str.36, i64 1 } - -if.merge.193: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.194, label %if.merge.195 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.194: ; preds = %if.merge.193 +if.then.58: ; 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.195 + br label %if.merge.59 -if.merge.195: ; preds = %if.then.194, %if.merge.193 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -775,15 +907,15 @@ if.merge.195: ; preds = %if.then.194, %if.me 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.196, label %if.merge.197 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.196: ; preds = %if.merge.195 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.197 + br label %if.merge.61 -if.merge.197: ; preds = %if.then.196, %if.merge.195 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -796,15 +928,15 @@ if.merge.197: ; preds = %if.then.196, %if.me 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.198, label %if.merge.199 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.198: ; preds = %if.merge.197 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.199 + br label %if.merge.63 -if.merge.199: ; preds = %if.then.198, %if.merge.197 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -817,65 +949,116 @@ if.merge.199: ; preds = %if.then.198, %if.me 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.200, label %if.merge.201 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.200: ; preds = %if.merge.199 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.201 + br label %if.merge.65 -if.merge.201: ; preds = %if.then.200, %if.merge.199 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.222, label %if.merge.223 + +if.then.222: ; preds = %entry + ret { ptr, i64 } { ptr @str.39, i64 1 } + +if.merge.223: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.208 + br label %while.hdr.230 -while.hdr.208: ; preds = %if.merge.212, %if.merge.201 +while.hdr.230: ; preds = %if.merge.234, %if.merge.223 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.209, label %while.exit.210 + br i1 %icmpN, label %while.body.231, label %while.exit.232 -while.body.209: ; preds = %while.hdr.208 +while.body.231: ; preds = %while.hdr.230 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.211, label %if.merge.212 + br i1 %icmpN, label %if.then.233, label %if.merge.234 -while.exit.210: ; preds = %if.then.211, %while.hdr.208 +while.exit.232: ; preds = %if.then.233, %while.hdr.230 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.211: ; preds = %while.body.209 - br label %while.exit.210 +if.then.233: ; preds = %while.body.231 + br label %while.exit.232 -if.merge.212: ; preds = %while.body.209 +if.merge.234: ; preds = %while.body.231 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.208 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.230 } ; Function Attrs: nounwind @@ -954,7 +1137,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.37, i64 3 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.40, 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 @@ -962,517 +1145,544 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 39, label %match.arm.43 + i64 41, label %match.arm.43 + i64 37, label %match.arm.44 i64 38, label %match.arm.44 - i64 40, label %match.arm.44 - i64 36, label %match.arm.45 - i64 37, label %match.arm.45 - i64 52, label %match.arm.48 - i64 35, label %match.arm.49 + i64 35, label %match.arm.47 + i64 53, label %match.arm.47 + i64 36, label %match.arm.48 + i64 46, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 42, label %match.arm.49 + i64 43, label %match.arm.49 + i64 44, label %match.arm.49 i64 45, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 41, label %match.arm.50 - i64 42, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 49, label %match.arm.50 - i64 50, label %match.arm.50 - i64 51, label %match.arm.50 - i64 53, label %match.arm.50 - i64 13, label %match.arm.52 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 49, label %match.arm.49 + i64 50, label %match.arm.49 + i64 51, label %match.arm.49 + i64 52, label %match.arm.49 + i64 54, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.168, %dispatch.merge.154, %dispatch.merge.146, %dispatch.merge.138, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.198, %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.162, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.38, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.41, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [81 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 38, label %dispatch.case.81 - i64 40, label %dispatch.case.82 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 39, label %dispatch.case.105 + i64 41, label %dispatch.case.106 ] -match.arm.45: ; preds = %entry, %entry +match.arm.44: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.139 [ - i64 36, label %dispatch.case.140 - i64 37, label %dispatch.case.141 + switch i64 %ua.raw20, label %dispatch.default.163 [ + i64 37, label %dispatch.case.164 + i64 38, label %dispatch.case.165 ] +match.arm.45: ; No predecessors! + unreachable + match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.171 [ + i64 35, label %dispatch.case.172 + i64 53, label %dispatch.case.173 + ] + +match.arm.48: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.185 [ + i64 36, label %dispatch.case.186 + i64 46, label %dispatch.case.187 + ] + +match.arm.49: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw32, label %dispatch.default.199 [ + i64 18, label %dispatch.case.200 + i64 22, label %dispatch.case.201 + i64 24, label %dispatch.case.202 + i64 26, label %dispatch.case.203 + i64 28, label %dispatch.case.204 + i64 29, label %dispatch.case.205 + i64 31, label %dispatch.case.206 + i64 33, label %dispatch.case.207 + i64 42, label %dispatch.case.208 + i64 43, label %dispatch.case.209 + i64 44, label %dispatch.case.210 + i64 45, label %dispatch.case.211 + i64 47, label %dispatch.case.212 + i64 48, label %dispatch.case.213 + i64 49, label %dispatch.case.214 + i64 50, label %dispatch.case.215 + i64 51, label %dispatch.case.216 + i64 52, label %dispatch.case.217 + i64 54, label %dispatch.case.218 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.147 [ - i64 52, label %dispatch.case.148 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.155 [ - i64 35, label %dispatch.case.156 - i64 45, label %dispatch.case.157 - ] - -match.arm.50: ; preds = %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.raw34 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.169 [ - i64 18, label %dispatch.case.170 - i64 22, label %dispatch.case.171 - i64 24, label %dispatch.case.172 - i64 26, label %dispatch.case.173 - i64 28, label %dispatch.case.174 - i64 29, label %dispatch.case.175 - i64 31, label %dispatch.case.176 - i64 33, label %dispatch.case.177 - i64 41, label %dispatch.case.178 - i64 42, label %dispatch.case.179 - i64 43, label %dispatch.case.180 - i64 44, label %dispatch.case.181 - i64 46, label %dispatch.case.182 - i64 47, label %dispatch.case.183 - i64 48, label %dispatch.case.184 - i64 49, label %dispatch.case.185 - i64 50, label %dispatch.case.186 - i64 51, label %dispatch.case.187 - i64 53, label %dispatch.case.188 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [79 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [81 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.117, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.122, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load {}, ptr %ua.ptr80, align 1 - %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { i32, i32 }, ptr %ua.ptr84, align 4 - %callN = call { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %ua.load85) + %ua.load85 = load {}, ptr %ua.ptr84, align 1 + %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.138: ; preds = %dispatch.case.141, %dispatch.case.140, %dispatch.default.139 +dispatch.case.106: ; preds = %match.arm.43 + %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr + %ua.load89 = load { i32, i32 }, ptr %ua.ptr88, align 4 + %callN = call { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %ua.load89) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.162: ; preds = %dispatch.case.165, %dispatch.case.164, %dispatch.default.163 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.139: ; preds = %match.arm.45 - store { ptr, i64 } { ptr @str.118, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.138 +dispatch.default.163: ; preds = %match.arm.44 + store { ptr, i64 } { ptr @str.123, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.162 -dispatch.case.140: ; preds = %match.arm.45 - %ua.raw88 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw88) +dispatch.case.164: ; preds = %match.arm.44 + %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw92) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.138 + br label %dispatch.merge.162 -dispatch.case.141: ; preds = %match.arm.45 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw90) +dispatch.case.165: ; preds = %match.arm.44 + %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw94) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.138 + br label %dispatch.merge.162 -dispatch.merge.146: ; preds = %dispatch.case.148, %dispatch.default.147 +dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.147: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.119, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.146 +dispatch.default.171: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.124, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.170 -dispatch.case.148: ; preds = %match.arm.48 - %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr - %ua.load95 = load [1 x { i64, i64 }], ptr %ua.ptr94, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load95) +dispatch.case.172: ; preds = %match.arm.47 + %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr + %ua.load99 = load [4 x i64], ptr %ua.ptr98, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load99) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.146 + br label %dispatch.merge.170 -dispatch.merge.154: ; preds = %dispatch.case.157, %dispatch.case.156, %dispatch.default.155 +dispatch.case.173: ; preds = %match.arm.47 + %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr + %ua.load103 = load [1 x { i64, i64 }], ptr %ua.ptr102, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load103) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.170 + +dispatch.merge.184: ; preds = %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.155: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.120, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.154 +dispatch.default.185: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.125, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.184 -dispatch.case.156: ; preds = %match.arm.49 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr99 = inttoptr i64 %ua.raw98 to ptr - %ua.load100 = load { ptr, i64 }, ptr %ua.ptr99, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load100) +dispatch.case.186: ; preds = %match.arm.48 + %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr107 = inttoptr i64 %ua.raw106 to ptr + %ua.load108 = load { ptr, i64 }, ptr %ua.ptr107, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load108) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.157: ; preds = %match.arm.49 - %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr103 = inttoptr i64 %ua.raw102 to ptr - %ua.load104 = load { ptr, i64 }, ptr %ua.ptr103, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load104) +dispatch.case.187: ; preds = %match.arm.48 + %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr111 = inttoptr i64 %ua.raw110 to ptr + %ua.load112 = load { ptr, i64 }, ptr %ua.ptr111, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load112) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.merge.168: ; preds = %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.case.180, %dispatch.case.179, %dispatch.case.178, %dispatch.case.177, %dispatch.case.176, %dispatch.case.175, %dispatch.case.174, %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.default.169 +dispatch.merge.198: ; preds = %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.case.211, %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.default.199 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.169: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.121, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.168 +dispatch.default.199: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.198 -dispatch.case.170: ; preds = %match.arm.50 - %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw107 to ptr +dispatch.case.200: ; preds = %match.arm.49 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw115 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.168 + br label %dispatch.merge.198 -dispatch.case.171: ; preds = %match.arm.50 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %iNp110 = inttoptr i64 %ua.raw109 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp110) +dispatch.case.201: ; preds = %match.arm.49 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %iNp118 = inttoptr i64 %ua.raw117 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp118) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.172: ; preds = %match.arm.50 - %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 - %iNp113 = inttoptr i64 %ua.raw112 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp113) +dispatch.case.202: ; preds = %match.arm.49 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %iNp121 = inttoptr i64 %ua.raw120 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp121) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.173: ; preds = %match.arm.50 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp116 = inttoptr i64 %ua.raw115 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp116) +dispatch.case.203: ; preds = %match.arm.49 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp124 = inttoptr i64 %ua.raw123 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.174: ; preds = %match.arm.50 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %iNp119 = inttoptr i64 %ua.raw118 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp119) +dispatch.case.204: ; preds = %match.arm.49 + %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 + %iNp127 = inttoptr i64 %ua.raw126 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.175: ; preds = %match.arm.50 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp122) +dispatch.case.205: ; preds = %match.arm.49 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.176: ; preds = %match.arm.50 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp125) +dispatch.case.206: ; preds = %match.arm.49 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.177: ; preds = %match.arm.50 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp128) +dispatch.case.207: ; preds = %match.arm.49 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.178: ; preds = %match.arm.50 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp131) +dispatch.case.208: ; preds = %match.arm.49 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.179: ; preds = %match.arm.50 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp134) +dispatch.case.209: ; preds = %match.arm.49 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.180: ; preds = %match.arm.50 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp137) +dispatch.case.210: ; preds = %match.arm.49 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.181: ; preds = %match.arm.50 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp140) +dispatch.case.211: ; preds = %match.arm.49 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.182: ; preds = %match.arm.50 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp143) +dispatch.case.212: ; preds = %match.arm.49 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.183: ; preds = %match.arm.50 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp146) +dispatch.case.213: ; preds = %match.arm.49 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.184: ; preds = %match.arm.50 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp149) +dispatch.case.214: ; preds = %match.arm.49 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.185: ; preds = %match.arm.50 - %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 - %iNp152 = inttoptr i64 %ua.raw151 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp152) +dispatch.case.215: ; preds = %match.arm.49 + %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 + %iNp160 = inttoptr i64 %ua.raw159 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp160) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.186: ; preds = %match.arm.50 - %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 - %iNp155 = inttoptr i64 %ua.raw154 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Point(ptr %0, ptr %iNp155) +dispatch.case.216: ; preds = %match.arm.49 + %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 + %iNp163 = inttoptr i64 %ua.raw162 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Point(ptr %0, ptr %iNp163) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.187: ; preds = %match.arm.50 - %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 - %iNp158 = inttoptr i64 %ua.raw157 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp158) +dispatch.case.217: ; preds = %match.arm.49 + %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 + %iNp166 = inttoptr i64 %ua.raw165 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp166) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 -dispatch.case.188: ; preds = %match.arm.50 - %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 - %iNp161 = inttoptr i64 %ua.raw160 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp161) +dispatch.case.218: ; preds = %match.arm.49 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %iNp169 = inttoptr i64 %ua.raw168 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp169) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.198 } ; Function Attrs: nounwind @@ -1481,7 +1691,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.122, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.127, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1512,7 +1722,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1530,9 +1740,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1570,14 +1780,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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 @@ -1585,99 +1795,99 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, 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.125, i64 4 }) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.13 - -if.merge.13: ; preds = %if.then.12, %if.then.9 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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.127, 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.11 - -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.129, 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.130, i64 4 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.13 + +if.merge.13: ; preds = %if.then.12, %if.then.9 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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.132, 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.11 + +if.then.23: ; preds = %if.else.10 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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.134, 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.130, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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.26 + br label %if.merge.25 -if.else.25: ; preds = %if.else.10 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 + br label %if.merge.25 -if.merge.26: ; preds = %if.else.25, %if.then.24 +if.merge.25: ; preds = %if.else.24, %if.then.23 br label %if.merge.11 -if.then.27: ; preds = %if.else.4 +if.then.26: ; preds = %if.else.4 %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.30, label %if.else.31 + br i1 %icmpN, label %if.then.29, label %if.else.30 -if.else.28: ; preds = %if.else.4 +if.else.27: ; preds = %if.else.4 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.29 + br label %if.merge.28 -if.merge.29: ; preds = %if.merge.32, %if.else.28 +if.merge.28: ; preds = %if.merge.31, %if.else.27 br label %if.merge.5 -if.then.30: ; preds = %if.then.27 +if.then.29: ; preds = %if.then.26 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1686,20 +1896,20 @@ if.then.30: ; preds = %if.then.27 %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.33, label %if.else.34 + br i1 %icmpN, label %if.then.32, label %if.else.33 -if.else.31: ; preds = %if.then.27 +if.else.30: ; preds = %if.then.26 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.32 + br label %if.merge.31 -if.merge.32: ; preds = %if.merge.35, %if.else.31 - br label %if.merge.29 +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 -if.then.33: ; preds = %if.then.30 +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 36 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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 @@ -1707,7 +1917,7 @@ if.then.33: ; preds = %if.then.30 %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.132, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -1718,27 +1928,27 @@ if.then.33: ; preds = %if.then.30 %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.133, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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.35 + br label %if.merge.34 -if.else.34: ; preds = %if.then.30 +if.else.33: ; preds = %if.then.29 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 -if.then.36: ; preds = %while.exit.2 +if.then.35: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 36 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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 @@ -1746,7 +1956,7 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, 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 @@ -1757,11 +1967,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1953,34 +2163,40 @@ declare ptr @cstring.22(ptr, i64) #0 declare ptr @int_to_string.23(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @bool_to_string.24(ptr, i1) #0 +declare ptr @uint_to_string.24(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @float_to_string.25(ptr, double) #0 +declare ptr @bool_to_string.25(ptr, i1) #0 ; Function Attrs: nounwind -declare void @hex_group.26(ptr, ptr, i64, i64) #0 +declare ptr @float_to_string.26(ptr, double) #0 ; Function Attrs: nounwind -declare ptr @int_to_hex_string.27(ptr, i64) #0 +declare void @hex_group.27(ptr, ptr, i64, i64) #0 ; Function Attrs: nounwind -declare ptr @concat.28(ptr, ptr, ptr) #0 +declare [4 x i64] @decompose_u16x4.28(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @substr.29(ptr, ptr, i64, i64) #0 +declare ptr @int_to_hex_string.29(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @xml_escape.30(ptr, ptr) #0 +declare ptr @concat.30(ptr, ptr, ptr) #0 ; Function Attrs: nounwind -declare ptr @path_join.31(ptr, ptr) #0 +declare ptr @substr.31(ptr, ptr, i64, i64) #0 ; Function Attrs: nounwind -declare ptr @any_to_string.32(ptr, [2 x i64]) #0 +declare ptr @xml_escape.32(ptr, ptr) #0 ; Function Attrs: nounwind -declare ptr @build_format.33(ptr, ptr) #0 +declare ptr @path_join.33(ptr, ptr) #0 + +; Function Attrs: nounwind +declare ptr @any_to_string.34(ptr, [2 x i64]) #0 + +; Function Attrs: nounwind +declare ptr @build_format.35(ptr, ptr) #0 ; Function Attrs: nounwind declare ptr @cwd_greet(ptr) #0 @@ -2040,14 +2256,14 @@ entry: define internal void @print__ct_s86e89ca9c0674196__pack(ptr %0) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.137, i64 29 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.142, i64 29 }, 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.138, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.143, 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 29) @@ -2063,7 +2279,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.139, i64 29 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, i64 29 }) ret { ptr, i64 } %call } @@ -2071,7 +2287,7 @@ entry: define internal void @print__ct_sfd746eca0faee40b__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.140, i64 11 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.145, i64 11 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2087,7 +2303,7 @@ entry: %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.141, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.146, 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 8) @@ -2115,7 +2331,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.142, i64 11 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.147, i64 11 }) ret { ptr, i64 } %call } @@ -2123,7 +2339,7 @@ entry: define internal void @print__ct_s61f699add92dd2af__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.143, i64 9 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.148, i64 9 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2139,7 +2355,7 @@ entry: %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.144, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.149, 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 6) @@ -2167,7 +2383,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.145, i64 9 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.150, i64 9 }) ret { ptr, i64 } %call } @@ -2176,35 +2392,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.146, i64 15 }, { ptr, i64 } { ptr @str.147, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.151, i64 15 }, { 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.83 + br label %while.hdr.107 -while.hdr.83: ; preds = %fv.merge, %entry +while.hdr.107: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.84, label %while.exit.85 + br i1 %icmp, label %while.body.108, label %while.exit.109 -while.body.84: ; preds = %while.hdr.83 +while.body.108: ; preds = %while.hdr.107 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.86, label %if.merge.87 + br i1 %icmpN, label %if.then.110, label %if.merge.111 -while.exit.85: ; preds = %while.hdr.83 +while.exit.109: ; preds = %while.hdr.107 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 1 }) ret { ptr, i64 } %callN -if.then.86: ; preds = %while.body.84 +if.then.110: ; preds = %while.body.108 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 2 }) + %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.87 + br label %if.merge.111 -if.merge.87: ; preds = %if.then.86, %while.body.84 +if.merge.111: ; preds = %if.then.110, %while.body.108 %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 @@ -2212,7 +2428,7 @@ if.merge.87: ; preds = %if.then.86, %while. %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.153, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, 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 @@ -2232,12 +2448,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.83 + br label %while.hdr.107 -fv.default: ; preds = %if.merge.87 +fv.default: ; preds = %if.merge.111 br label %fv.merge -fv.case: ; preds = %if.merge.87 +fv.case: ; preds = %if.merge.111 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2245,19 +2461,19 @@ fv.case: ; preds = %if.merge.87 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.87 +fv.case17: ; preds = %if.merge.111 %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.87 +fv.case20: ; preds = %if.merge.111 %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.87 +fv.case24: ; preds = %if.merge.111 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2271,43 +2487,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.154, i64 9 }, { ptr, i64 } { ptr @str.155, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.159, i64 9 }, { ptr, i64 } { ptr @str.160, 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.88 + br label %while.hdr.112 -while.hdr.88: ; preds = %fv.merge, %entry +while.hdr.112: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.89, label %while.exit.90 + br i1 %icmp, label %while.body.113, label %while.exit.114 -while.body.89: ; preds = %while.hdr.88 +while.body.113: ; preds = %while.hdr.112 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.91, label %if.merge.92 + br i1 %icmpN, label %if.then.115, label %if.merge.116 -while.exit.90: ; preds = %while.hdr.88 +while.exit.114: ; preds = %while.hdr.112 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 1 }) ret { ptr, i64 } %callN -if.then.91: ; preds = %while.body.89 +if.then.115: ; preds = %while.body.113 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.92 + br label %if.merge.116 -if.merge.92: ; preds = %if.then.91, %while.body.89 +if.merge.116: ; preds = %if.then.115, %while.body.113 %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.161, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.166, 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.162, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8 @@ -2326,24 +2542,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.88 + br label %while.hdr.112 -fv.default: ; preds = %if.merge.92 +fv.default: ; preds = %if.merge.116 br label %fv.merge -fv.case: ; preds = %if.merge.92 +fv.case: ; preds = %if.merge.116 %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.92 +fv.case17: ; preds = %if.merge.116 %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.92 +fv.case21: ; preds = %if.merge.116 %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 @@ -2355,43 +2571,43 @@ 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.163, i64 10 }, { ptr, i64 } { ptr @str.164, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.168, i64 10 }, { ptr, i64 } { ptr @str.169, 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.93 + br label %while.hdr.117 -while.hdr.93: ; preds = %if.merge.97, %entry +while.hdr.117: ; preds = %if.merge.121, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.94, label %while.exit.95 + br i1 %icmp, label %while.body.118, label %while.exit.119 -while.body.94: ; preds = %while.hdr.93 +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.96, label %if.merge.97 + br i1 %icmpN, label %if.then.120, label %if.merge.121 -while.exit.95: ; preds = %while.hdr.93 +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.165, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 1 }) ret { ptr, i64 } %callN -if.then.96: ; preds = %while.body.94 +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.166, i64 2 }) + %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 - br label %if.merge.97 + br label %if.merge.121 -if.merge.97: ; preds = %if.then.96, %while.body.94 +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 [0 x { ptr, i64 }], ptr @field_names.167, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.172, 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.168, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2402,7 +2618,7 @@ if.merge.97: ; preds = %if.then.96, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.93 + br label %while.hdr.117 } ; Function Attrs: nounwind @@ -2410,43 +2626,43 @@ 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.169, i64 3 }, { ptr, i64 } { ptr @str.170, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.174, i64 3 }, { ptr, i64 } { ptr @str.175, 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.98 + br label %while.hdr.122 -while.hdr.98: ; preds = %fv.merge, %entry +while.hdr.122: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.99, label %while.exit.100 + br i1 %icmp, label %while.body.123, label %while.exit.124 -while.body.99: ; preds = %while.hdr.98 +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.101, label %if.merge.102 + br i1 %icmpN, label %if.then.125, label %if.merge.126 -while.exit.100: ; preds = %while.hdr.98 +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.171, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) ret { ptr, i64 } %callN -if.then.101: ; preds = %while.body.99 +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.172, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.102 + br label %if.merge.126 -if.merge.102: ; preds = %if.then.101, %while.body.99 +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 [1 x { ptr, i64 }], ptr @field_names.174, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 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.175, i64 2 }) + %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 { i64 }, ptr %alloca, align 8 @@ -2463,12 +2679,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.98 + br label %while.hdr.122 -fv.default: ; preds = %if.merge.102 +fv.default: ; preds = %if.merge.126 br label %fv.merge -fv.case: ; preds = %if.merge.102 +fv.case: ; preds = %if.merge.126 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2479,43 +2695,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.176, i64 10 }, { ptr, i64 } { ptr @str.177, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.181, i64 10 }, { 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.103 + br label %while.hdr.127 -while.hdr.103: ; preds = %fv.merge, %entry +while.hdr.127: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.104, label %while.exit.105 + br i1 %icmp, label %while.body.128, label %while.exit.129 -while.body.104: ; preds = %while.hdr.103 +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.106, label %if.merge.107 + br i1 %icmpN, label %if.then.130, label %if.merge.131 -while.exit.105: ; preds = %while.hdr.103 +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.178, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 1 }) ret { ptr, i64 } %callN -if.then.106: ; preds = %while.body.104 +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.179, i64 2 }) + %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.107 + br label %if.merge.131 -if.merge.107: ; preds = %if.then.106, %while.body.104 +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 [2 x { ptr, i64 }], ptr @field_names.182, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.187, 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.183, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, 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 @@ -2533,18 +2749,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.103 + br label %while.hdr.127 -fv.default: ; preds = %if.merge.107 +fv.default: ; preds = %if.merge.131 br label %fv.merge -fv.case: ; preds = %if.merge.107 +fv.case: ; preds = %if.merge.131 %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.107 +fv.case17: ; preds = %if.merge.131 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2555,43 +2771,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.184, i64 5 }, { ptr, i64 } { ptr @str.185, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.189, i64 5 }, { ptr, i64 } { ptr @str.190, 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.108 + br label %while.hdr.132 -while.hdr.108: ; preds = %fv.merge, %entry +while.hdr.132: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.109, label %while.exit.110 + br i1 %icmp, label %while.body.133, label %while.exit.134 -while.body.109: ; preds = %while.hdr.108 +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.111, label %if.merge.112 + br i1 %icmpN, label %if.then.135, label %if.merge.136 -while.exit.110: ; preds = %while.hdr.108 +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.186, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) ret { ptr, i64 } %callN -if.then.111: ; preds = %while.body.109 +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.187, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.112 + br label %if.merge.136 -if.merge.112: ; preds = %if.then.111, %while.body.109 +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 [3 x { ptr, i64 }], ptr @field_names.191, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.196, 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.192, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, 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 @@ -2610,23 +2826,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.108 + br label %while.hdr.132 -fv.default: ; preds = %if.merge.112 +fv.default: ; preds = %if.merge.136 br label %fv.merge -fv.case: ; preds = %if.merge.112 +fv.case: ; preds = %if.merge.136 %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.112 +fv.case17: ; preds = %if.merge.136 %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.112 +fv.case20: ; preds = %if.merge.136 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2640,43 +2856,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.193, i64 8 }, { ptr, i64 } { ptr @str.194, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 8 }, { ptr, i64 } { ptr @str.199, 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.113 + br label %while.hdr.137 -while.hdr.113: ; preds = %fv.merge, %entry +while.hdr.137: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.114, label %while.exit.115 + br i1 %icmp, label %while.body.138, label %while.exit.139 -while.body.114: ; preds = %while.hdr.113 +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.116, label %if.merge.117 + br i1 %icmpN, label %if.then.140, label %if.merge.141 -while.exit.115: ; preds = %while.hdr.113 +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.195, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.200, i64 1 }) ret { ptr, i64 } %callN -if.then.116: ; preds = %while.body.114 +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.196, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.117 + br label %if.merge.141 -if.merge.117: ; preds = %if.then.116, %while.body.114 +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 [3 x { ptr, i64 }], ptr @field_names.200, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.205, 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.201, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.206, 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 @@ -2695,23 +2911,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.113 + br label %while.hdr.137 -fv.default: ; preds = %if.merge.117 +fv.default: ; preds = %if.merge.141 br label %fv.merge -fv.case: ; preds = %if.merge.117 +fv.case: ; preds = %if.merge.141 %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.117 +fv.case17: ; preds = %if.merge.141 %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.117 +fv.case20: ; preds = %if.merge.141 %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 @@ -2722,43 +2938,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.202, i64 17 }, { ptr, i64 } { ptr @str.203, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 17 }, { ptr, i64 } { ptr @str.208, 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.118 + br label %while.hdr.142 -while.hdr.118: ; preds = %fv.merge, %entry +while.hdr.142: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.119, label %while.exit.120 + br i1 %icmp, label %while.body.143, label %while.exit.144 -while.body.119: ; preds = %while.hdr.118 +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.121, label %if.merge.122 + br i1 %icmpN, label %if.then.145, label %if.merge.146 -while.exit.120: ; preds = %while.hdr.118 +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.204, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 1 }) ret { ptr, i64 } %callN -if.then.121: ; preds = %while.body.119 +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.205, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.210, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.122 + br label %if.merge.146 -if.merge.122: ; preds = %if.then.121, %while.body.119 +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 [4 x { ptr, i64 }], ptr @field_names.210, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.215, 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.211, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, 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 @@ -2778,12 +2994,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.118 + br label %while.hdr.142 -fv.default: ; preds = %if.merge.122 +fv.default: ; preds = %if.merge.146 br label %fv.merge -fv.case: ; preds = %if.merge.122 +fv.case: ; preds = %if.merge.146 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2791,17 +3007,17 @@ fv.case: ; preds = %if.merge.122 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.122 +fv.case17: ; preds = %if.merge.146 %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.122 +fv.case20: ; preds = %if.merge.146 %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.122 +fv.case23: ; preds = %if.merge.146 %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 @@ -2812,43 +3028,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.212, i64 7 }, { ptr, i64 } { ptr @str.213, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 7 }, { ptr, i64 } { ptr @str.218, 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.123 + br label %while.hdr.147 -while.hdr.123: ; preds = %fv.merge, %entry +while.hdr.147: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.124, label %while.exit.125 + br i1 %icmp, label %while.body.148, label %while.exit.149 -while.body.124: ; preds = %while.hdr.123 +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.126, label %if.merge.127 + br i1 %icmpN, label %if.then.150, label %if.merge.151 -while.exit.125: ; preds = %while.hdr.123 +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.214, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.219, i64 1 }) ret { ptr, i64 } %callN -if.then.126: ; preds = %while.body.124 +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.215, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.220, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.127 + br label %if.merge.151 -if.merge.127: ; preds = %if.then.126, %while.body.124 +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 [2 x { ptr, i64 }], ptr @field_names.218, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.223, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, 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 @@ -2866,12 +3082,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.123 + br label %while.hdr.147 -fv.default: ; preds = %if.merge.127 +fv.default: ; preds = %if.merge.151 br label %fv.merge -fv.case: ; preds = %if.merge.127 +fv.case: ; preds = %if.merge.151 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2879,7 +3095,7 @@ fv.case: ; preds = %if.merge.127 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.127 +fv.case17: ; preds = %if.merge.151 %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 @@ -2891,43 +3107,43 @@ 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.220, i64 12 }, { ptr, i64 } { ptr @str.221, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 12 }, { ptr, i64 } { ptr @str.226, 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.128 + br label %while.hdr.152 -while.hdr.128: ; preds = %if.merge.132, %entry +while.hdr.152: ; preds = %if.merge.156, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.129, label %while.exit.130 + br i1 %icmp, label %while.body.153, label %while.exit.154 -while.body.129: ; preds = %while.hdr.128 +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.131, label %if.merge.132 + br i1 %icmpN, label %if.then.155, label %if.merge.156 -while.exit.130: ; preds = %while.hdr.128 +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.222, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 1 }) ret { ptr, i64 } %callN -if.then.131: ; preds = %while.body.129 +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.223, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.132 + br label %if.merge.156 -if.merge.132: ; preds = %if.then.131, %while.body.129 +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 [0 x { ptr, i64 }], ptr @field_names.224, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.229, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.230, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2938,7 +3154,7 @@ if.merge.132: ; preds = %if.then.131, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.128 + br label %while.hdr.152 } ; Function Attrs: nounwind @@ -2946,43 +3162,43 @@ define internal { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %1) # entry: %alloca = alloca { i32, i32 }, align 8 store { i32, i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 5 }, { ptr, i64 } { ptr @str.227, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 5 }, { ptr, i64 } { ptr @str.232, 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.133 + br label %while.hdr.157 -while.hdr.133: ; preds = %fv.merge, %entry +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.134, label %while.exit.135 + br i1 %icmp, label %while.body.158, label %while.exit.159 -while.body.134: ; preds = %while.hdr.133 +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.136, label %if.merge.137 + br i1 %icmpN, label %if.then.160, label %if.merge.161 -while.exit.135: ; preds = %while.hdr.133 +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.228, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, i64 1 }) ret { ptr, i64 } %callN -if.then.136: ; preds = %while.body.134 +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.229, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.234, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.137 + br label %if.merge.161 -if.merge.137: ; preds = %if.then.136, %while.body.134 +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.232, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.237, 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.233, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.238, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32, i32 }, ptr %alloca, align 4 @@ -3000,18 +3216,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.133 + br label %while.hdr.157 -fv.default: ; preds = %if.merge.137 +fv.default: ; preds = %if.merge.161 br label %fv.merge -fv.case: ; preds = %if.merge.137 +fv.case: ; preds = %if.merge.161 %fv.field = extractvalue { i32, i32 } %loadN, 0 %sN = sext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.137 +fv.case17: ; preds = %if.merge.161 %fv.field18 = extractvalue { i32, i32 } %loadN, 1 %sN = sext i32 %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 @@ -3027,9 +3243,9 @@ entry: %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.242, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [7 x { ptr, i64 }], ptr @field_names.247, 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.234, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, 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 @@ -3043,18 +3259,18 @@ entry: %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.142, label %if.merge.143 + br i1 %icmp, label %if.then.166, label %if.merge.167 -if.then.142: ; preds = %entry +if.then.166: ; 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.244, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.249, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, 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.143 + br label %if.merge.167 -if.merge.143: ; preds = %if.then.142, %entry +if.merge.167: ; preds = %if.then.166, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3068,9 +3284,9 @@ entry: %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.251, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [5 x { ptr, i64 }], ptr @field_names.256, 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.245, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, 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 @@ -3084,55 +3300,105 @@ entry: %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.144, label %if.merge.145 + br i1 %icmp, label %if.then.168, label %if.merge.169 -if.then.144: ; preds = %entry +if.then.168: ; 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.253, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.258, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, 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.145 + br label %if.merge.169 -if.merge.145: ; preds = %if.then.144, %entry +if.merge.169: ; preds = %if.then.168, %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 + store [4 x 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.174 + +while.hdr.174: ; preds = %if.merge.178, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.175, label %while.exit.176 + +while.body.175: ; preds = %while.hdr.174 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.177, label %if.merge.178 + +while.exit.176: ; preds = %while.hdr.174 + %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.177: ; preds = %while.body.175 + %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.178 + +if.merge.178: ; preds = %if.then.177, %while.body.175 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.174 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.254, i64 1 }, ptr %allocaN, 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.149 + br label %while.hdr.179 -while.hdr.149: ; preds = %if.merge.153, %entry +while.hdr.179: ; preds = %if.merge.183, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.150, label %while.exit.151 + br i1 %icmp, label %while.body.180, label %while.exit.181 -while.body.150: ; preds = %while.hdr.149 +while.body.180: ; preds = %while.hdr.179 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.152, label %if.merge.153 + br i1 %icmpN, label %if.then.182, label %if.merge.183 -while.exit.151: ; preds = %while.hdr.149 +while.exit.181: ; preds = %while.hdr.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.255, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.263, i64 1 }) ret { ptr, i64 } %call -if.then.152: ; preds = %while.body.150 +if.then.182: ; preds = %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.256, i64 2 }) + %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.153 + br label %if.merge.183 -if.merge.153: ; preds = %if.then.152, %while.body.150 +if.merge.183: ; preds = %if.then.182, %while.body.180 %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 @@ -3150,7 +3416,7 @@ if.merge.153: ; preds = %if.then.152, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 } ; Function Attrs: nounwind @@ -3159,35 +3425,35 @@ 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.257, i64 1 }, ptr %allocaN, 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.158 + br label %while.hdr.188 -while.hdr.158: ; preds = %if.merge.162, %entry +while.hdr.188: ; preds = %if.merge.192, %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.159, label %while.exit.160 + br i1 %icmp, label %while.body.189, label %while.exit.190 -while.body.159: ; preds = %while.hdr.158 +while.body.189: ; preds = %while.hdr.188 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.161, label %if.merge.162 + br i1 %icmpN, label %if.then.191, label %if.merge.192 -while.exit.160: ; preds = %while.hdr.158 +while.exit.190: ; preds = %while.hdr.188 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.258, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.266, i64 1 }) ret { ptr, i64 } %call -if.then.161: ; preds = %while.body.159 +if.then.191: ; preds = %while.body.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.259, i64 2 }) + %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.162 + br label %if.merge.192 -if.merge.162: ; preds = %if.then.161, %while.body.159 +if.merge.192: ; preds = %if.then.191, %while.body.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3204,7 +3470,7 @@ if.merge.162: ; preds = %if.then.161, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.158 + br label %while.hdr.188 } ; Function Attrs: nounwind @@ -3213,35 +3479,35 @@ 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.260, i64 1 }, ptr %allocaN, 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.163 + br label %while.hdr.193 -while.hdr.163: ; preds = %if.merge.167, %entry +while.hdr.193: ; preds = %if.merge.197, %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.164, label %while.exit.165 + br i1 %icmp, label %while.body.194, label %while.exit.195 -while.body.164: ; preds = %while.hdr.163 +while.body.194: ; preds = %while.hdr.193 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.166, label %if.merge.167 + br i1 %icmpN, label %if.then.196, label %if.merge.197 -while.exit.165: ; preds = %while.hdr.163 +while.exit.195: ; preds = %while.hdr.193 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.261, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.269, i64 1 }) ret { ptr, i64 } %call -if.then.166: ; preds = %while.body.164 +if.then.196: ; preds = %while.body.194 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.262, i64 2 }) + %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.167 + br label %if.merge.197 -if.merge.167: ; preds = %if.then.166, %while.body.164 +if.merge.197: ; preds = %if.then.196, %while.body.194 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3258,95 +3524,11 @@ if.merge.167: ; preds = %if.then.166, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.163 + br label %while.hdr.193 } ; 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.189, label %if.else.190 - -if.then.189: ; preds = %entry - br label %if.merge.191 - -if.else.190: ; 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.265, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.264, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.191 - -if.merge.191: ; preds = %if.else.190, %if.then.189 - %bp = phi { ptr, i64 } [ { ptr @str.263, i64 4 }, %if.then.189 ], [ %callN, %if.else.190 ] - 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.213, label %if.else.214 - -if.then.213: ; preds = %entry - br label %if.merge.215 - -if.else.214: ; 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.268, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.267, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.215 - -if.merge.215: ; preds = %if.else.214, %if.then.213 - %bp = phi { ptr, i64 } [ { ptr @str.266, i64 4 }, %if.then.213 ], [ %callN, %if.else.214 ] - 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.216, label %if.else.217 - -if.then.216: ; preds = %entry - br label %if.merge.218 - -if.else.217: ; 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.271, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.270, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.218 - -if.merge.218: ; preds = %if.else.217, %if.then.216 - %bp = phi { ptr, i64 } [ { ptr @str.269, i64 4 }, %if.then.216 ], [ %callN, %if.else.217 ] - 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 @@ -3364,12 +3546,96 @@ if.then.219: ; preds = %entry if.else.220: ; 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.274, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.273, i64 11 }, { ptr, i64 } %callN) + %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.221 if.merge.221: ; preds = %if.else.220, %if.then.219 - %bp = phi { ptr, i64 } [ { ptr @str.272, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] + %bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] + 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.235, label %if.else.236 + +if.then.235: ; preds = %entry + br label %if.merge.237 + +if.else.236: ; 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.237 + +if.merge.237: ; preds = %if.else.236, %if.then.235 + %bp = phi { ptr, i64 } [ { ptr @str.274, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] + 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.238, label %if.else.239 + +if.then.238: ; preds = %entry + br label %if.merge.240 + +if.else.239: ; 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.240 + +if.merge.240: ; preds = %if.else.239, %if.then.238 + %bp = phi { ptr, i64 } [ { ptr @str.277, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] + 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.241, label %if.else.242 + +if.then.241: ; preds = %entry + br label %if.merge.243 + +if.else.242: ; 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.243 + +if.merge.243: ; preds = %if.else.242, %if.then.241 + %bp = phi { ptr, i64 } [ { ptr @str.280, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] ret { ptr, i64 } %bp } @@ -3384,20 +3650,20 @@ entry: 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.222, label %if.else.223 + br i1 %icmp, label %if.then.244, label %if.else.245 -if.then.222: ; preds = %entry - br label %if.merge.224 +if.then.244: ; preds = %entry + br label %if.merge.246 -if.else.223: ; preds = %entry +if.else.245: ; 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.277, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.276, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.224 + %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.246 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.275, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi { ptr, i64 } [ { ptr @str.283, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] ret { ptr, i64 } %bp } @@ -3411,20 +3677,20 @@ entry: 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.225, label %if.else.226 + br i1 %icmp, label %if.then.247, label %if.else.248 -if.then.225: ; preds = %entry - br label %if.merge.227 +if.then.247: ; preds = %entry + br label %if.merge.249 -if.else.226: ; preds = %entry +if.else.248: ; 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.280, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.279, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.227 + %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.249 -if.merge.227: ; preds = %if.else.226, %if.then.225 - %bp = phi { ptr, i64 } [ { ptr @str.278, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] +if.merge.249: ; preds = %if.else.248, %if.then.247 + %bp = phi { ptr, i64 } [ { ptr @str.286, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] ret { ptr, i64 } %bp } @@ -3439,20 +3705,20 @@ entry: 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.228, label %if.else.229 + br i1 %icmp, label %if.then.250, label %if.else.251 -if.then.228: ; preds = %entry - br label %if.merge.230 +if.then.250: ; preds = %entry + br label %if.merge.252 -if.else.229: ; preds = %entry +if.else.251: ; 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.283, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.282, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.230 + %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.252 -if.merge.230: ; preds = %if.else.229, %if.then.228 - %bp = phi { ptr, i64 } [ { ptr @str.281, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] +if.merge.252: ; preds = %if.else.251, %if.then.250 + %bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] ret { ptr, i64 } %bp } @@ -3467,20 +3733,20 @@ entry: 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.231, label %if.else.232 + br i1 %icmp, label %if.then.253, label %if.else.254 -if.then.231: ; preds = %entry - br label %if.merge.233 +if.then.253: ; preds = %entry + br label %if.merge.255 -if.else.232: ; preds = %entry +if.else.254: ; 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.286, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.285, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.233 + %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.255 -if.merge.233: ; preds = %if.else.232, %if.then.231 - %bp = phi { ptr, i64 } [ { ptr @str.284, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] +if.merge.255: ; preds = %if.else.254, %if.then.253 + %bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] ret { ptr, i64 } %bp } @@ -3495,20 +3761,20 @@ entry: 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.234, label %if.else.235 + br i1 %icmp, label %if.then.256, label %if.else.257 -if.then.234: ; preds = %entry - br label %if.merge.236 +if.then.256: ; preds = %entry + br label %if.merge.258 -if.else.235: ; preds = %entry +if.else.257: ; 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.289, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.288, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.236 + %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 12 }, { ptr, i64 } %callN) + br label %if.merge.258 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.287, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] ret { ptr, i64 } %bp } @@ -3523,20 +3789,20 @@ entry: 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.237, label %if.else.238 + br i1 %icmp, label %if.then.259, label %if.else.260 -if.then.237: ; preds = %entry - br label %if.merge.239 +if.then.259: ; preds = %entry + br label %if.merge.261 -if.else.238: ; preds = %entry +if.else.260: ; 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.292, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.291, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.239 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.261 -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.290, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] ret { ptr, i64 } %bp } @@ -3551,20 +3817,20 @@ entry: 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.240, label %if.else.241 + br i1 %icmp, label %if.then.262, label %if.else.263 -if.then.240: ; preds = %entry - br label %if.merge.242 +if.then.262: ; preds = %entry + br label %if.merge.264 -if.else.241: ; preds = %entry +if.else.263: ; 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.295, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.294, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.242 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.264 -if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.293, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.301, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } @@ -3579,20 +3845,20 @@ entry: 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.243, label %if.else.244 + br i1 %icmp, label %if.then.265, label %if.else.266 -if.then.243: ; preds = %entry - br label %if.merge.245 +if.then.265: ; preds = %entry + br label %if.merge.267 -if.else.244: ; preds = %entry +if.else.266: ; 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.298, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.297, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.245 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.267 -if.merge.245: ; preds = %if.else.244, %if.then.243 - %bp = phi { ptr, i64 } [ { ptr @str.296, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] +if.merge.267: ; preds = %if.else.266, %if.then.265 + %bp = phi { ptr, i64 } [ { ptr @str.304, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] ret { ptr, i64 } %bp } @@ -3607,20 +3873,20 @@ entry: 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.246, label %if.else.247 + br i1 %icmp, label %if.then.268, label %if.else.269 -if.then.246: ; preds = %entry - br label %if.merge.248 +if.then.268: ; preds = %entry + br label %if.merge.270 -if.else.247: ; preds = %entry +if.else.269: ; 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.301, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.300, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.248 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.270 -if.merge.248: ; preds = %if.else.247, %if.then.246 - %bp = phi { ptr, i64 } [ { ptr @str.299, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] +if.merge.270: ; preds = %if.else.269, %if.then.268 + %bp = phi { ptr, i64 } [ { ptr @str.307, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] ret { ptr, i64 } %bp } @@ -3635,20 +3901,20 @@ entry: 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.249, label %if.else.250 + br i1 %icmp, label %if.then.271, label %if.else.272 -if.then.249: ; preds = %entry - br label %if.merge.251 +if.then.271: ; preds = %entry + br label %if.merge.273 -if.else.250: ; preds = %entry +if.else.272: ; 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.304, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.303, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.251 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.273 -if.merge.251: ; preds = %if.else.250, %if.then.249 - %bp = phi { ptr, i64 } [ { ptr @str.302, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] +if.merge.273: ; preds = %if.else.272, %if.then.271 + %bp = phi { ptr, i64 } [ { ptr @str.310, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] ret { ptr, i64 } %bp } @@ -3663,20 +3929,20 @@ entry: 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.252, label %if.else.253 + br i1 %icmp, label %if.then.274, label %if.else.275 -if.then.252: ; preds = %entry - br label %if.merge.254 +if.then.274: ; preds = %entry + br label %if.merge.276 -if.else.253: ; preds = %entry +if.else.275: ; 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.307, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.306, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.254 + %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 3 }, { ptr, i64 } %callN) + br label %if.merge.276 -if.merge.254: ; preds = %if.else.253, %if.then.252 - %bp = phi { ptr, i64 } [ { ptr @str.305, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] +if.merge.276: ; preds = %if.else.275, %if.then.274 + %bp = phi { ptr, i64 } [ { ptr @str.313, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] ret { ptr, i64 } %bp } @@ -3691,20 +3957,20 @@ entry: 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.255, label %if.else.256 + br i1 %icmp, label %if.then.277, label %if.else.278 -if.then.255: ; preds = %entry - br label %if.merge.257 +if.then.277: ; preds = %entry + br label %if.merge.279 -if.else.256: ; preds = %entry +if.else.278: ; 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.310, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.309, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.257 + %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 5 }, { ptr, i64 } %callN) + br label %if.merge.279 -if.merge.257: ; preds = %if.else.256, %if.then.255 - %bp = phi { ptr, i64 } [ { ptr @str.308, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] +if.merge.279: ; preds = %if.else.278, %if.then.277 + %bp = phi { ptr, i64 } [ { ptr @str.316, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] ret { ptr, i64 } %bp } @@ -3719,20 +3985,20 @@ entry: 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.258, label %if.else.259 + br i1 %icmp, label %if.then.280, label %if.else.281 -if.then.258: ; preds = %entry - br label %if.merge.260 +if.then.280: ; preds = %entry + br label %if.merge.282 -if.else.259: ; preds = %entry +if.else.281: ; 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.313, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.312, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.260 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.282 -if.merge.260: ; preds = %if.else.259, %if.then.258 - %bp = phi { ptr, i64 } [ { ptr @str.311, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] +if.merge.282: ; preds = %if.else.281, %if.then.280 + %bp = phi { ptr, i64 } [ { ptr @str.319, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] ret { ptr, i64 } %bp } @@ -3747,20 +4013,20 @@ entry: 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.261, label %if.else.262 + br i1 %icmp, label %if.then.283, label %if.else.284 -if.then.261: ; preds = %entry - br label %if.merge.263 +if.then.283: ; preds = %entry + br label %if.merge.285 -if.else.262: ; preds = %entry +if.else.284: ; 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.316, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.315, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.263 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.285 -if.merge.263: ; preds = %if.else.262, %if.then.261 - %bp = phi { ptr, i64 } [ { ptr @str.314, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] +if.merge.285: ; preds = %if.else.284, %if.then.283 + %bp = phi { ptr, i64 } [ { ptr @str.322, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] ret { ptr, i64 } %bp } @@ -3775,23 +4041,21 @@ entry: 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 + br i1 %icmp, label %if.then.286, label %if.else.287 -if.then.264: ; preds = %entry - br label %if.merge.266 +if.then.286: ; preds = %entry + br label %if.merge.288 -if.else.265: ; preds = %entry +if.else.287: ; 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.319, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.318, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.266 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.288 -if.merge.266: ; preds = %if.else.265, %if.then.264 - %bp = phi { ptr, i64 } [ { ptr @str.317, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] +if.merge.288: ; preds = %if.else.287, %if.then.286 + %bp = phi { ptr, i64 } [ { ptr @str.325, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0044-basic-default-arg-expansion.ir b/examples/expected/0044-basic-default-arg-expansion.ir index 6dfdc4e..844e197 100644 --- a/examples/expected/0044-basic-default-arg-expansion.ir +++ b/examples/expected/0044-basic-default-arg-expansion.ir @@ -1,197 +1,198 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [74 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.42 = private constant [5 x i8] c"*s64\00" -@tn.str.43 = private constant [7 x i8] c"**void\00" -@tn.str.44 = private constant [5 x i8] c"*s32\00" -@tn.str.45 = private constant [8 x i8] c"*string\00" -@tn.str.46 = private constant [6 x i8] c"[]Any\00" -@tn.str.47 = private constant [5 x i8] c"*Any\00" -@tn.str.48 = private constant [7 x i8] c"[1]Any\00" -@tn.str.49 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.50 = private constant [7 x i8] c"*[]Any\00" -@tn.str.51 = private constant [4 x i8] c"*u8\00" -@tn.str.52 = private constant [6 x i8] c"*bool\00" -@tn.str.53 = private constant [7 x i8] c"[3]Any\00" -@tn.str.54 = private constant [8 x i8] c"*[3]Any\00" -@tn.str.55 = private constant [5 x i8] c"*f64\00" -@tn.str.56 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.57 = private constant [11 x i8] c"*Allocator\00" -@tn.str.58 = private constant [9 x i8] c"*Context\00" -@tn.str.59 = private constant [10 x i8] c"*[]string\00" -@tn.str.60 = private constant [6 x i8] c"**GPA\00" -@tn.str.61 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.62 = private constant [8 x i8] c"**Arena\00" -@tn.str.63 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.64 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.65 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.66 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.67 = private constant [6 x i8] c"**s64\00" -@tn.str.68 = private constant [8 x i8] c"***void\00" -@tn.str.69 = private constant [6 x i8] c"**s32\00" -@tn.str.70 = private constant [9 x i8] c"**string\00" -@tn.str.71 = private constant [6 x i8] c"**Any\00" -@tn.str.72 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.73 = private constant [8 x i8] c"**[]Any\00" -@tn.str.74 = private constant [5 x i8] c"**u8\00" -@tn.str.75 = private constant [7 x i8] c"**bool\00" -@tn.str.76 = private constant [9 x i8] c"**[3]Any\00" -@__sx_type_names = private constant [72 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 7 }, { ptr, i64 } { ptr @tn.str.46, i64 5 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 7 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 16 }, { ptr, i64 } { ptr @tn.str.57, i64 10 }, { ptr, i64 } { ptr @tn.str.58, i64 8 }, { ptr, i64 } { ptr @tn.str.59, i64 9 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 12 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 6 }, { ptr, i64 } { ptr @tn.str.64, i64 10 }, { ptr, i64 } { ptr @tn.str.65, i64 19 }, { ptr, i64 } { ptr @tn.str.66, i64 13 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 8 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 4 }, { ptr, i64 } { ptr @tn.str.75, i64 6 }, { ptr, i64 } { ptr @tn.str.76, i64 8 }] -@str.77 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [13 x i8] c"**CAllocator\00" +@tn.str.44 = private constant [5 x i8] c"*s64\00" +@tn.str.45 = private constant [7 x i8] c"**void\00" +@tn.str.46 = private constant [5 x i8] c"*s32\00" +@tn.str.47 = private constant [8 x i8] c"*string\00" +@tn.str.48 = private constant [6 x i8] c"[]Any\00" +@tn.str.49 = private constant [5 x i8] c"*Any\00" +@tn.str.50 = private constant [7 x i8] c"[1]Any\00" +@tn.str.51 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.52 = private constant [7 x i8] c"*[]Any\00" +@tn.str.53 = private constant [4 x i8] c"*u8\00" +@tn.str.54 = private constant [6 x i8] c"*bool\00" +@tn.str.55 = private constant [7 x i8] c"[3]Any\00" +@tn.str.56 = private constant [8 x i8] c"*[3]Any\00" +@tn.str.57 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.58 = private constant [5 x i8] c"*f64\00" +@tn.str.59 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.60 = private constant [11 x i8] c"*Allocator\00" +@tn.str.61 = private constant [9 x i8] c"*Context\00" +@tn.str.62 = private constant [10 x i8] c"*[]string\00" +@tn.str.63 = private constant [6 x i8] c"**GPA\00" +@tn.str.64 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.65 = private constant [8 x i8] c"**Arena\00" +@tn.str.66 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.67 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.68 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.69 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.70 = private constant [6 x i8] c"**s64\00" +@tn.str.71 = private constant [8 x i8] c"***void\00" +@tn.str.72 = private constant [6 x i8] c"**s32\00" +@tn.str.73 = private constant [9 x i8] c"**string\00" +@tn.str.74 = private constant [6 x i8] c"**Any\00" +@tn.str.75 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.76 = private constant [8 x i8] c"**[]Any\00" +@tn.str.77 = private constant [5 x i8] c"**u8\00" +@tn.str.78 = private constant [7 x i8] c"**bool\00" +@tn.str.79 = private constant [9 x i8] c"**[3]Any\00" +@__sx_type_names = private constant [74 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 12 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 7 }, { ptr, i64 } { ptr @tn.str.48, i64 5 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 3 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 7 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 16 }, { ptr, i64 } { ptr @tn.str.60, i64 10 }, { ptr, i64 } { ptr @tn.str.61, i64 8 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 5 }, { ptr, i64 } { ptr @tn.str.64, i64 12 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 10 }, { ptr, i64 } { ptr @tn.str.68, i64 19 }, { ptr, i64 } { ptr @tn.str.69, i64 13 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 8 }, { ptr, i64 } { ptr @tn.str.74, i64 5 }, { ptr, i64 } { ptr @tn.str.75, i64 8 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 4 }, { ptr, i64 } { ptr @tn.str.78, i64 6 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }] @str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.81 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.82 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.83 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.84 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.85 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.86 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.84 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.85 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.86 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.87 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.88 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.89 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.93 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.94 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.95 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.96 = private unnamed_addr constant [2 x i8] c"v\00", align 1 -@str.97 = private unnamed_addr constant [2 x i8] c"!\00", align 1 -@str.98 = private unnamed_addr constant [2 x i8] c"x\00", align 1 -@str.99 = private unnamed_addr constant [2 x i8] c"!\00", align 1 -@str.100 = private unnamed_addr constant [2 x i8] c"y\00", align 1 -@str.101 = private unnamed_addr constant [2 x i8] c"?\00", align 1 -@str.102 = private unnamed_addr constant [13 x i8] c"default: {}\0A\00", align 1 -@str.103 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.104 = private unnamed_addr constant [13 x i8] c"default: {}\0A\00", align 1 -@str.105 = private unnamed_addr constant [14 x i8] c"explicit: {}\0A\00", align 1 +@str.96 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.97 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.98 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.99 = private unnamed_addr constant [2 x i8] c"v\00", align 1 +@str.100 = private unnamed_addr constant [2 x i8] c"!\00", align 1 +@str.101 = private unnamed_addr constant [2 x i8] c"x\00", align 1 +@str.102 = private unnamed_addr constant [2 x i8] c"!\00", align 1 +@str.103 = private unnamed_addr constant [2 x i8] c"y\00", align 1 +@str.104 = private unnamed_addr constant [2 x i8] c"?\00", align 1 +@str.105 = private unnamed_addr constant [13 x i8] c"default: {}\0A\00", align 1 @str.106 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.107 = private unnamed_addr constant [14 x i8] c"explicit: {}\0A\00", align 1 -@str.108 = private unnamed_addr constant [8 x i8] c"{}{}{}\0A\00", align 1 +@str.107 = private unnamed_addr constant [13 x i8] c"default: {}\0A\00", align 1 +@str.108 = private unnamed_addr constant [14 x i8] c"explicit: {}\0A\00", align 1 @str.109 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.110 = private unnamed_addr constant [8 x i8] c"{}{}{}\0A\00", align 1 -@str.111 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.112 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.113 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.110 = private unnamed_addr constant [14 x i8] c"explicit: {}\0A\00", align 1 +@str.111 = private unnamed_addr constant [8 x i8] c"{}{}{}\0A\00", align 1 +@str.112 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.113 = private unnamed_addr constant [8 x i8] c"{}{}{}\0A\00", align 1 +@str.114 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.115 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.116 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.117 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.115 = private constant [5 x i8] c"line\00" -@fld.str.116 = private constant [4 x i8] c"col\00" -@fld.str.117 = 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.115, i64 4 }, { ptr, i64 } { ptr @fld.str.116, i64 3 }, { ptr, i64 } { ptr @fld.str.117, i64 4 }] -@str.118 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.119 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.120 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.121 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.123 = private constant [4 x i8] c"ctx\00" -@fld.str.124 = private constant [6 x i8] c"alloc\00" -@fld.str.125 = private constant [8 x i8] c"dealloc\00" -@field_names.126 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.123, i64 3 }, { ptr, i64 } { ptr @fld.str.124, i64 5 }, { ptr, i64 } { ptr @fld.str.125, i64 7 }] -@str.127 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.128 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.130 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.132 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.133 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.134 = private unnamed_addr constant [4 x i8] c"GPA\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.138 = private constant [12 x i8] c"alloc_count\00" -@field_names.139 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.138, i64 11 }] -@str.140 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.141 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.142 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.143 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.144 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.145 = private constant [5 x i8] c"next\00" -@fld.str.146 = private constant [4 x i8] c"cap\00" -@field_names.147 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.145, i64 4 }, { ptr, i64 } { ptr @fld.str.146, i64 3 }] -@str.148 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.149 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.151 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.153 = private constant [6 x i8] c"first\00" -@fld.str.154 = private constant [10 x i8] c"end_index\00" -@fld.str.155 = private constant [7 x i8] c"parent\00" -@field_names.156 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.153, i64 5 }, { ptr, i64 } { ptr @fld.str.154, i64 9 }, { ptr, i64 } { ptr @fld.str.155, i64 6 }] -@str.157 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.158 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.159 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.160 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.161 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.162 = private constant [4 x i8] c"buf\00" -@fld.str.163 = private constant [4 x i8] c"len\00" -@fld.str.164 = private constant [4 x i8] c"pos\00" -@field_names.165 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.162, i64 3 }, { ptr, i64 } { ptr @fld.str.163, i64 3 }, { ptr, i64 } { ptr @fld.str.164, i64 3 }] -@str.166 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.167 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.168 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.169 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.170 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.171 = private constant [7 x i8] c"parent\00" -@fld.str.172 = private constant [12 x i8] c"alloc_count\00" -@fld.str.173 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.174 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.175 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.171, i64 6 }, { ptr, i64 } { ptr @fld.str.172, i64 11 }, { ptr, i64 } { ptr @fld.str.173, i64 13 }, { ptr, i64 } { ptr @fld.str.174, i64 17 }] -@str.176 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.177 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.181 = private constant [10 x i8] c"allocator\00" -@fld.str.182 = private constant [5 x i8] c"data\00" -@field_names.183 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.181, i64 9 }, { ptr, i64 } { ptr @fld.str.182, i64 4 }] -@str.184 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.185 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.187 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.118 = private constant [5 x i8] c"line\00" +@fld.str.119 = private constant [4 x i8] c"col\00" +@fld.str.120 = 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.118, i64 4 }, { ptr, i64 } { ptr @fld.str.119, i64 3 }, { ptr, i64 } { ptr @fld.str.120, i64 4 }] +@str.121 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.122 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.123 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.124 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.126 = private constant [4 x i8] c"ctx\00" +@fld.str.127 = private constant [6 x i8] c"alloc\00" +@fld.str.128 = private constant [8 x i8] c"dealloc\00" +@field_names.129 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.126, i64 3 }, { ptr, i64 } { ptr @fld.str.127, i64 5 }, { ptr, i64 } { ptr @fld.str.128, i64 7 }] +@str.130 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.131 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.133 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.135 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.136 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.137 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.138 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.141 = private constant [12 x i8] c"alloc_count\00" +@field_names.142 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.141, i64 11 }] +@str.143 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.144 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.145 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.148 = private constant [5 x i8] c"next\00" +@fld.str.149 = private constant [4 x i8] c"cap\00" +@field_names.150 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.148, i64 4 }, { ptr, i64 } { ptr @fld.str.149, i64 3 }] +@str.151 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.152 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.153 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.154 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.156 = private constant [6 x i8] c"first\00" +@fld.str.157 = private constant [10 x i8] c"end_index\00" +@fld.str.158 = private constant [7 x i8] c"parent\00" +@field_names.159 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.156, i64 5 }, { ptr, i64 } { ptr @fld.str.157, i64 9 }, { ptr, i64 } { ptr @fld.str.158, i64 6 }] +@str.160 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.161 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.162 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.163 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.165 = private constant [4 x i8] c"buf\00" +@fld.str.166 = private constant [4 x i8] c"len\00" +@fld.str.167 = private constant [4 x i8] c"pos\00" +@field_names.168 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.165, i64 3 }, { ptr, i64 } { ptr @fld.str.166, i64 3 }, { ptr, i64 } { ptr @fld.str.167, i64 3 }] +@str.169 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.170 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.171 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.172 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.174 = private constant [7 x i8] c"parent\00" +@fld.str.175 = private constant [12 x i8] c"alloc_count\00" +@fld.str.176 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.177 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.178 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.174, i64 6 }, { ptr, i64 } { ptr @fld.str.175, i64 11 }, { ptr, i64 } { ptr @fld.str.176, i64 13 }, { ptr, i64 } { ptr @fld.str.177, i64 17 }] +@str.179 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.180 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.181 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.182 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.184 = private constant [10 x i8] c"allocator\00" +@fld.str.185 = private constant [5 x i8] c"data\00" +@field_names.186 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.184, i64 9 }, { ptr, i64 } { ptr @fld.str.185, i64 4 }] +@str.187 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.188 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.189 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.190 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -201,63 +202,69 @@ @str.194 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.195 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.196 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.197 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.198 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.199 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.200 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.201 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.202 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.198 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.199 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.201 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.203 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.204 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.204 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.205 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.206 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.207 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.207 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.208 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.209 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.210 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.210 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.211 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.212 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.213 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.213 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.214 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.215 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.216 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.216 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.217 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.218 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.219 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.219 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.220 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.221 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.222 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.222 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.223 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.224 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.225 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.225 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.226 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.227 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.228 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.228 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.229 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.230 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.231 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.231 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.232 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.233 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.234 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.234 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.235 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.236 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.237 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.237 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 @str.238 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.239 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.240 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.240 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.241 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.242 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.243 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.243 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.244 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.245 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.246 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.246 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.247 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.248 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.249 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.249 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.250 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.251 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.252 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 +@str.252 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.253 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.254 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.255 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.256 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.257 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.258 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 +@str.259 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -396,38 +403,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -440,50 +452,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -497,19 +637,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -526,15 +666,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -552,16 +692,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -578,17 +718,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -651,39 +791,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.188 + br label %while.hdr.210 -while.hdr.188: ; preds = %if.merge.193, %entry +while.hdr.210: ; preds = %if.merge.215, %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.189, label %while.exit.190 + br i1 %icmp, label %while.body.211, label %while.exit.212 -while.body.189: ; preds = %while.hdr.188 +while.body.211: ; preds = %while.hdr.210 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.191, label %if.else.192 + br i1 %icmpN, label %if.then.213, label %if.else.214 -while.exit.190: ; preds = %while.hdr.188 +while.exit.212: ; preds = %while.hdr.210 ret void -if.then.191: ; preds = %while.body.189 +if.then.213: ; preds = %while.body.211 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.193 + br label %if.merge.215 -if.else.192: ; preds = %while.body.189 +if.else.214: ; preds = %while.body.211 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.193 + br label %if.merge.215 -if.merge.193: ; preds = %if.else.192, %if.then.191 - %bp = phi i64 [ %addN, %if.then.191 ], [ %addN, %if.else.192 ] +if.merge.215: ; preds = %if.else.214, %if.then.213 + %bp = phi i64 [ %addN, %if.then.213 ], [ %addN, %if.else.214 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -696,37 +836,29 @@ if.merge.193: ; preds = %if.else.192, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.188 + br label %while.hdr.210 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.178, label %if.merge.179 - -if.then.178: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.179: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.180, label %if.merge.181 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.180: ; preds = %if.merge.179 +if.then.58: ; 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.181 + br label %if.merge.59 -if.merge.181: ; preds = %if.then.180, %if.merge.179 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -739,15 +871,15 @@ if.merge.181: ; preds = %if.then.180, %if.me 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.182, label %if.merge.183 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.182: ; preds = %if.merge.181 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.183 + br label %if.merge.61 -if.merge.183: ; preds = %if.then.182, %if.merge.181 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -760,15 +892,15 @@ if.merge.183: ; preds = %if.then.182, %if.me 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.184, label %if.merge.185 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.184: ; preds = %if.merge.183 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.185 + br label %if.merge.63 -if.merge.185: ; preds = %if.then.184, %if.merge.183 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -781,65 +913,116 @@ if.merge.185: ; preds = %if.then.184, %if.me 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.186, label %if.merge.187 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.186: ; preds = %if.merge.185 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.187 + br label %if.merge.65 -if.merge.187: ; preds = %if.then.186, %if.merge.185 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.208, label %if.merge.209 + +if.then.208: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.209: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.194 + br label %while.hdr.216 -while.hdr.194: ; preds = %if.merge.198, %if.merge.187 +while.hdr.216: ; preds = %if.merge.220, %if.merge.209 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.195, label %while.exit.196 + br i1 %icmpN, label %while.body.217, label %while.exit.218 -while.body.195: ; preds = %while.hdr.194 +while.body.217: ; preds = %while.hdr.216 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.197, label %if.merge.198 + br i1 %icmpN, label %if.then.219, label %if.merge.220 -while.exit.196: ; preds = %if.then.197, %while.hdr.194 +while.exit.218: ; preds = %if.then.219, %while.hdr.216 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.197: ; preds = %while.body.195 - br label %while.exit.196 +if.then.219: ; preds = %while.body.217 + br label %while.exit.218 -if.merge.198: ; preds = %while.body.195 +if.merge.220: ; preds = %while.body.217 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.194 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.216 } ; Function Attrs: nounwind @@ -918,7 +1101,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -926,477 +1109,504 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 43, label %match.arm.48 - i64 48, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 35, label %match.arm.47 + i64 44, label %match.arm.47 + i64 49, label %match.arm.47 + i64 36, label %match.arm.48 + i64 42, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 37, label %match.arm.49 + i64 38, label %match.arm.49 + i64 39, label %match.arm.49 + i64 40, label %match.arm.49 i64 41, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 36, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 39, label %match.arm.50 - i64 40, label %match.arm.50 - i64 42, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 49, label %match.arm.50 - i64 13, label %match.arm.52 + i64 43, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 50, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.154, %dispatch.merge.140, %dispatch.merge.126, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.150, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [74 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable +match.arm.47: ; preds = %entry, %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.151 [ + i64 35, label %dispatch.case.152 + i64 44, label %dispatch.case.153 + i64 49, label %dispatch.case.154 + ] match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.127 [ - i64 43, label %dispatch.case.128 - i64 48, label %dispatch.case.129 + switch i64 %ua.raw24, label %dispatch.default.171 [ + i64 36, label %dispatch.case.172 + i64 42, label %dispatch.case.173 ] -match.arm.49: ; preds = %entry, %entry +match.arm.49: ; preds = %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.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.141 [ - i64 35, label %dispatch.case.142 - i64 41, label %dispatch.case.143 + switch i64 %ua.raw28, label %dispatch.default.185 [ + i64 18, label %dispatch.case.186 + i64 22, label %dispatch.case.187 + i64 24, label %dispatch.case.188 + i64 26, label %dispatch.case.189 + i64 28, label %dispatch.case.190 + i64 29, label %dispatch.case.191 + i64 31, label %dispatch.case.192 + i64 33, label %dispatch.case.193 + i64 37, label %dispatch.case.194 + i64 38, label %dispatch.case.195 + i64 39, label %dispatch.case.196 + i64 40, label %dispatch.case.197 + i64 41, label %dispatch.case.198 + i64 43, label %dispatch.case.199 + i64 45, label %dispatch.case.200 + i64 46, label %dispatch.case.201 + i64 47, label %dispatch.case.202 + i64 48, label %dispatch.case.203 + i64 50, label %dispatch.case.204 ] -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.155 [ - i64 18, label %dispatch.case.156 - i64 22, label %dispatch.case.157 - i64 24, label %dispatch.case.158 - i64 26, label %dispatch.case.159 - i64 28, label %dispatch.case.160 - i64 29, label %dispatch.case.161 - i64 31, label %dispatch.case.162 - i64 33, label %dispatch.case.163 - i64 36, label %dispatch.case.164 - i64 37, label %dispatch.case.165 - i64 38, label %dispatch.case.166 - i64 39, label %dispatch.case.167 - i64 40, label %dispatch.case.168 - i64 42, label %dispatch.case.169 - i64 44, label %dispatch.case.170 - i64 45, label %dispatch.case.171 - i64 46, label %dispatch.case.172 - i64 47, label %dispatch.case.173 - i64 49, label %dispatch.case.174 - ] - -match.arm.51: ; No predecessors! +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [72 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [74 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.126: ; preds = %dispatch.case.129, %dispatch.case.128, %dispatch.default.127 +dispatch.case.104: ; preds = %match.arm.43 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.150: ; preds = %dispatch.case.154, %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.127: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.126 +dispatch.default.151: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.150 -dispatch.case.128: ; preds = %match.arm.48 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [1 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load78) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 - -dispatch.case.129: ; preds = %match.arm.48 +dispatch.case.152: ; preds = %match.arm.47 %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr - %ua.load82 = load [3 x { i64, i64 }], ptr %ua.ptr81, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load82) + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.merge.140: ; preds = %dispatch.case.143, %dispatch.case.142, %dispatch.default.141 +dispatch.case.153: ; preds = %match.arm.47 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.case.154: ; preds = %match.arm.47 + %ua.raw88 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr89 = inttoptr i64 %ua.raw88 to ptr + %ua.load90 = load [3 x { i64, i64 }], ptr %ua.ptr89, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load90) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.141: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.140 +dispatch.default.171: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.170 -dispatch.case.142: ; preds = %match.arm.49 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.172: ; preds = %match.arm.48 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.case.143: ; preds = %match.arm.49 - %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr - %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load91) +dispatch.case.173: ; preds = %match.arm.48 + %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr + %ua.load99 = load { ptr, i64 }, ptr %ua.ptr98, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load99) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.merge.154: ; preds = %dispatch.case.174, %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.default.155 +dispatch.merge.184: ; preds = %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.155: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.154 +dispatch.default.185: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.184 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw94 to ptr +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw102 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.154 + br label %dispatch.merge.184 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 - %iNp97 = inttoptr i64 %ua.raw96 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp97) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 + %iNp105 = inttoptr i64 %ua.raw104 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp105) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 - %iNp100 = inttoptr i64 %ua.raw99 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp100) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 + %iNp108 = inttoptr i64 %ua.raw107 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp108) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 - %iNp103 = inttoptr i64 %ua.raw102 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp103) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 + %iNp111 = inttoptr i64 %ua.raw110 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp111) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 - %iNp106 = inttoptr i64 %ua.raw105 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp106) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %iNp114 = inttoptr i64 %ua.raw113 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp114) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 - %iNp109 = inttoptr i64 %ua.raw108 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp109) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 + %iNp117 = inttoptr i64 %ua.raw116 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp117) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 - %iNp112 = inttoptr i64 %ua.raw111 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp112) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 + %iNp120 = inttoptr i64 %ua.raw119 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %iNp115 = inttoptr i64 %ua.raw114 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp115) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 + %iNp123 = inttoptr i64 %ua.raw122 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp123) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 - %iNp118 = inttoptr i64 %ua.raw117 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp118) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 + %iNp126 = inttoptr i64 %ua.raw125 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp126) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 - %iNp121 = inttoptr i64 %ua.raw120 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp121) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 + %iNp129 = inttoptr i64 %ua.raw128 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp129) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 - %iNp124 = inttoptr i64 %ua.raw123 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp124) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 + %iNp132 = inttoptr i64 %ua.raw131 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp132) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 - %iNp127 = inttoptr i64 %ua.raw126 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp127) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 + %iNp135 = inttoptr i64 %ua.raw134 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp135) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.168: ; preds = %match.arm.50 - %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 - %iNp130 = inttoptr i64 %ua.raw129 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp130) +dispatch.case.198: ; preds = %match.arm.49 + %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 + %iNp138 = inttoptr i64 %ua.raw137 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp138) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.169: ; preds = %match.arm.50 - %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 - %iNp133 = inttoptr i64 %ua.raw132 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp133) +dispatch.case.199: ; preds = %match.arm.49 + %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 + %iNp141 = inttoptr i64 %ua.raw140 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp141) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.170: ; preds = %match.arm.50 - %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 - %iNp136 = inttoptr i64 %ua.raw135 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp136) +dispatch.case.200: ; preds = %match.arm.49 + %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 + %iNp144 = inttoptr i64 %ua.raw143 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp144) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.171: ; preds = %match.arm.50 - %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 - %iNp139 = inttoptr i64 %ua.raw138 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp139) +dispatch.case.201: ; preds = %match.arm.49 + %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 + %iNp147 = inttoptr i64 %ua.raw146 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp147) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.172: ; preds = %match.arm.50 - %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 - %iNp142 = inttoptr i64 %ua.raw141 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp142) +dispatch.case.202: ; preds = %match.arm.49 + %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 + %iNp150 = inttoptr i64 %ua.raw149 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp150) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.173: ; preds = %match.arm.50 - %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 - %iNp145 = inttoptr i64 %ua.raw144 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp145) +dispatch.case.203: ; preds = %match.arm.49 + %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 + %iNp153 = inttoptr i64 %ua.raw152 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp153) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.174: ; preds = %match.arm.50 - %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 - %iNp148 = inttoptr i64 %ua.raw147 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp148) +dispatch.case.204: ; preds = %match.arm.49 + %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 + %iNp156 = inttoptr i64 %ua.raw155 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp156) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 } ; Function Attrs: nounwind @@ -1405,7 +1615,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.81, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.84, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1436,7 +1646,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1454,9 +1664,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1494,14 +1704,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, 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 @@ -1509,7 +1719,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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 @@ -1519,13 +1729,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, 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 @@ -1533,7 +1743,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1545,83 +1755,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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.88, 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.89, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1649,18 +1783,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1673,6 +1844,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, 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.95, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, 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.97, 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 @@ -1681,11 +1891,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1727,9 +1937,9 @@ entry: call void @print__ct_sc20f1d9fe3bc82ac__pack_s32(ptr @__sx_default_context, i32 %call) %callN = call i32 @scale(ptr @__sx_default_context, i32 5, i32 3) call void @print__ct_sfb0b0da1195bd991__pack_s32(ptr @__sx_default_context, i32 %callN) - %callN = call i32 @label(ptr @__sx_default_context, i32 1, { ptr, i64 } { ptr @str.96, i64 1 }, { ptr, i64 } { ptr @str.97, i64 1 }) - %callN = call i32 @label(ptr @__sx_default_context, i32 2, { ptr, i64 } { ptr @str.98, i64 1 }, { ptr, i64 } { ptr @str.99, i64 1 }) - %callN = call i32 @label(ptr @__sx_default_context, i32 3, { ptr, i64 } { ptr @str.100, i64 1 }, { ptr, i64 } { ptr @str.101, i64 1 }) + %callN = call i32 @label(ptr @__sx_default_context, i32 1, { ptr, i64 } { ptr @str.99, i64 1 }, { ptr, i64 } { ptr @str.100, i64 1 }) + %callN = call i32 @label(ptr @__sx_default_context, i32 2, { ptr, i64 } { ptr @str.101, i64 1 }, { ptr, i64 } { ptr @str.102, i64 1 }) + %callN = call i32 @label(ptr @__sx_default_context, i32 3, { ptr, i64 } { ptr @str.103, i64 1 }, { ptr, i64 } { ptr @str.104, i64 1 }) ret i32 0 } @@ -1751,7 +1961,7 @@ entry: define internal void @print__ct_sc20f1d9fe3bc82ac__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.102, i64 12 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.105, i64 12 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1767,7 +1977,7 @@ entry: %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.103, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.106, 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 9) @@ -1795,7 +2005,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.104, i64 12 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.107, i64 12 }) ret { ptr, i64 } %call } @@ -1803,7 +2013,7 @@ entry: define internal void @print__ct_sfb0b0da1195bd991__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.105, i64 13 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.108, i64 13 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1819,7 +2029,7 @@ entry: %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.106, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.109, 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 10) @@ -1847,7 +2057,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.107, i64 13 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.110, i64 13 }) ret { ptr, i64 } %call } @@ -1855,7 +2065,7 @@ entry: define internal void @print__ct_s7d5f90608c43cc01__pack_string_s32_string(ptr %0, { ptr, i64 } %1, i32 %2, { ptr, i64 } %3) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.108, i64 7 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.111, i64 7 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %allocaN, align 8 %allocaN = alloca i32, align 4 @@ -1889,7 +2099,7 @@ entry: %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.109, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.112, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %ba.tmp19 = alloca { ptr, i64 }, align 8 @@ -1930,7 +2140,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.110, i64 7 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.113, i64 7 }) ret { ptr, i64 } %call } @@ -1939,35 +2149,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.111, i64 15 }, { ptr, i64 } { ptr @str.112, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.114, i64 15 }, { ptr, i64 } { ptr @str.115, 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.81 + br label %while.hdr.105 -while.hdr.81: ; preds = %fv.merge, %entry +while.hdr.105: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.82, label %while.exit.83 + br i1 %icmp, label %while.body.106, label %while.exit.107 -while.body.82: ; preds = %while.hdr.81 +while.body.106: ; preds = %while.hdr.105 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.84, label %if.merge.85 + br i1 %icmpN, label %if.then.108, label %if.merge.109 -while.exit.83: ; preds = %while.hdr.81 +while.exit.107: ; preds = %while.hdr.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 1 }) ret { ptr, i64 } %callN -if.then.84: ; preds = %while.body.82 +if.then.108: ; preds = %while.body.106 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.85 + br label %if.merge.109 -if.merge.85: ; preds = %if.then.84, %while.body.82 +if.merge.109: ; preds = %if.then.108, %while.body.106 %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 @@ -1975,7 +2185,7 @@ if.merge.85: ; preds = %if.then.84, %while. %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.118, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, 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 @@ -1995,12 +2205,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.81 + br label %while.hdr.105 -fv.default: ; preds = %if.merge.85 +fv.default: ; preds = %if.merge.109 br label %fv.merge -fv.case: ; preds = %if.merge.85 +fv.case: ; preds = %if.merge.109 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2008,19 +2218,19 @@ fv.case: ; preds = %if.merge.85 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.85 +fv.case17: ; preds = %if.merge.109 %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.85 +fv.case20: ; preds = %if.merge.109 %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.85 +fv.case24: ; preds = %if.merge.109 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2034,43 +2244,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.119, i64 9 }, { ptr, i64 } { ptr @str.120, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.122, i64 9 }, { ptr, i64 } { ptr @str.123, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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.126, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.129, 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.127, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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 @@ -2089,24 +2299,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %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.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case21: ; preds = %if.merge.114 %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 @@ -2118,43 +2328,43 @@ 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.128, i64 10 }, { ptr, i64 } { ptr @str.129, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.131, i64 10 }, { ptr, i64 } { ptr @str.132, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %if.merge.95, %entry +while.hdr.115: ; preds = %if.merge.119, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.132, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.135, 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.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2165,7 +2375,7 @@ if.merge.95: ; preds = %if.then.94, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 } ; Function Attrs: nounwind @@ -2173,43 +2383,43 @@ 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.134, i64 3 }, { ptr, i64 } { ptr @str.135, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.137, i64 3 }, { ptr, i64 } { ptr @str.138, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.139, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.142, 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.140, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, 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 @@ -2226,12 +2436,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2242,43 +2452,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.141, i64 10 }, { ptr, i64 } { ptr @str.142, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.144, i64 10 }, { ptr, i64 } { ptr @str.145, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.147, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.150, 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.148, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, 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 @@ -2296,18 +2506,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %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.105 +fv.case17: ; preds = %if.merge.129 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2318,43 +2528,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.149, i64 5 }, { ptr, i64 } { ptr @str.150, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.152, i64 5 }, { ptr, i64 } { ptr @str.153, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.156, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.159, 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.157, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2373,23 +2583,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %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.110 +fv.case20: ; preds = %if.merge.134 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2403,43 +2613,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.158, i64 8 }, { ptr, i64 } { ptr @str.159, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.161, i64 8 }, { ptr, i64 } { ptr @str.162, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.160, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.165, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.168, 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.166, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, 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 @@ -2458,23 +2668,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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 @@ -2485,43 +2695,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.167, i64 17 }, { ptr, i64 } { ptr @str.168, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.170, i64 17 }, { ptr, i64 } { ptr @str.171, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.175, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.178, 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.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, 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 @@ -2541,12 +2751,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2554,17 +2764,17 @@ fv.case: ; preds = %if.merge.120 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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.120 +fv.case23: ; preds = %if.merge.144 %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 @@ -2575,43 +2785,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.177, i64 7 }, { ptr, i64 } { ptr @str.178, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.180, i64 7 }, { ptr, i64 } { ptr @str.181, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.183, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.186, 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.184, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, 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 @@ -2629,12 +2839,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2642,46 +2852,96 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.188, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.155 + +while.hdr.155: ; preds = %if.merge.159, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.156, label %while.exit.157 + +while.body.156: ; preds = %while.hdr.155 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.158, label %if.merge.159 + +while.exit.157: ; preds = %while.hdr.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + ret { ptr, i64 } %call + +if.then.158: ; preds = %while.body.156 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.159 + +if.merge.159: ; preds = %if.then.158, %while.body.156 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.155 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.185, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.130 + br label %while.hdr.160 -while.hdr.130: ; preds = %if.merge.134, %entry +while.hdr.160: ; preds = %if.merge.164, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.131, label %while.exit.132 + br i1 %icmp, label %while.body.161, label %while.exit.162 -while.body.131: ; preds = %while.hdr.130 +while.body.161: ; preds = %while.hdr.160 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.133, label %if.merge.134 + br i1 %icmpN, label %if.then.163, label %if.merge.164 -while.exit.132: ; preds = %while.hdr.130 +while.exit.162: ; preds = %while.hdr.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %call -if.then.133: ; preds = %while.body.131 +if.then.163: ; preds = %while.body.161 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 2 }) + %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.134 + br label %if.merge.164 -if.merge.134: ; preds = %if.then.133, %while.body.131 +if.merge.164: ; preds = %if.then.163, %while.body.161 %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 @@ -2699,7 +2959,7 @@ if.merge.134: ; preds = %if.then.133, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.130 + br label %while.hdr.160 } ; Function Attrs: nounwind @@ -2708,33 +2968,33 @@ entry: %alloca = alloca [3 x { 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.188, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.194, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 -while.hdr.135: ; preds = %if.merge.139, %entry +while.hdr.165: ; preds = %if.merge.169, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.136, label %while.exit.137 + br i1 %icmp, label %while.body.166, label %while.exit.167 -while.body.136: ; preds = %while.hdr.135 +while.body.166: ; preds = %while.hdr.165 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.138, label %if.merge.139 + br i1 %icmpN, label %if.then.168, label %if.merge.169 -while.exit.137: ; preds = %while.hdr.135 +while.exit.167: ; preds = %while.hdr.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 1 }) ret { ptr, i64 } %call -if.then.138: ; preds = %while.body.136 +if.then.168: ; preds = %while.body.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.139 + br label %if.merge.169 -if.merge.139: ; preds = %if.then.138, %while.body.136 +if.merge.169: ; preds = %if.then.168, %while.body.166 %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 @@ -2752,7 +3012,7 @@ if.merge.139: ; preds = %if.then.138, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 } ; Function Attrs: nounwind @@ -2761,35 +3021,35 @@ 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.191, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.197, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 -while.hdr.144: ; preds = %if.merge.148, %entry +while.hdr.174: ; preds = %if.merge.178, %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.145, label %while.exit.146 + br i1 %icmp, label %while.body.175, label %while.exit.176 -while.body.145: ; preds = %while.hdr.144 +while.body.175: ; preds = %while.hdr.174 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.147, label %if.merge.148 + br i1 %icmpN, label %if.then.177, label %if.merge.178 -while.exit.146: ; preds = %while.hdr.144 +while.exit.176: ; preds = %while.hdr.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 1 }) ret { ptr, i64 } %call -if.then.147: ; preds = %while.body.145 +if.then.177: ; preds = %while.body.175 %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 }) + %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 - br label %if.merge.148 + br label %if.merge.178 -if.merge.148: ; preds = %if.then.147, %while.body.145 +if.merge.178: ; preds = %if.then.177, %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2806,7 +3066,7 @@ if.merge.148: ; preds = %if.then.147, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 } ; Function Attrs: nounwind @@ -2815,35 +3075,35 @@ 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.194, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.200, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 -while.hdr.149: ; preds = %if.merge.153, %entry +while.hdr.179: ; preds = %if.merge.183, %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.150, label %while.exit.151 + br i1 %icmp, label %while.body.180, label %while.exit.181 -while.body.150: ; preds = %while.hdr.149 +while.body.180: ; preds = %while.hdr.179 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.152, label %if.merge.153 + br i1 %icmpN, label %if.then.182, label %if.merge.183 -while.exit.151: ; preds = %while.hdr.149 +while.exit.181: ; preds = %while.hdr.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) ret { ptr, i64 } %call -if.then.152: ; preds = %while.body.150 +if.then.182: ; preds = %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.153 + br label %if.merge.183 -if.merge.153: ; preds = %if.then.152, %while.body.150 +if.merge.183: ; preds = %if.then.182, %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2860,95 +3120,11 @@ if.merge.153: ; preds = %if.then.152, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 } ; 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.175, label %if.else.176 - -if.then.175: ; preds = %entry - br label %if.merge.177 - -if.else.176: ; 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.199, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.177 - -if.merge.177: ; preds = %if.else.176, %if.then.175 - %bp = phi { ptr, i64 } [ { ptr @str.197, i64 4 }, %if.then.175 ], [ %callN, %if.else.176 ] - 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.199, label %if.else.200 - -if.then.199: ; preds = %entry - br label %if.merge.201 - -if.else.200: ; 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.202, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.201 - -if.merge.201: ; preds = %if.else.200, %if.then.199 - %bp = phi { ptr, i64 } [ { ptr @str.200, i64 4 }, %if.then.199 ], [ %callN, %if.else.200 ] - 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.202, label %if.else.203 - -if.then.202: ; preds = %entry - br label %if.merge.204 - -if.else.203: ; 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.205, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.204 - -if.merge.204: ; preds = %if.else.203, %if.then.202 - %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.202 ], [ %callN, %if.else.203 ] - 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 @@ -2966,12 +3142,96 @@ if.then.205: ; preds = %entry if.else.206: ; 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.208, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 5 }, { ptr, i64 } %callN) br label %if.merge.207 if.merge.207: ; preds = %if.else.206, %if.then.205 - %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.205 ], [ %callN, %if.else.206 ] + %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.205 ], [ %callN, %if.else.206 ] + 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.221, label %if.else.222 + +if.then.221: ; preds = %entry + br label %if.merge.223 + +if.else.222: ; 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.208, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.223 + +if.merge.223: ; preds = %if.else.222, %if.then.221 + %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.221 ], [ %callN, %if.else.222 ] + 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.224, label %if.else.225 + +if.then.224: ; preds = %entry + br label %if.merge.226 + +if.else.225: ; 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.211, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.226 + +if.merge.226: ; preds = %if.else.225, %if.then.224 + %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.224 ], [ %callN, %if.else.225 ] + 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.227, label %if.else.228 + +if.then.227: ; preds = %entry + br label %if.merge.229 + +if.else.228: ; 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.214, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.229 + +if.merge.229: ; preds = %if.else.228, %if.then.227 + %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] ret { ptr, i64 } %bp } @@ -2986,20 +3246,20 @@ entry: 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.208, label %if.else.209 + br i1 %icmp, label %if.then.230, label %if.else.231 -if.then.208: ; preds = %entry - br label %if.merge.210 +if.then.230: ; preds = %entry + br label %if.merge.232 -if.else.209: ; preds = %entry +if.else.231: ; 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.211, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.210 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.232 -if.merge.210: ; preds = %if.else.209, %if.then.208 - %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.208 ], [ %callN, %if.else.209 ] +if.merge.232: ; preds = %if.else.231, %if.then.230 + %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] ret { ptr, i64 } %bp } @@ -3013,20 +3273,20 @@ entry: 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.211, label %if.else.212 + br i1 %icmp, label %if.then.233, label %if.else.234 -if.then.211: ; preds = %entry - br label %if.merge.213 +if.then.233: ; preds = %entry + br label %if.merge.235 -if.else.212: ; preds = %entry +if.else.234: ; 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.214, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.213 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.235 -if.merge.213: ; preds = %if.else.212, %if.then.211 - %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.211 ], [ %callN, %if.else.212 ] +if.merge.235: ; preds = %if.else.234, %if.then.233 + %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] ret { ptr, i64 } %bp } @@ -3041,20 +3301,20 @@ entry: 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.214, label %if.else.215 + br i1 %icmp, label %if.then.236, label %if.else.237 -if.then.214: ; preds = %entry - br label %if.merge.216 +if.then.236: ; preds = %entry + br label %if.merge.238 -if.else.215: ; preds = %entry +if.else.237: ; 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.217, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.216 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.238 -if.merge.216: ; preds = %if.else.215, %if.then.214 - %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.214 ], [ %callN, %if.else.215 ] +if.merge.238: ; preds = %if.else.237, %if.then.236 + %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] ret { ptr, i64 } %bp } @@ -3069,20 +3329,20 @@ entry: 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.217, label %if.else.218 + br i1 %icmp, label %if.then.239, label %if.else.240 -if.then.217: ; preds = %entry - br label %if.merge.219 +if.then.239: ; preds = %entry + br label %if.merge.241 -if.else.218: ; preds = %entry +if.else.240: ; 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.220, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.219 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.241 -if.merge.219: ; preds = %if.else.218, %if.then.217 - %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.217 ], [ %callN, %if.else.218 ] +if.merge.241: ; preds = %if.else.240, %if.then.239 + %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] ret { ptr, i64 } %bp } @@ -3097,20 +3357,20 @@ entry: 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.220, label %if.else.221 + br i1 %icmp, label %if.then.242, label %if.else.243 -if.then.220: ; preds = %entry - br label %if.merge.222 +if.then.242: ; preds = %entry + br label %if.merge.244 -if.else.221: ; preds = %entry +if.else.243: ; 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.223, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.222 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.244 -if.merge.222: ; preds = %if.else.221, %if.then.220 - %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] +if.merge.244: ; preds = %if.else.243, %if.then.242 + %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] ret { ptr, i64 } %bp } @@ -3125,20 +3385,20 @@ entry: 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.223, label %if.else.224 + br i1 %icmp, label %if.then.245, label %if.else.246 -if.then.223: ; preds = %entry - br label %if.merge.225 +if.then.245: ; preds = %entry + br label %if.merge.247 -if.else.224: ; preds = %entry +if.else.246: ; 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.226, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.225 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.247 -if.merge.225: ; preds = %if.else.224, %if.then.223 - %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] +if.merge.247: ; preds = %if.else.246, %if.then.245 + %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] ret { ptr, i64 } %bp } @@ -3153,20 +3413,20 @@ entry: 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.226, label %if.else.227 + br i1 %icmp, label %if.then.248, label %if.else.249 -if.then.226: ; preds = %entry - br label %if.merge.228 +if.then.248: ; preds = %entry + br label %if.merge.250 -if.else.227: ; preds = %entry +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.229, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.228 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.250 -if.merge.228: ; preds = %if.else.227, %if.then.226 - %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] +if.merge.250: ; preds = %if.else.249, %if.then.248 + %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] ret { ptr, i64 } %bp } @@ -3181,20 +3441,20 @@ entry: 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.229, label %if.else.230 + br i1 %icmp, label %if.then.251, label %if.else.252 -if.then.229: ; preds = %entry - br label %if.merge.231 +if.then.251: ; preds = %entry + br label %if.merge.253 -if.else.230: ; preds = %entry +if.else.252: ; 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.232, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.231 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.253 -if.merge.231: ; preds = %if.else.230, %if.then.229 - %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] +if.merge.253: ; preds = %if.else.252, %if.then.251 + %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] ret { ptr, i64 } %bp } @@ -3209,20 +3469,20 @@ entry: 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.232, label %if.else.233 + br i1 %icmp, label %if.then.254, label %if.else.255 -if.then.232: ; preds = %entry - br label %if.merge.234 +if.then.254: ; preds = %entry + br label %if.merge.256 -if.else.233: ; preds = %entry +if.else.255: ; 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.235, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.234 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.256 -if.merge.234: ; preds = %if.else.233, %if.then.232 - %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] +if.merge.256: ; preds = %if.else.255, %if.then.254 + %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] ret { ptr, i64 } %bp } @@ -3237,20 +3497,20 @@ entry: 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.235, label %if.else.236 + br i1 %icmp, label %if.then.257, label %if.else.258 -if.then.235: ; preds = %entry - br label %if.merge.237 +if.then.257: ; preds = %entry + br label %if.merge.259 -if.else.236: ; preds = %entry +if.else.258: ; 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.238, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.237 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.259 -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] ret { ptr, i64 } %bp } @@ -3265,20 +3525,20 @@ entry: 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.238, label %if.else.239 + br i1 %icmp, label %if.then.260, label %if.else.261 -if.then.238: ; preds = %entry - br label %if.merge.240 +if.then.260: ; preds = %entry + br label %if.merge.262 -if.else.239: ; preds = %entry +if.else.261: ; 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.241, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.240 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.262 -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] ret { ptr, i64 } %bp } @@ -3293,20 +3553,20 @@ entry: 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.241, label %if.else.242 + br i1 %icmp, label %if.then.263, label %if.else.264 -if.then.241: ; preds = %entry - br label %if.merge.243 +if.then.263: ; preds = %entry + br label %if.merge.265 -if.else.242: ; preds = %entry +if.else.264: ; 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.244, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.243 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.265 -if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3321,20 +3581,20 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.247, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } @@ -3349,20 +3609,20 @@ entry: 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.247, label %if.else.248 + br i1 %icmp, label %if.then.269, label %if.else.270 -if.then.247: ; preds = %entry - br label %if.merge.249 +if.then.269: ; preds = %entry + br label %if.merge.271 -if.else.248: ; preds = %entry +if.else.270: ; 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.250, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.249 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.271 -if.merge.249: ; preds = %if.else.248, %if.then.247 - %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] +if.merge.271: ; preds = %if.else.270, %if.then.269 + %bp = phi { ptr, i64 } [ { ptr @str.254, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] ret { ptr, i64 } %bp } @@ -3377,23 +3637,21 @@ entry: 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.250, label %if.else.251 + br i1 %icmp, label %if.then.272, label %if.else.273 -if.then.250: ; preds = %entry - br label %if.merge.252 +if.then.272: ; preds = %entry + br label %if.merge.274 -if.else.251: ; preds = %entry +if.else.273: ; 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.253, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.252 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.274 -if.merge.252: ; preds = %if.else.251, %if.then.250 - %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] +if.merge.274: ; preds = %if.else.273, %if.then.272 + %bp = phi { ptr, i64 } [ { ptr @str.257, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0046-basic-int-formatter-extremes.exit b/examples/expected/0046-basic-int-formatter-extremes.exit new file mode 100644 index 0000000..573541a --- /dev/null +++ b/examples/expected/0046-basic-int-formatter-extremes.exit @@ -0,0 +1 @@ +0 diff --git a/examples/expected/0046-basic-int-formatter-extremes.stderr b/examples/expected/0046-basic-int-formatter-extremes.stderr new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/examples/expected/0046-basic-int-formatter-extremes.stderr @@ -0,0 +1 @@ + diff --git a/examples/expected/0046-basic-int-formatter-extremes.stdout b/examples/expected/0046-basic-int-formatter-extremes.stdout new file mode 100644 index 0000000..e5fa861 --- /dev/null +++ b/examples/expected/0046-basic-int-formatter-extremes.stdout @@ -0,0 +1,10 @@ +s64.min=-9223372036854775808 +s64.max=9223372036854775807 +u64.max=18446744073709551615 +s8.min=-128 s8.max=127 +s16.min=-32768 s16.max=32767 +s32.min=-2147483648 s32.max=2147483647 +u8.max=255 u16.max=65535 +u32.max=4294967295 +u8.min=0 u64.min=0 zero=0 +neg=-42 pos=4000000000 diff --git a/examples/expected/0107-types-int-cmp-in-float-ternary.ir b/examples/expected/0107-types-int-cmp-in-float-ternary.ir index a709277..8c06300 100644 --- a/examples/expected/0107-types-int-cmp-in-float-ternary.ir +++ b/examples/expected/0107-types-int-cmp-in-float-ternary.ir @@ -1,243 +1,250 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [71 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.42 = private constant [5 x i8] c"*s64\00" -@tn.str.43 = private constant [7 x i8] c"**void\00" -@tn.str.44 = private constant [5 x i8] c"*f32\00" -@tn.str.45 = private constant [8 x i8] c"*string\00" -@tn.str.46 = private constant [6 x i8] c"[]Any\00" -@tn.str.47 = private constant [5 x i8] c"*Any\00" -@tn.str.48 = private constant [7 x i8] c"[1]Any\00" -@tn.str.49 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.50 = private constant [7 x i8] c"*[]Any\00" -@tn.str.51 = private constant [4 x i8] c"*u8\00" -@tn.str.52 = private constant [6 x i8] c"*bool\00" -@tn.str.53 = private constant [5 x i8] c"*f64\00" -@tn.str.54 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.55 = private constant [11 x i8] c"*Allocator\00" -@tn.str.56 = private constant [9 x i8] c"*Context\00" -@tn.str.57 = private constant [10 x i8] c"*[]string\00" -@tn.str.58 = private constant [6 x i8] c"**GPA\00" -@tn.str.59 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.60 = private constant [8 x i8] c"**Arena\00" -@tn.str.61 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.62 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.63 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.64 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.65 = private constant [6 x i8] c"**s64\00" -@tn.str.66 = private constant [8 x i8] c"***void\00" -@tn.str.67 = private constant [6 x i8] c"**f32\00" -@tn.str.68 = private constant [9 x i8] c"**string\00" -@tn.str.69 = private constant [6 x i8] c"**Any\00" -@tn.str.70 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.71 = private constant [8 x i8] c"**[]Any\00" -@tn.str.72 = private constant [5 x i8] c"**u8\00" -@tn.str.73 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [69 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 7 }, { ptr, i64 } { ptr @tn.str.46, i64 5 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 4 }, { ptr, i64 } { ptr @tn.str.54, i64 16 }, { ptr, i64 } { ptr @tn.str.55, i64 10 }, { ptr, i64 } { ptr @tn.str.56, i64 8 }, { ptr, i64 } { ptr @tn.str.57, i64 9 }, { ptr, i64 } { ptr @tn.str.58, i64 5 }, { ptr, i64 } { ptr @tn.str.59, i64 12 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 6 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 19 }, { ptr, i64 } { ptr @tn.str.64, i64 13 }, { ptr, i64 } { ptr @tn.str.65, i64 5 }, { ptr, i64 } { ptr @tn.str.66, i64 7 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 8 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 8 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 4 }, { ptr, i64 } { ptr @tn.str.73, i64 6 }] -@str.74 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.75 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.76 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [13 x i8] c"**CAllocator\00" +@tn.str.44 = private constant [5 x i8] c"*s64\00" +@tn.str.45 = private constant [7 x i8] c"**void\00" +@tn.str.46 = private constant [5 x i8] c"*f32\00" +@tn.str.47 = private constant [8 x i8] c"*string\00" +@tn.str.48 = private constant [6 x i8] c"[]Any\00" +@tn.str.49 = private constant [5 x i8] c"*Any\00" +@tn.str.50 = private constant [7 x i8] c"[1]Any\00" +@tn.str.51 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.52 = private constant [7 x i8] c"*[]Any\00" +@tn.str.53 = private constant [4 x i8] c"*u8\00" +@tn.str.54 = private constant [6 x i8] c"*bool\00" +@tn.str.55 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.56 = private constant [5 x i8] c"*f64\00" +@tn.str.57 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.58 = private constant [11 x i8] c"*Allocator\00" +@tn.str.59 = private constant [9 x i8] c"*Context\00" +@tn.str.60 = private constant [10 x i8] c"*[]string\00" +@tn.str.61 = private constant [6 x i8] c"**GPA\00" +@tn.str.62 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.63 = private constant [8 x i8] c"**Arena\00" +@tn.str.64 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.65 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.66 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.67 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.68 = private constant [6 x i8] c"**s64\00" +@tn.str.69 = private constant [8 x i8] c"***void\00" +@tn.str.70 = private constant [6 x i8] c"**f32\00" +@tn.str.71 = private constant [9 x i8] c"**string\00" +@tn.str.72 = private constant [6 x i8] c"**Any\00" +@tn.str.73 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.74 = private constant [8 x i8] c"**[]Any\00" +@tn.str.75 = private constant [5 x i8] c"**u8\00" +@tn.str.76 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [71 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 12 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 7 }, { ptr, i64 } { ptr @tn.str.48, i64 5 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 3 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 4 }, { ptr, i64 } { ptr @tn.str.57, i64 16 }, { ptr, i64 } { ptr @tn.str.58, i64 10 }, { ptr, i64 } { ptr @tn.str.59, i64 8 }, { ptr, i64 } { ptr @tn.str.60, i64 9 }, { ptr, i64 } { ptr @tn.str.61, i64 5 }, { ptr, i64 } { ptr @tn.str.62, i64 12 }, { ptr, i64 } { ptr @tn.str.63, i64 7 }, { ptr, i64 } { ptr @tn.str.64, i64 6 }, { ptr, i64 } { ptr @tn.str.65, i64 10 }, { ptr, i64 } { ptr @tn.str.66, i64 19 }, { ptr, i64 } { ptr @tn.str.67, i64 13 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 7 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 8 }, { ptr, i64 } { ptr @tn.str.74, i64 7 }, { ptr, i64 } { ptr @tn.str.75, i64 4 }, { ptr, i64 } { ptr @tn.str.76, i64 6 }] @str.77 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.78 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.79 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.80 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.81 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.82 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.83 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.81 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.82 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.83 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.84 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.85 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.86 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.93 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 -@str.94 = private unnamed_addr constant [13 x i8] c"result = {}\0A\00", align 1 -@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.96 = private unnamed_addr constant [13 x i8] c"result = {}\0A\00", align 1 -@str.97 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.98 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.99 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.100 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.93 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.94 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.95 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 +@str.97 = private unnamed_addr constant [13 x i8] c"result = {}\0A\00", align 1 +@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.99 = private unnamed_addr constant [13 x i8] c"result = {}\0A\00", align 1 +@str.100 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.101 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.102 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.103 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.101 = private constant [5 x i8] c"line\00" -@fld.str.102 = private constant [4 x i8] c"col\00" -@fld.str.103 = 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.101, i64 4 }, { ptr, i64 } { ptr @fld.str.102, i64 3 }, { ptr, i64 } { ptr @fld.str.103, i64 4 }] -@str.104 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.105 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.106 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.107 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.109 = private constant [4 x i8] c"ctx\00" -@fld.str.110 = private constant [6 x i8] c"alloc\00" -@fld.str.111 = private constant [8 x i8] c"dealloc\00" -@field_names.112 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.109, i64 3 }, { ptr, i64 } { ptr @fld.str.110, i64 5 }, { ptr, i64 } { ptr @fld.str.111, i64 7 }] -@str.113 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.114 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.115 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.116 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.117 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.118 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.119 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.120 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.121 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.122 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.124 = private constant [12 x i8] c"alloc_count\00" -@field_names.125 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.124, i64 11 }] -@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.127 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.131 = private constant [5 x i8] c"next\00" -@fld.str.132 = private constant [4 x i8] c"cap\00" -@field_names.133 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.131, i64 4 }, { ptr, i64 } { ptr @fld.str.132, i64 3 }] -@str.134 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.135 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.136 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.139 = private constant [6 x i8] c"first\00" -@fld.str.140 = private constant [10 x i8] c"end_index\00" -@fld.str.141 = private constant [7 x i8] c"parent\00" -@field_names.142 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.139, i64 5 }, { ptr, i64 } { ptr @fld.str.140, i64 9 }, { ptr, i64 } { ptr @fld.str.141, i64 6 }] -@str.143 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.144 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.145 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.146 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.148 = private constant [4 x i8] c"buf\00" -@fld.str.149 = private constant [4 x i8] c"len\00" -@fld.str.150 = private constant [4 x i8] c"pos\00" -@field_names.151 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.148, i64 3 }, { ptr, i64 } { ptr @fld.str.149, i64 3 }, { ptr, i64 } { ptr @fld.str.150, i64 3 }] -@str.152 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.153 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.154 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.156 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.157 = private constant [7 x i8] c"parent\00" -@fld.str.158 = private constant [12 x i8] c"alloc_count\00" -@fld.str.159 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.160 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.161 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.157, i64 6 }, { ptr, i64 } { ptr @fld.str.158, i64 11 }, { ptr, i64 } { ptr @fld.str.159, i64 13 }, { ptr, i64 } { ptr @fld.str.160, i64 17 }] -@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.163 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.167 = private constant [10 x i8] c"allocator\00" -@fld.str.168 = private constant [5 x i8] c"data\00" -@field_names.169 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 9 }, { ptr, i64 } { ptr @fld.str.168, i64 4 }] -@str.170 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.104 = private constant [5 x i8] c"line\00" +@fld.str.105 = private constant [4 x i8] c"col\00" +@fld.str.106 = 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.104, i64 4 }, { ptr, i64 } { ptr @fld.str.105, i64 3 }, { ptr, i64 } { ptr @fld.str.106, i64 4 }] +@str.107 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.108 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.109 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.110 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.112 = private constant [4 x i8] c"ctx\00" +@fld.str.113 = private constant [6 x i8] c"alloc\00" +@fld.str.114 = private constant [8 x i8] c"dealloc\00" +@field_names.115 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.112, i64 3 }, { ptr, i64 } { ptr @fld.str.113, i64 5 }, { ptr, i64 } { ptr @fld.str.114, i64 7 }] +@str.116 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.117 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.118 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.119 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.121 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.122 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.123 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.124 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.125 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.127 = private constant [12 x i8] c"alloc_count\00" +@field_names.128 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.127, i64 11 }] +@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.130 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.134 = private constant [5 x i8] c"next\00" +@fld.str.135 = private constant [4 x i8] c"cap\00" +@field_names.136 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 4 }, { ptr, i64 } { ptr @fld.str.135, i64 3 }] +@str.137 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.138 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.141 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.142 = private constant [6 x i8] c"first\00" +@fld.str.143 = private constant [10 x i8] c"end_index\00" +@fld.str.144 = private constant [7 x i8] c"parent\00" +@field_names.145 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.142, i64 5 }, { ptr, i64 } { ptr @fld.str.143, i64 9 }, { ptr, i64 } { ptr @fld.str.144, i64 6 }] +@str.146 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.147 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.148 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.149 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.150 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.151 = private constant [4 x i8] c"buf\00" +@fld.str.152 = private constant [4 x i8] c"len\00" +@fld.str.153 = private constant [4 x i8] c"pos\00" +@field_names.154 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.151, i64 3 }, { ptr, i64 } { ptr @fld.str.152, i64 3 }, { ptr, i64 } { ptr @fld.str.153, i64 3 }] +@str.155 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.156 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.157 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.158 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.159 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.160 = private constant [7 x i8] c"parent\00" +@fld.str.161 = private constant [12 x i8] c"alloc_count\00" +@fld.str.162 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.163 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.164 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.160, i64 6 }, { ptr, i64 } { ptr @fld.str.161, i64 11 }, { ptr, i64 } { ptr @fld.str.162, i64 13 }, { ptr, i64 } { ptr @fld.str.163, i64 17 }] +@str.165 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.166 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.167 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.170 = private constant [10 x i8] c"allocator\00" +@fld.str.171 = private constant [5 x i8] c"data\00" +@field_names.172 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.170, i64 9 }, { ptr, i64 } { ptr @fld.str.171, i64 4 }] +@str.173 = private unnamed_addr constant [3 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 [2 x i8] c"]\00", align 1 @str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.177 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.178 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.179 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.180 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.181 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.182 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.183 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.184 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.185 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.180 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.181 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.182 = private unnamed_addr constant [3 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 [2 x i8] c"]\00", align 1 +@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.186 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.187 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.187 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.188 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.189 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.190 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.190 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.191 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.192 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.193 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.193 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.194 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.195 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.196 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.196 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.197 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.198 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.199 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.199 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.200 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.201 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.202 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.202 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.203 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.204 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.205 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.205 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.206 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.207 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.208 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.208 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.209 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.210 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.211 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.211 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.212 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.213 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.214 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 +@str.214 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.215 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.216 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.217 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.217 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.218 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.219 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.220 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.220 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 @str.221 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.222 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.223 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.223 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.224 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.225 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.226 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.226 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.227 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.228 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.229 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.229 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.230 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.231 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.232 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.232 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.233 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.234 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.235 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.236 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.237 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.238 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.239 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -376,38 +383,43 @@ if.merge.20: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.21, label %if.else.22 - -if.then.21: ; preds = %if.merge.20 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.23 - -if.else.22: ; preds = %if.merge.20 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.23 - -if.merge.23: ; preds = %if.else.22, %if.then.21 - %bp = phi i64 [ %sub, %if.then.21 ], [ %loadN, %if.else.22 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.24 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.21 -while.hdr.24: ; preds = %while.body.25, %if.merge.23 +while.hdr.21: ; preds = %if.merge.25, %if.merge.20 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.25, label %while.exit.26 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.22, label %while.exit.23 -while.body.25: ; preds = %while.hdr.24 +while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.24, label %if.merge.25 + +while.exit.23: ; preds = %while.hdr.21 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.26, label %if.merge.27 + +if.then.24: ; preds = %while.body.22 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.25 + +if.merge.25: ; preds = %if.then.24, %while.body.22 + %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 @@ -420,50 +432,178 @@ while.body.25: ; preds = %while.hdr.24 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.24 + br label %while.hdr.21 -while.exit.26: ; preds = %while.hdr.24 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.27, label %if.merge.28 - -if.then.27: ; preds = %while.exit.26 +if.then.26: ; preds = %while.exit.23 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.then.27, %while.exit.26 +if.merge.27: ; preds = %if.then.26, %while.exit.23 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.61, label %if.merge.62 + +if.then.61: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.62: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.71 + +while.hdr.71: ; preds = %while.exit.82, %if.merge.62 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.75, label %or.rhs.74 + +while.body.72: ; preds = %or.merge.79 + %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.80 + +while.exit.73: ; preds = %or.merge.79 + %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.74: ; preds = %while.hdr.71 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.75 + +or.merge.75: ; preds = %or.rhs.74, %while.hdr.71 + %bp = phi i1 [ true, %while.hdr.71 ], [ %icmpN, %or.rhs.74 ] + br i1 %bp, label %or.merge.77, label %or.rhs.76 + +or.rhs.76: ; preds = %or.merge.75 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.77 + +or.merge.77: ; preds = %or.rhs.76, %or.merge.75 + %bpN = phi i1 [ true, %or.merge.75 ], [ %icmpN, %or.rhs.76 ] + br i1 %bpN, label %or.merge.79, label %or.rhs.78 + +or.rhs.78: ; preds = %or.merge.77 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.79 + +or.merge.79: ; preds = %or.rhs.78, %or.merge.77 + %bpN = phi i1 [ true, %or.merge.77 ], [ %icmpN, %or.rhs.78 ] + br i1 %bpN, label %while.body.72, label %while.exit.73 + +while.hdr.80: ; preds = %while.body.81, %while.body.72 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.81, label %while.exit.82 + +while.body.81: ; preds = %while.hdr.80 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.80 + +while.exit.82: ; preds = %while.hdr.80 + %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.71 +} + ; 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.59, label %if.else.60 + br i1 %load, label %if.then.83, label %if.else.84 -if.then.59: ; preds = %entry - br label %if.merge.61 +if.then.83: ; preds = %entry + br label %if.merge.85 -if.else.60: ; preds = %entry - br label %if.merge.61 +if.else.84: ; preds = %entry + br label %if.merge.85 -if.merge.61: ; preds = %if.else.60, %if.then.59 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.59 ], [ { ptr @str.2, i64 5 }, %if.else.60 ] +if.merge.85: ; preds = %if.else.84, %if.then.83 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.83 ], [ { ptr @str.3, i64 5 }, %if.else.84 ] ret { ptr, i64 } %bp } @@ -477,19 +617,19 @@ entry: %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.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %entry +if.then.89: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.67 + br label %if.merge.91 -if.else.66: ; preds = %entry +if.else.90: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.67 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bp = phi double [ %fsub, %if.then.65 ], [ %loadN, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bp = phi double [ %fsub, %if.then.89 ], [ %loadN, %if.else.90 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -506,15 +646,15 @@ if.merge.67: ; preds = %if.else.66, %if.the 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.68, label %if.merge.69 + br i1 %icmp, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -532,16 +672,16 @@ if.merge.69: ; preds = %if.then.68, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.70, label %if.else.71 + br i1 %loadN, label %if.then.94, label %if.else.95 -if.then.70: ; preds = %if.merge.69 - br label %if.merge.72 +if.then.94: ; preds = %if.merge.93 + br label %if.merge.96 -if.else.71: ; preds = %if.merge.69 - br label %if.merge.72 +if.else.95: ; preds = %if.merge.93 + br label %if.merge.96 -if.merge.72: ; preds = %if.else.71, %if.then.70 - %bpN = phi i64 [ 1, %if.then.70 ], [ 0, %if.else.71 ] +if.merge.96: ; preds = %if.else.95, %if.then.94 + %bpN = phi i64 [ 1, %if.then.94 ], [ 0, %if.else.95 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -558,17 +698,17 @@ if.merge.72: ; preds = %if.else.71, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.73, label %if.merge.74 + br i1 %loadN, label %if.then.97, label %if.merge.98 -if.then.73: ; preds = %if.merge.72 +if.then.97: ; preds = %if.merge.96 %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.74 + br label %if.merge.98 -if.merge.74: ; preds = %if.then.73, %if.merge.72 +if.merge.98: ; preds = %if.then.97, %if.merge.96 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -631,39 +771,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.186 + br label %while.hdr.208 -while.hdr.186: ; preds = %if.merge.191, %entry +while.hdr.208: ; preds = %if.merge.213, %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.187, label %while.exit.188 + br i1 %icmp, label %while.body.209, label %while.exit.210 -while.body.187: ; preds = %while.hdr.186 +while.body.209: ; preds = %while.hdr.208 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.189, label %if.else.190 + br i1 %icmpN, label %if.then.211, label %if.else.212 -while.exit.188: ; preds = %while.hdr.186 +while.exit.210: ; preds = %while.hdr.208 ret void -if.then.189: ; preds = %while.body.187 +if.then.211: ; preds = %while.body.209 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.191 + br label %if.merge.213 -if.else.190: ; preds = %while.body.187 +if.else.212: ; preds = %while.body.209 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.191 + br label %if.merge.213 -if.merge.191: ; preds = %if.else.190, %if.then.189 - %bp = phi i64 [ %addN, %if.then.189 ], [ %addN, %if.else.190 ] +if.merge.213: ; preds = %if.else.212, %if.then.211 + %bp = phi i64 [ %addN, %if.then.211 ], [ %addN, %if.else.212 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -676,37 +816,29 @@ if.merge.191: ; preds = %if.else.190, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.186 + br label %while.hdr.208 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.176, label %if.merge.177 - -if.then.176: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.177: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.178, label %if.merge.179 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.63, label %if.merge.64 -if.then.178: ; preds = %if.merge.177 +if.then.63: ; 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.179 + br label %if.merge.64 -if.merge.179: ; preds = %if.then.178, %if.merge.177 +if.merge.64: ; preds = %if.then.63, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -719,15 +851,15 @@ if.merge.179: ; preds = %if.then.178, %if.me 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.180, label %if.merge.181 + br i1 %icmpN, label %if.then.65, label %if.merge.66 -if.then.180: ; preds = %if.merge.179 +if.then.65: ; preds = %if.merge.64 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.181 + br label %if.merge.66 -if.merge.181: ; preds = %if.then.180, %if.merge.179 +if.merge.66: ; preds = %if.then.65, %if.merge.64 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -740,15 +872,15 @@ if.merge.181: ; preds = %if.then.180, %if.me 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.182, label %if.merge.183 + br i1 %icmpN, label %if.then.67, label %if.merge.68 -if.then.182: ; preds = %if.merge.181 +if.then.67: ; preds = %if.merge.66 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.183 + br label %if.merge.68 -if.merge.183: ; preds = %if.then.182, %if.merge.181 +if.merge.68: ; preds = %if.then.67, %if.merge.66 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -761,65 +893,116 @@ if.merge.183: ; preds = %if.then.182, %if.me 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.184, label %if.merge.185 + br i1 %icmpN, label %if.then.69, label %if.merge.70 -if.then.184: ; preds = %if.merge.183 +if.then.69: ; preds = %if.merge.68 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.185 + br label %if.merge.70 -if.merge.185: ; preds = %if.then.184, %if.merge.183 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.70: ; preds = %if.then.69, %if.merge.68 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.206, label %if.merge.207 + +if.then.206: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.207: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.192 + br label %while.hdr.214 -while.hdr.192: ; preds = %if.merge.196, %if.merge.185 +while.hdr.214: ; preds = %if.merge.218, %if.merge.207 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.193, label %while.exit.194 + br i1 %icmpN, label %while.body.215, label %while.exit.216 -while.body.193: ; preds = %while.hdr.192 +while.body.215: ; preds = %while.hdr.214 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.195, label %if.merge.196 + br i1 %icmpN, label %if.then.217, label %if.merge.218 -while.exit.194: ; preds = %if.then.195, %while.hdr.192 +while.exit.216: ; preds = %if.then.217, %while.hdr.214 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.195: ; preds = %while.body.193 - br label %while.exit.194 +if.then.217: ; preds = %while.body.215 + br label %while.exit.216 -if.merge.196: ; preds = %while.body.193 +if.merge.218: ; preds = %while.body.215 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.192 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.214 } ; Function Attrs: nounwind @@ -898,7 +1081,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -906,458 +1089,485 @@ entry: 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.58 [ - i64 17, label %match.arm.44 - i64 2, label %match.arm.45 - i64 3, label %match.arm.45 - i64 4, label %match.arm.45 - i64 5, label %match.arm.45 - i64 6, label %match.arm.45 - i64 7, label %match.arm.45 - i64 8, label %match.arm.45 - i64 9, label %match.arm.45 - i64 16, label %match.arm.45 - i64 15, label %match.arm.45 - i64 12, label %match.arm.46 - i64 1, label %match.arm.47 - i64 10, label %match.arm.48 - i64 11, label %match.arm.48 - i64 19, label %match.arm.49 - i64 20, label %match.arm.49 - i64 21, label %match.arm.49 - i64 23, label %match.arm.49 - i64 25, label %match.arm.49 - i64 27, label %match.arm.49 - i64 30, label %match.arm.49 - i64 32, label %match.arm.49 - i64 34, label %match.arm.49 - i64 43, label %match.arm.53 - i64 35, label %match.arm.54 + switch i64 %ua.raw, label %match.unr.57 [ + i64 17, label %match.arm.43 + i64 2, label %match.arm.44 + i64 3, label %match.arm.44 + i64 4, label %match.arm.44 + i64 5, label %match.arm.44 + i64 6, label %match.arm.44 + i64 7, label %match.arm.44 + i64 8, label %match.arm.44 + i64 9, label %match.arm.44 + i64 16, label %match.arm.44 + i64 15, label %match.arm.44 + i64 12, label %match.arm.45 + i64 1, label %match.arm.46 + i64 10, label %match.arm.47 + i64 11, label %match.arm.47 + i64 19, label %match.arm.48 + i64 20, label %match.arm.48 + i64 21, label %match.arm.48 + i64 23, label %match.arm.48 + i64 25, label %match.arm.48 + i64 27, label %match.arm.48 + i64 30, label %match.arm.48 + i64 32, label %match.arm.48 + i64 34, label %match.arm.48 + i64 35, label %match.arm.52 + i64 44, label %match.arm.52 + i64 36, label %match.arm.53 + i64 42, label %match.arm.53 + i64 18, label %match.arm.54 + i64 22, label %match.arm.54 + i64 24, label %match.arm.54 + i64 26, label %match.arm.54 + i64 28, label %match.arm.54 + i64 29, label %match.arm.54 + i64 31, label %match.arm.54 + i64 33, label %match.arm.54 + i64 37, label %match.arm.54 + i64 38, label %match.arm.54 + i64 39, label %match.arm.54 + i64 40, label %match.arm.54 i64 41, label %match.arm.54 - i64 18, label %match.arm.55 - i64 22, label %match.arm.55 - i64 24, label %match.arm.55 - i64 26, label %match.arm.55 - i64 28, label %match.arm.55 - i64 29, label %match.arm.55 - i64 31, label %match.arm.55 - i64 33, label %match.arm.55 - i64 36, label %match.arm.55 - i64 37, label %match.arm.55 - i64 38, label %match.arm.55 - i64 39, label %match.arm.55 - i64 40, label %match.arm.55 - i64 42, label %match.arm.55 - i64 44, label %match.arm.55 - i64 45, label %match.arm.55 - i64 46, label %match.arm.55 - i64 47, label %match.arm.55 - i64 13, label %match.arm.57 + i64 43, label %match.arm.54 + i64 45, label %match.arm.54 + i64 46, label %match.arm.54 + i64 47, label %match.arm.54 + i64 48, label %match.arm.54 + i64 13, label %match.arm.56 ] -match.merge.43: ; preds = %dispatch.merge.153, %dispatch.merge.139, %dispatch.merge.131, %dispatch.merge.75, %float.merge.64, %match.unr.58, %match.arm.57, %match.arm.47, %match.arm.46, %match.arm.45, %match.arm.44 +match.merge.42: ; preds = %dispatch.merge.183, %dispatch.merge.169, %dispatch.merge.155, %dispatch.merge.99, %float.merge.88, %if.merge.60, %match.unr.57, %match.arm.56, %match.arm.46, %match.arm.45, %match.arm.43 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.44: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.43 +match.arm.43: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.42 -match.arm.45: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.43 +match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [71 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.58, label %if.else.59 -match.arm.46: ; preds = %entry +match.arm.45: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.43 + br label %match.merge.42 -match.arm.47: ; preds = %entry +match.arm.46: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.43 + %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.42 -match.arm.48: ; preds = %entry, %entry +match.arm.47: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.62, label %fN.unbox.63 + br i1 %icmp, label %fN.unbox.86, label %fN.unbox.87 -match.arm.49: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.48: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.76 [ - i64 19, label %dispatch.case.77 - i64 20, label %dispatch.case.78 - i64 21, label %dispatch.case.79 - i64 23, label %dispatch.case.80 - i64 25, label %dispatch.case.81 - i64 27, label %dispatch.case.82 - i64 30, label %dispatch.case.83 - i64 32, label %dispatch.case.84 - i64 34, label %dispatch.case.85 + switch i64 %ua.raw16, label %dispatch.default.100 [ + i64 19, label %dispatch.case.101 + i64 20, label %dispatch.case.102 + i64 21, label %dispatch.case.103 + i64 23, label %dispatch.case.104 + i64 25, label %dispatch.case.105 + i64 27, label %dispatch.case.106 + i64 30, label %dispatch.case.107 + i64 32, label %dispatch.case.108 + i64 34, label %dispatch.case.109 ] +match.arm.49: ; No predecessors! + unreachable + match.arm.50: ; No predecessors! unreachable match.arm.51: ; No predecessors! unreachable -match.arm.52: ; No predecessors! +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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.156 [ + i64 35, label %dispatch.case.157 + i64 44, label %dispatch.case.158 + ] + +match.arm.53: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.170 [ + i64 36, label %dispatch.case.171 + i64 42, label %dispatch.case.172 + ] + +match.arm.54: ; preds = %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.184 [ + i64 18, label %dispatch.case.185 + i64 22, label %dispatch.case.186 + i64 24, label %dispatch.case.187 + i64 26, label %dispatch.case.188 + i64 28, label %dispatch.case.189 + i64 29, label %dispatch.case.190 + i64 31, label %dispatch.case.191 + i64 33, label %dispatch.case.192 + i64 37, label %dispatch.case.193 + i64 38, label %dispatch.case.194 + i64 39, label %dispatch.case.195 + i64 40, label %dispatch.case.196 + i64 41, label %dispatch.case.197 + i64 43, label %dispatch.case.198 + i64 45, label %dispatch.case.199 + i64 46, label %dispatch.case.200 + i64 47, label %dispatch.case.201 + i64 48, label %dispatch.case.202 + ] + +match.arm.55: ; No predecessors! unreachable -match.arm.53: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.132 [ - i64 43, label %dispatch.case.133 - ] - -match.arm.54: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.140 [ - i64 35, label %dispatch.case.141 - i64 41, label %dispatch.case.142 - ] - -match.arm.55: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.154 [ - i64 18, label %dispatch.case.155 - i64 22, label %dispatch.case.156 - i64 24, label %dispatch.case.157 - i64 26, label %dispatch.case.158 - i64 28, label %dispatch.case.159 - i64 29, label %dispatch.case.160 - i64 31, label %dispatch.case.161 - i64 33, label %dispatch.case.162 - i64 36, label %dispatch.case.163 - i64 37, label %dispatch.case.164 - i64 38, label %dispatch.case.165 - i64 39, label %dispatch.case.166 - i64 40, label %dispatch.case.167 - i64 42, label %dispatch.case.168 - i64 44, label %dispatch.case.169 - i64 45, label %dispatch.case.170 - i64 46, label %dispatch.case.171 - i64 47, label %dispatch.case.172 - ] - -match.arm.56: ; No predecessors! - unreachable - -match.arm.57: ; preds = %entry +match.arm.56: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [69 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [71 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.43 + br label %match.merge.42 -match.unr.58: ; preds = %entry - br label %match.merge.43 +match.unr.57: ; preds = %entry + br label %match.merge.42 -f32.unbox.62: ; preds = %match.arm.48 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.58: ; preds = %match.arm.44 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.60 + +if.else.59: ; preds = %match.arm.44 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.60 + +if.merge.60: ; preds = %if.else.59, %if.then.58 + br label %match.merge.42 + +f32.unbox.86: ; preds = %match.arm.47 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.64 + br label %float.merge.88 -f64.unbox.63: ; preds = %match.arm.48 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.87: ; preds = %match.arm.47 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.64 + br label %float.merge.88 -float.merge.64: ; preds = %fN.unbox.63, %fN.unbox.62 +float.merge.88: ; preds = %fN.unbox.87, %fN.unbox.86 %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.43 + br label %match.merge.42 -dispatch.merge.75: ; preds = %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.default.76 +dispatch.merge.99: ; preds = %dispatch.case.109, %dispatch.case.108, %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.default.100 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.43 + br label %match.merge.42 -dispatch.default.76: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.74, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.75 +dispatch.default.100: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.99 -dispatch.case.77: ; preds = %match.arm.49 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 - -dispatch.case.78: ; preds = %match.arm.49 +dispatch.case.101: ; preds = %match.arm.48 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.79: ; preds = %match.arm.49 +dispatch.case.102: ; preds = %match.arm.48 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.80: ; preds = %match.arm.49 +dispatch.case.103: ; preds = %match.arm.48 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.81: ; preds = %match.arm.49 +dispatch.case.104: ; preds = %match.arm.48 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.82: ; preds = %match.arm.49 +dispatch.case.105: ; preds = %match.arm.48 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.83: ; preds = %match.arm.49 +dispatch.case.106: ; preds = %match.arm.48 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.84: ; preds = %match.arm.49 +dispatch.case.107: ; preds = %match.arm.48 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.case.85: ; preds = %match.arm.49 +dispatch.case.108: ; preds = %match.arm.48 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.75 + br label %dispatch.merge.99 -dispatch.merge.131: ; preds = %dispatch.case.133, %dispatch.default.132 +dispatch.case.109: ; preds = %match.arm.48 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.99 + +dispatch.merge.155: ; preds = %dispatch.case.158, %dispatch.case.157, %dispatch.default.156 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.43 + br label %match.merge.42 -dispatch.default.132: ; preds = %match.arm.53 - store { ptr, i64 } { ptr @str.75, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.131 +dispatch.default.156: ; preds = %match.arm.52 + store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.155 -dispatch.case.133: ; preds = %match.arm.53 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [1 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load78) +dispatch.case.157: ; preds = %match.arm.52 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.131 + br label %dispatch.merge.155 -dispatch.merge.139: ; preds = %dispatch.case.142, %dispatch.case.141, %dispatch.default.140 +dispatch.case.158: ; preds = %match.arm.52 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.155 + +dispatch.merge.169: ; preds = %dispatch.case.172, %dispatch.case.171, %dispatch.default.170 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.43 + br label %match.merge.42 -dispatch.default.140: ; preds = %match.arm.54 - store { ptr, i64 } { ptr @str.76, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.139 +dispatch.default.170: ; preds = %match.arm.53 + store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.169 -dispatch.case.141: ; preds = %match.arm.54 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load { ptr, i64 }, ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load83) +dispatch.case.171: ; preds = %match.arm.53 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load91) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.139 + br label %dispatch.merge.169 -dispatch.case.142: ; preds = %match.arm.54 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.172: ; preds = %match.arm.53 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.139 + br label %dispatch.merge.169 -dispatch.merge.153: ; preds = %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.case.155, %dispatch.default.154 +dispatch.merge.183: ; preds = %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.default.184 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.43 + br label %match.merge.42 -dispatch.default.154: ; preds = %match.arm.55 - store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.153 +dispatch.default.184: ; preds = %match.arm.54 + store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.183 -dispatch.case.155: ; preds = %match.arm.55 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw90 to ptr +dispatch.case.185: ; preds = %match.arm.54 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw98 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.153 + br label %dispatch.merge.183 -dispatch.case.156: ; preds = %match.arm.55 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %iNp93 = inttoptr i64 %ua.raw92 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp93) +dispatch.case.186: ; preds = %match.arm.54 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %iNp101 = inttoptr i64 %ua.raw100 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.157: ; preds = %match.arm.55 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp96 = inttoptr i64 %ua.raw95 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp96) +dispatch.case.187: ; preds = %match.arm.54 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp104 = inttoptr i64 %ua.raw103 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp104) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.158: ; preds = %match.arm.55 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %iNp99 = inttoptr i64 %ua.raw98 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp99) +dispatch.case.188: ; preds = %match.arm.54 + %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 + %iNp107 = inttoptr i64 %ua.raw106 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.159: ; preds = %match.arm.55 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %iNp102 = inttoptr i64 %ua.raw101 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp102) +dispatch.case.189: ; preds = %match.arm.54 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %iNp110 = inttoptr i64 %ua.raw109 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp110) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.160: ; preds = %match.arm.55 - %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 - %iNp105 = inttoptr i64 %ua.raw104 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp105) +dispatch.case.190: ; preds = %match.arm.54 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %iNp113 = inttoptr i64 %ua.raw112 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp113) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.161: ; preds = %match.arm.55 - %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 - %iNp108 = inttoptr i64 %ua.raw107 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp108) +dispatch.case.191: ; preds = %match.arm.54 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %iNp116 = inttoptr i64 %ua.raw115 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp116) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.162: ; preds = %match.arm.55 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %iNp111 = inttoptr i64 %ua.raw110 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp111) +dispatch.case.192: ; preds = %match.arm.54 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %iNp119 = inttoptr i64 %ua.raw118 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.163: ; preds = %match.arm.55 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %iNp114 = inttoptr i64 %ua.raw113 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp114) +dispatch.case.193: ; preds = %match.arm.54 + %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 + %iNp122 = inttoptr i64 %ua.raw121 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp122) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.164: ; preds = %match.arm.55 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp117) +dispatch.case.194: ; preds = %match.arm.54 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.165: ; preds = %match.arm.55 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp120) +dispatch.case.195: ; preds = %match.arm.54 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.166: ; preds = %match.arm.55 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp123) +dispatch.case.196: ; preds = %match.arm.54 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.167: ; preds = %match.arm.55 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp126) +dispatch.case.197: ; preds = %match.arm.54 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.168: ; preds = %match.arm.55 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp129) +dispatch.case.198: ; preds = %match.arm.54 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.169: ; preds = %match.arm.55 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp132) +dispatch.case.199: ; preds = %match.arm.54 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.170: ; preds = %match.arm.55 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp135) +dispatch.case.200: ; preds = %match.arm.54 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.171: ; preds = %match.arm.55 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp138) +dispatch.case.201: ; preds = %match.arm.54 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 -dispatch.case.172: ; preds = %match.arm.55 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp141) +dispatch.case.202: ; preds = %match.arm.54 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.153 + br label %dispatch.merge.183 } ; Function Attrs: nounwind @@ -1366,7 +1576,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.78, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.81, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1397,7 +1607,7 @@ while.exit.7: ; preds = %while.hdr.5 %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.41, label %if.merge.42 + br i1 %icmpN, label %if.then.40, label %if.merge.41 if.then.8: ; preds = %while.body.6 %loadN = load i64, ptr %allocaN, align 8 @@ -1415,9 +1625,9 @@ if.else.9: ; preds = %while.body.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.merge.10: ; preds = %if.merge.34, %if.merge.13 +if.merge.10: ; preds = %if.merge.33, %if.merge.13 br label %while.hdr.5 if.then.11: ; preds = %if.then.8 @@ -1455,14 +1665,14 @@ if.else.15: ; preds = %if.then.11 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.16: ; preds = %if.merge.31, %if.merge.18 +if.merge.16: ; preds = %if.merge.30, %if.merge.18 br label %if.merge.13 if.then.17: ; preds = %if.then.14 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, 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 @@ -1470,7 +1680,7 @@ if.then.17: ; preds = %if.then.14 %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.80, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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 @@ -1480,13 +1690,13 @@ if.then.17: ; preds = %if.then.14 %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.81, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.18 if.merge.18: ; preds = %if.then.17, %if.then.14 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, 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 @@ -1494,7 +1704,7 @@ if.merge.18: ; preds = %if.then.17, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1506,83 +1716,7 @@ if.merge.18: ; preds = %if.then.17, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.16 -if.then.29: ; preds = %if.else.15 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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.85, 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.86, 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.31 - -if.else.30: ; preds = %if.else.15 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 - -if.merge.31: ; preds = %if.else.30, %if.then.29 - br label %if.merge.16 - -if.then.32: ; preds = %if.else.9 - %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.35, label %if.else.36 - -if.else.33: ; preds = %if.else.9 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 - -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.10 - -if.then.35: ; preds = %if.then.32 - %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.38, label %if.else.39 - -if.else.36: ; preds = %if.then.32 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 - -if.merge.37: ; preds = %if.merge.40, %if.else.36 - br label %if.merge.34 - -if.then.38: ; preds = %if.then.35 +if.then.28: ; preds = %if.else.15 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1610,18 +1744,55 @@ if.then.38: ; preds = %if.then.35 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.40 + br label %if.merge.30 -if.else.39: ; preds = %if.then.35 +if.else.29: ; preds = %if.else.15 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.40 + br label %if.merge.30 -if.merge.40: ; preds = %if.else.39, %if.then.38 - br label %if.merge.37 +if.merge.30: ; preds = %if.else.29, %if.then.28 + br label %if.merge.16 -if.then.41: ; preds = %while.exit.7 +if.then.31: ; preds = %if.else.9 + %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.34, label %if.else.35 + +if.else.32: ; preds = %if.else.9 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.33 + +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.10 + +if.then.34: ; preds = %if.then.31 + %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.37, label %if.else.38 + +if.else.35: ; preds = %if.then.31 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.36 + +if.merge.36: ; preds = %if.merge.39, %if.else.35 + br label %if.merge.33 + +if.then.37: ; preds = %if.then.34 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1634,6 +1805,45 @@ if.then.41: ; preds = %while.exit.7 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, 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.92, 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.39 + +if.else.38: ; preds = %if.then.34 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.39 + +if.merge.39: ; preds = %if.else.38, %if.then.37 + br label %if.merge.36 + +if.then.40: ; preds = %while.exit.7 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, 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.94, 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 @@ -1642,11 +1852,11 @@ if.then.41: ; preds = %while.exit.7 %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.92, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.42 + br label %if.merge.41 -if.merge.42: ; preds = %if.then.41, %while.exit.7 +if.merge.41: ; preds = %if.then.40, %while.exit.7 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1661,7 +1871,7 @@ entry: br i1 %icmp, label %if.then.0, label %if.merge.1 if.then.0: ; preds = %entry - %0 = call i64 @write(i32 1, ptr @str.93, i64 3) + %0 = call i64 @write(i32 1, ptr @str.96, i64 3) br label %if.merge.1 if.merge.1: ; preds = %if.then.0, %entry @@ -1703,7 +1913,7 @@ entry: define internal void @print__ct_sb195ea381495f949__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.94, i64 12 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.97, i64 12 }, ptr %alloca, align 8 %allocaN = alloca float, align 4 store float %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1720,7 +1930,7 @@ entry: %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.95, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.98, 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 9) @@ -1749,7 +1959,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 12 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.99, i64 12 }) ret { ptr, i64 } %call } @@ -1758,35 +1968,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.97, i64 15 }, { ptr, i64 } { ptr @str.98, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.100, i64 15 }, { ptr, i64 } { ptr @str.101, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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 @@ -1794,7 +2004,7 @@ if.merge.90: ; preds = %if.then.89, %while. %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.104, i64 2 }) + %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 { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -1814,12 +2024,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1827,19 +2037,19 @@ fv.case: ; preds = %if.merge.90 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case20: ; preds = %if.merge.114 %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.90 +fv.case24: ; preds = %if.merge.114 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1853,43 +2063,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.105, i64 9 }, { ptr, i64 } { ptr @str.106, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.108, i64 9 }, { ptr, i64 } { ptr @str.109, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %fv.merge, %entry +while.hdr.115: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.112, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.115, 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.113, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, 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 @@ -1908,24 +2118,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 -fv.default: ; preds = %if.merge.95 +fv.default: ; preds = %if.merge.119 br label %fv.merge -fv.case: ; preds = %if.merge.95 +fv.case: ; preds = %if.merge.119 %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.95 +fv.case17: ; preds = %if.merge.119 %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.95 +fv.case21: ; preds = %if.merge.119 %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 @@ -1937,43 +2147,43 @@ 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.114, i64 10 }, { ptr, i64 } { ptr @str.115, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.117, i64 10 }, { ptr, i64 } { ptr @str.118, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %if.merge.100, %entry +while.hdr.120: ; preds = %if.merge.124, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.118, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.121, 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.119, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -1984,7 +2194,7 @@ if.merge.100: ; preds = %if.then.99, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 } ; Function Attrs: nounwind @@ -1992,43 +2202,43 @@ 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.120, i64 3 }, { ptr, i64 } { ptr @str.121, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.123, i64 3 }, { ptr, i64 } { ptr @str.124, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.125, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.128, 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.126, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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 @@ -2045,12 +2255,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2061,43 +2271,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.127, i64 10 }, { ptr, i64 } { ptr @str.128, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.130, i64 10 }, { ptr, i64 } { ptr @str.131, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.133, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.136, 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.134, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 @@ -2115,18 +2325,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2137,43 +2347,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.135, i64 5 }, { ptr, i64 } { ptr @str.136, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 5 }, { ptr, i64 } { ptr @str.139, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) + %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 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.142, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.145, 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.143, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, 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 @@ -2192,23 +2402,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2222,43 +2432,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.144, i64 8 }, { ptr, i64 } { ptr @str.145, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.147, i64 8 }, { ptr, i64 } { ptr @str.148, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) + %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 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.151, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.154, 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.152, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, 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 @@ -2277,23 +2487,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %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.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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 @@ -2304,43 +2514,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.153, i64 17 }, { ptr, i64 } { ptr @str.154, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.156, i64 17 }, { ptr, i64 } { ptr @str.157, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.161, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.164, 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.162, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, 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 @@ -2360,12 +2570,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2373,17 +2583,17 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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.125 +fv.case20: ; preds = %if.merge.149 %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.125 +fv.case23: ; preds = %if.merge.149 %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 @@ -2394,43 +2604,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.163, i64 7 }, { ptr, i64 } { ptr @str.164, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 7 }, { ptr, i64 } { ptr @str.167, 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.126 + br label %while.hdr.150 -while.hdr.126: ; preds = %fv.merge, %entry +while.hdr.150: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.127, label %while.exit.128 + br i1 %icmp, label %while.body.151, label %while.exit.152 -while.body.127: ; preds = %while.hdr.126 +while.body.151: ; preds = %while.hdr.150 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.129, label %if.merge.130 + br i1 %icmpN, label %if.then.153, label %if.merge.154 -while.exit.128: ; preds = %while.hdr.126 +while.exit.152: ; preds = %while.hdr.150 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 1 }) ret { ptr, i64 } %callN -if.then.129: ; preds = %while.body.127 +if.then.153: ; preds = %while.body.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.130 + br label %if.merge.154 -if.merge.130: ; preds = %if.then.129, %while.body.127 +if.merge.154: ; preds = %if.then.153, %while.body.151 %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.169, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.172, 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.170, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, 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 @@ -2448,12 +2658,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.126 + br label %while.hdr.150 -fv.default: ; preds = %if.merge.130 +fv.default: ; preds = %if.merge.154 br label %fv.merge -fv.case: ; preds = %if.merge.130 +fv.case: ; preds = %if.merge.154 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2461,46 +2671,96 @@ fv.case: ; preds = %if.merge.130 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.130 +fv.case17: ; preds = %if.merge.154 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.174, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.159 + +while.hdr.159: ; preds = %if.merge.163, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.160, label %while.exit.161 + +while.body.160: ; preds = %while.hdr.159 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.162, label %if.merge.163 + +while.exit.161: ; preds = %while.hdr.159 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) + ret { ptr, i64 } %call + +if.then.162: ; preds = %while.body.160 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.163 + +if.merge.163: ; preds = %if.then.162, %while.body.160 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.159 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.171, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.177, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.134 + br label %while.hdr.164 -while.hdr.134: ; preds = %if.merge.138, %entry +while.hdr.164: ; preds = %if.merge.168, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.135, label %while.exit.136 + br i1 %icmp, label %while.body.165, label %while.exit.166 -while.body.135: ; preds = %while.hdr.134 +while.body.165: ; preds = %while.hdr.164 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.137, label %if.merge.138 + br i1 %icmpN, label %if.then.167, label %if.merge.168 -while.exit.136: ; preds = %while.hdr.134 +while.exit.166: ; preds = %while.hdr.164 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) ret { ptr, i64 } %call -if.then.137: ; preds = %while.body.135 +if.then.167: ; preds = %while.body.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.138 + br label %if.merge.168 -if.merge.138: ; preds = %if.then.137, %while.body.135 +if.merge.168: ; preds = %if.then.167, %while.body.165 %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 @@ -2518,7 +2778,7 @@ if.merge.138: ; preds = %if.then.137, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.134 + br label %while.hdr.164 } ; Function Attrs: nounwind @@ -2527,35 +2787,35 @@ 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.174, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.180, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 -while.hdr.143: ; preds = %if.merge.147, %entry +while.hdr.173: ; preds = %if.merge.177, %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.144, label %while.exit.145 + br i1 %icmp, label %while.body.174, label %while.exit.175 -while.body.144: ; preds = %while.hdr.143 +while.body.174: ; preds = %while.hdr.173 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.146, label %if.merge.147 + br i1 %icmpN, label %if.then.176, label %if.merge.177 -while.exit.145: ; preds = %while.hdr.143 +while.exit.175: ; preds = %while.hdr.173 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 1 }) ret { ptr, i64 } %call -if.then.146: ; preds = %while.body.144 +if.then.176: ; preds = %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.147 + br label %if.merge.177 -if.merge.147: ; preds = %if.then.146, %while.body.144 +if.merge.177: ; preds = %if.then.176, %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2572,7 +2832,7 @@ if.merge.147: ; preds = %if.then.146, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 } ; Function Attrs: nounwind @@ -2581,35 +2841,35 @@ 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.177, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.183, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.148 + br label %while.hdr.178 -while.hdr.148: ; preds = %if.merge.152, %entry +while.hdr.178: ; preds = %if.merge.182, %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.149, label %while.exit.150 + br i1 %icmp, label %while.body.179, label %while.exit.180 -while.body.149: ; preds = %while.hdr.148 +while.body.179: ; preds = %while.hdr.178 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.151, label %if.merge.152 + br i1 %icmpN, label %if.then.181, label %if.merge.182 -while.exit.150: ; preds = %while.hdr.148 +while.exit.180: ; preds = %while.hdr.178 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) ret { ptr, i64 } %call -if.then.151: ; preds = %while.body.149 +if.then.181: ; preds = %while.body.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.152 + br label %if.merge.182 -if.merge.152: ; preds = %if.then.151, %while.body.149 +if.merge.182: ; preds = %if.then.181, %while.body.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2626,95 +2886,11 @@ if.merge.152: ; preds = %if.then.151, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.148 + br label %while.hdr.178 } ; 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.173, label %if.else.174 - -if.then.173: ; preds = %entry - br label %if.merge.175 - -if.else.174: ; 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.182, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.181, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.175 - -if.merge.175: ; preds = %if.else.174, %if.then.173 - %bp = phi { ptr, i64 } [ { ptr @str.180, i64 4 }, %if.then.173 ], [ %callN, %if.else.174 ] - 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.197, label %if.else.198 - -if.then.197: ; preds = %entry - br label %if.merge.199 - -if.else.198: ; 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.185, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.184, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.199 - -if.merge.199: ; preds = %if.else.198, %if.then.197 - %bp = phi { ptr, i64 } [ { ptr @str.183, i64 4 }, %if.then.197 ], [ %callN, %if.else.198 ] - 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.200, label %if.else.201 - -if.then.200: ; preds = %entry - br label %if.merge.202 - -if.else.201: ; 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.188, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.187, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.202 - -if.merge.202: ; preds = %if.else.201, %if.then.200 - %bp = phi { ptr, i64 } [ { ptr @str.186, i64 4 }, %if.then.200 ], [ %callN, %if.else.201 ] - 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 @@ -2732,12 +2908,96 @@ if.then.203: ; preds = %entry if.else.204: ; 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.191, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.187, i64 5 }, { ptr, i64 } %callN) br label %if.merge.205 if.merge.205: ; preds = %if.else.204, %if.then.203 - %bp = phi { ptr, i64 } [ { ptr @str.189, i64 4 }, %if.then.203 ], [ %callN, %if.else.204 ] + %bp = phi { ptr, i64 } [ { ptr @str.186, i64 4 }, %if.then.203 ], [ %callN, %if.else.204 ] + 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.219, label %if.else.220 + +if.then.219: ; preds = %entry + br label %if.merge.221 + +if.else.220: ; 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.191, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.221 + +if.merge.221: ; preds = %if.else.220, %if.then.219 + %bp = phi { ptr, i64 } [ { ptr @str.189, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] + 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.222, label %if.else.223 + +if.then.222: ; preds = %entry + br label %if.merge.224 + +if.else.223: ; 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.194, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.193, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.224 + +if.merge.224: ; preds = %if.else.223, %if.then.222 + %bp = phi { ptr, i64 } [ { ptr @str.192, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] + 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.225, label %if.else.226 + +if.then.225: ; preds = %entry + br label %if.merge.227 + +if.else.226: ; 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.197, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.227 + +if.merge.227: ; preds = %if.else.226, %if.then.225 + %bp = phi { ptr, i64 } [ { ptr @str.195, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] ret { ptr, i64 } %bp } @@ -2752,20 +3012,20 @@ entry: 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.206, label %if.else.207 + br i1 %icmp, label %if.then.228, label %if.else.229 -if.then.206: ; preds = %entry - br label %if.merge.208 +if.then.228: ; preds = %entry + br label %if.merge.230 -if.else.207: ; preds = %entry +if.else.229: ; 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.194, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.193, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.208 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.230 -if.merge.208: ; preds = %if.else.207, %if.then.206 - %bp = phi { ptr, i64 } [ { ptr @str.192, i64 4 }, %if.then.206 ], [ %callN, %if.else.207 ] +if.merge.230: ; preds = %if.else.229, %if.then.228 + %bp = phi { ptr, i64 } [ { ptr @str.198, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] ret { ptr, i64 } %bp } @@ -2779,20 +3039,20 @@ entry: 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.209, label %if.else.210 + br i1 %icmp, label %if.then.231, label %if.else.232 -if.then.209: ; preds = %entry - br label %if.merge.211 +if.then.231: ; preds = %entry + br label %if.merge.233 -if.else.210: ; preds = %entry +if.else.232: ; 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.197, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.211 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.233 -if.merge.211: ; preds = %if.else.210, %if.then.209 - %bp = phi { ptr, i64 } [ { ptr @str.195, i64 4 }, %if.then.209 ], [ %callN, %if.else.210 ] +if.merge.233: ; preds = %if.else.232, %if.then.231 + %bp = phi { ptr, i64 } [ { ptr @str.201, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] ret { ptr, i64 } %bp } @@ -2807,20 +3067,20 @@ entry: 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.212, label %if.else.213 + br i1 %icmp, label %if.then.234, label %if.else.235 -if.then.212: ; preds = %entry - br label %if.merge.214 +if.then.234: ; preds = %entry + br label %if.merge.236 -if.else.213: ; preds = %entry +if.else.235: ; 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.200, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.214 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.236 -if.merge.214: ; preds = %if.else.213, %if.then.212 - %bp = phi { ptr, i64 } [ { ptr @str.198, i64 4 }, %if.then.212 ], [ %callN, %if.else.213 ] +if.merge.236: ; preds = %if.else.235, %if.then.234 + %bp = phi { ptr, i64 } [ { ptr @str.204, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] ret { ptr, i64 } %bp } @@ -2835,20 +3095,20 @@ entry: 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.215, label %if.else.216 + br i1 %icmp, label %if.then.237, label %if.else.238 -if.then.215: ; preds = %entry - br label %if.merge.217 +if.then.237: ; preds = %entry + br label %if.merge.239 -if.else.216: ; preds = %entry +if.else.238: ; 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.203, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.217 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.239 -if.merge.217: ; preds = %if.else.216, %if.then.215 - %bp = phi { ptr, i64 } [ { ptr @str.201, i64 4 }, %if.then.215 ], [ %callN, %if.else.216 ] +if.merge.239: ; preds = %if.else.238, %if.then.237 + %bp = phi { ptr, i64 } [ { ptr @str.207, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] ret { ptr, i64 } %bp } @@ -2863,20 +3123,20 @@ entry: 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.218, label %if.else.219 + br i1 %icmp, label %if.then.240, label %if.else.241 -if.then.218: ; preds = %entry - br label %if.merge.220 +if.then.240: ; preds = %entry + br label %if.merge.242 -if.else.219: ; preds = %entry +if.else.241: ; 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.206, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.220 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.242 -if.merge.220: ; preds = %if.else.219, %if.then.218 - %bp = phi { ptr, i64 } [ { ptr @str.204, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] +if.merge.242: ; preds = %if.else.241, %if.then.240 + %bp = phi { ptr, i64 } [ { ptr @str.210, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] ret { ptr, i64 } %bp } @@ -2891,20 +3151,20 @@ entry: 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.221, label %if.else.222 + br i1 %icmp, label %if.then.243, label %if.else.244 -if.then.221: ; preds = %entry - br label %if.merge.223 +if.then.243: ; preds = %entry + br label %if.merge.245 -if.else.222: ; preds = %entry +if.else.244: ; 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.209, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.223 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.245 -if.merge.223: ; preds = %if.else.222, %if.then.221 - %bp = phi { ptr, i64 } [ { ptr @str.207, i64 4 }, %if.then.221 ], [ %callN, %if.else.222 ] +if.merge.245: ; preds = %if.else.244, %if.then.243 + %bp = phi { ptr, i64 } [ { ptr @str.213, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] ret { ptr, i64 } %bp } @@ -2919,20 +3179,20 @@ entry: 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.224, label %if.else.225 + br i1 %icmp, label %if.then.246, label %if.else.247 -if.then.224: ; preds = %entry - br label %if.merge.226 +if.then.246: ; preds = %entry + br label %if.merge.248 -if.else.225: ; preds = %entry +if.else.247: ; 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.212, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.226 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.248 -if.merge.226: ; preds = %if.else.225, %if.then.224 - %bp = phi { ptr, i64 } [ { ptr @str.210, i64 4 }, %if.then.224 ], [ %callN, %if.else.225 ] +if.merge.248: ; preds = %if.else.247, %if.then.246 + %bp = phi { ptr, i64 } [ { ptr @str.216, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] ret { ptr, i64 } %bp } @@ -2947,20 +3207,20 @@ entry: 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.227, label %if.else.228 + br i1 %icmp, label %if.then.249, label %if.else.250 -if.then.227: ; preds = %entry - br label %if.merge.229 +if.then.249: ; preds = %entry + br label %if.merge.251 -if.else.228: ; preds = %entry +if.else.250: ; 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.215, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.229 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.251 -if.merge.229: ; preds = %if.else.228, %if.then.227 - %bp = phi { ptr, i64 } [ { ptr @str.213, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] +if.merge.251: ; preds = %if.else.250, %if.then.249 + %bp = phi { ptr, i64 } [ { ptr @str.219, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] ret { ptr, i64 } %bp } @@ -2975,20 +3235,20 @@ entry: 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.230, label %if.else.231 + br i1 %icmp, label %if.then.252, label %if.else.253 -if.then.230: ; preds = %entry - br label %if.merge.232 +if.then.252: ; preds = %entry + br label %if.merge.254 -if.else.231: ; preds = %entry +if.else.253: ; 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.218, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.232 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.254 -if.merge.232: ; preds = %if.else.231, %if.then.230 - %bp = phi { ptr, i64 } [ { ptr @str.216, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] +if.merge.254: ; preds = %if.else.253, %if.then.252 + %bp = phi { ptr, i64 } [ { ptr @str.222, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] ret { ptr, i64 } %bp } @@ -3003,20 +3263,20 @@ entry: 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.233, label %if.else.234 + br i1 %icmp, label %if.then.255, label %if.else.256 -if.then.233: ; preds = %entry - br label %if.merge.235 +if.then.255: ; preds = %entry + br label %if.merge.257 -if.else.234: ; preds = %entry +if.else.256: ; 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.221, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.235 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.257 -if.merge.235: ; preds = %if.else.234, %if.then.233 - %bp = phi { ptr, i64 } [ { ptr @str.219, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] +if.merge.257: ; preds = %if.else.256, %if.then.255 + %bp = phi { ptr, i64 } [ { ptr @str.225, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] ret { ptr, i64 } %bp } @@ -3031,20 +3291,20 @@ entry: 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.236, label %if.else.237 + br i1 %icmp, label %if.then.258, label %if.else.259 -if.then.236: ; preds = %entry - br label %if.merge.238 +if.then.258: ; preds = %entry + br label %if.merge.260 -if.else.237: ; preds = %entry +if.else.259: ; 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.224, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.238 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.260 -if.merge.238: ; preds = %if.else.237, %if.then.236 - %bp = phi { ptr, i64 } [ { ptr @str.222, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] +if.merge.260: ; preds = %if.else.259, %if.then.258 + %bp = phi { ptr, i64 } [ { ptr @str.228, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] ret { ptr, i64 } %bp } @@ -3059,20 +3319,20 @@ entry: 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.239, label %if.else.240 + br i1 %icmp, label %if.then.261, label %if.else.262 -if.then.239: ; preds = %entry - br label %if.merge.241 +if.then.261: ; preds = %entry + br label %if.merge.263 -if.else.240: ; preds = %entry +if.else.262: ; 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.227, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.241 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.263 -if.merge.241: ; preds = %if.else.240, %if.then.239 - %bp = phi { ptr, i64 } [ { ptr @str.225, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] +if.merge.263: ; preds = %if.else.262, %if.then.261 + %bp = phi { ptr, i64 } [ { ptr @str.231, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] ret { ptr, i64 } %bp } @@ -3087,20 +3347,20 @@ entry: 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.242, label %if.else.243 + br i1 %icmp, label %if.then.264, label %if.else.265 -if.then.242: ; preds = %entry - br label %if.merge.244 +if.then.264: ; preds = %entry + br label %if.merge.266 -if.else.243: ; preds = %entry +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.230, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.244 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.266 -if.merge.244: ; preds = %if.else.243, %if.then.242 - %bp = phi { ptr, i64 } [ { ptr @str.228, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] +if.merge.266: ; preds = %if.else.265, %if.then.264 + %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] ret { ptr, i64 } %bp } @@ -3115,23 +3375,21 @@ entry: 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.245, label %if.else.246 + br i1 %icmp, label %if.then.267, label %if.else.268 -if.then.245: ; preds = %entry - br label %if.merge.247 +if.then.267: ; preds = %entry + br label %if.merge.269 -if.else.246: ; preds = %entry +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.233, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.247 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.269 -if.merge.247: ; preds = %if.else.246, %if.then.245 - %bp = phi { ptr, i64 } [ { ptr @str.231, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] +if.merge.269: ; preds = %if.else.268, %if.then.267 + %bp = phi { ptr, i64 } [ { ptr @str.237, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0200-generics-generic.ir b/examples/expected/0200-generics-generic.ir index 160b0e7..a776d64 100644 --- a/examples/expected/0200-generics-generic.ir +++ b/examples/expected/0200-generics-generic.ir @@ -1,244 +1,251 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [70 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.42 = private constant [5 x i8] c"*s64\00" -@tn.str.43 = private constant [7 x i8] c"**void\00" -@tn.str.44 = private constant [8 x i8] c"*string\00" -@tn.str.45 = private constant [6 x i8] c"[]Any\00" -@tn.str.46 = private constant [5 x i8] c"*Any\00" -@tn.str.47 = private constant [7 x i8] c"[1]Any\00" -@tn.str.48 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.49 = private constant [7 x i8] c"*[]Any\00" -@tn.str.50 = private constant [4 x i8] c"*u8\00" -@tn.str.51 = private constant [6 x i8] c"*bool\00" -@tn.str.52 = private constant [5 x i8] c"*f64\00" -@tn.str.53 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.54 = private constant [11 x i8] c"*Allocator\00" -@tn.str.55 = private constant [9 x i8] c"*Context\00" -@tn.str.56 = private constant [10 x i8] c"*[]string\00" -@tn.str.57 = private constant [6 x i8] c"**GPA\00" -@tn.str.58 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.59 = private constant [8 x i8] c"**Arena\00" -@tn.str.60 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.61 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.62 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.63 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.64 = private constant [6 x i8] c"**s64\00" -@tn.str.65 = private constant [8 x i8] c"***void\00" -@tn.str.66 = private constant [9 x i8] c"**string\00" -@tn.str.67 = private constant [6 x i8] c"**Any\00" -@tn.str.68 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.69 = private constant [8 x i8] c"**[]Any\00" -@tn.str.70 = private constant [5 x i8] c"**u8\00" -@tn.str.71 = private constant [7 x i8] c"**bool\00" -@tn.str.72 = private constant [6 x i8] c"**f64\00" -@__sx_type_names = private constant [68 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 7 }, { ptr, i64 } { ptr @tn.str.45, i64 5 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 6 }, { ptr, i64 } { ptr @tn.str.48, i64 7 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 5 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 16 }, { ptr, i64 } { ptr @tn.str.54, i64 10 }, { ptr, i64 } { ptr @tn.str.55, i64 8 }, { ptr, i64 } { ptr @tn.str.56, i64 9 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 12 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 6 }, { ptr, i64 } { ptr @tn.str.61, i64 10 }, { ptr, i64 } { ptr @tn.str.62, i64 19 }, { ptr, i64 } { ptr @tn.str.63, i64 13 }, { ptr, i64 } { ptr @tn.str.64, i64 5 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 8 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 8 }, { ptr, i64 } { ptr @tn.str.69, i64 7 }, { ptr, i64 } { ptr @tn.str.70, i64 4 }, { ptr, i64 } { ptr @tn.str.71, i64 6 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }] -@str.73 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.74 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.75 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [13 x i8] c"**CAllocator\00" +@tn.str.44 = private constant [5 x i8] c"*s64\00" +@tn.str.45 = private constant [7 x i8] c"**void\00" +@tn.str.46 = private constant [8 x i8] c"*string\00" +@tn.str.47 = private constant [6 x i8] c"[]Any\00" +@tn.str.48 = private constant [5 x i8] c"*Any\00" +@tn.str.49 = private constant [7 x i8] c"[1]Any\00" +@tn.str.50 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.51 = private constant [7 x i8] c"*[]Any\00" +@tn.str.52 = private constant [4 x i8] c"*u8\00" +@tn.str.53 = private constant [6 x i8] c"*bool\00" +@tn.str.54 = private constant [5 x i8] c"*f64\00" +@tn.str.55 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.56 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.57 = private constant [11 x i8] c"*Allocator\00" +@tn.str.58 = private constant [9 x i8] c"*Context\00" +@tn.str.59 = private constant [10 x i8] c"*[]string\00" +@tn.str.60 = private constant [6 x i8] c"**GPA\00" +@tn.str.61 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.62 = private constant [8 x i8] c"**Arena\00" +@tn.str.63 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.64 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.65 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.66 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.67 = private constant [6 x i8] c"**s64\00" +@tn.str.68 = private constant [8 x i8] c"***void\00" +@tn.str.69 = private constant [9 x i8] c"**string\00" +@tn.str.70 = private constant [6 x i8] c"**Any\00" +@tn.str.71 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.72 = private constant [8 x i8] c"**[]Any\00" +@tn.str.73 = private constant [5 x i8] c"**u8\00" +@tn.str.74 = private constant [7 x i8] c"**bool\00" +@tn.str.75 = private constant [6 x i8] c"**f64\00" +@__sx_type_names = private constant [70 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 12 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 7 }, { ptr, i64 } { ptr @tn.str.47, i64 5 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 4 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 16 }, { ptr, i64 } { ptr @tn.str.57, i64 10 }, { ptr, i64 } { ptr @tn.str.58, i64 8 }, { ptr, i64 } { ptr @tn.str.59, i64 9 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 12 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 6 }, { ptr, i64 } { ptr @tn.str.64, i64 10 }, { ptr, i64 } { ptr @tn.str.65, i64 19 }, { ptr, i64 } { ptr @tn.str.66, i64 13 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 7 }, { ptr, i64 } { ptr @tn.str.73, i64 4 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }] @str.76 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.77 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.80 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.84 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.85 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.92 = private unnamed_addr constant [9 x i8] c"sum: {}\0A\00", align 1 -@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.94 = private unnamed_addr constant [9 x i8] c"sum: {}\0A\00", align 1 +@str.92 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.93 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.94 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.95 = private unnamed_addr constant [9 x i8] c"sum: {}\0A\00", align 1 @str.96 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.97 = private unnamed_addr constant [9 x i8] c"sum: {}\0A\00", align 1 -@str.98 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.99 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.100 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.101 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.98 = private unnamed_addr constant [9 x i8] c"sum: {}\0A\00", align 1 +@str.99 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.100 = private unnamed_addr constant [9 x i8] c"sum: {}\0A\00", align 1 +@str.101 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.102 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.103 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.104 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.102 = private constant [5 x i8] c"line\00" -@fld.str.103 = private constant [4 x i8] c"col\00" -@fld.str.104 = 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.102, i64 4 }, { ptr, i64 } { ptr @fld.str.103, i64 3 }, { ptr, i64 } { ptr @fld.str.104, i64 4 }] -@str.105 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.106 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.107 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.108 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.109 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.110 = private constant [4 x i8] c"ctx\00" -@fld.str.111 = private constant [6 x i8] c"alloc\00" -@fld.str.112 = private constant [8 x i8] c"dealloc\00" -@field_names.113 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.110, i64 3 }, { ptr, i64 } { ptr @fld.str.111, i64 5 }, { ptr, i64 } { ptr @fld.str.112, i64 7 }] -@str.114 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.115 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.116 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.117 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.119 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.120 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.121 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.122 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.123 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.125 = private constant [12 x i8] c"alloc_count\00" -@field_names.126 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.125, i64 11 }] -@str.127 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.128 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.130 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.132 = private constant [5 x i8] c"next\00" -@fld.str.133 = private constant [4 x i8] c"cap\00" -@field_names.134 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.132, i64 4 }, { ptr, i64 } { ptr @fld.str.133, i64 3 }] -@str.135 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.136 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.138 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.139 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.140 = private constant [6 x i8] c"first\00" -@fld.str.141 = private constant [10 x i8] c"end_index\00" -@fld.str.142 = private constant [7 x i8] c"parent\00" -@field_names.143 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.140, i64 5 }, { ptr, i64 } { ptr @fld.str.141, i64 9 }, { ptr, i64 } { ptr @fld.str.142, i64 6 }] -@str.144 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.145 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.146 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.147 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.149 = private constant [4 x i8] c"buf\00" -@fld.str.150 = private constant [4 x i8] c"len\00" -@fld.str.151 = private constant [4 x i8] c"pos\00" -@field_names.152 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.149, i64 3 }, { ptr, i64 } { ptr @fld.str.150, i64 3 }, { ptr, i64 } { ptr @fld.str.151, i64 3 }] -@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.154 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.158 = private constant [7 x i8] c"parent\00" -@fld.str.159 = private constant [12 x i8] c"alloc_count\00" -@fld.str.160 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.161 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.162 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 6 }, { ptr, i64 } { ptr @fld.str.159, i64 11 }, { ptr, i64 } { ptr @fld.str.160, i64 13 }, { ptr, i64 } { ptr @fld.str.161, i64 17 }] -@str.163 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.164 = private unnamed_addr constant [8 x i8] c"Context\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 [10 x i8] c"allocator\00" -@fld.str.169 = private constant [5 x i8] c"data\00" -@field_names.170 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.168, i64 9 }, { ptr, i64 } { ptr @fld.str.169, i64 4 }] -@str.171 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.173 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.174 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.105 = private constant [5 x i8] c"line\00" +@fld.str.106 = private constant [4 x i8] c"col\00" +@fld.str.107 = 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.105, i64 4 }, { ptr, i64 } { ptr @fld.str.106, i64 3 }, { ptr, i64 } { ptr @fld.str.107, i64 4 }] +@str.108 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.109 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.110 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.111 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.112 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.113 = private constant [4 x i8] c"ctx\00" +@fld.str.114 = private constant [6 x i8] c"alloc\00" +@fld.str.115 = private constant [8 x i8] c"dealloc\00" +@field_names.116 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.113, i64 3 }, { ptr, i64 } { ptr @fld.str.114, i64 5 }, { ptr, i64 } { ptr @fld.str.115, i64 7 }] +@str.117 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.118 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.119 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.120 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.122 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.123 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.124 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.125 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.126 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.128 = private constant [12 x i8] c"alloc_count\00" +@field_names.129 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.128, i64 11 }] +@str.130 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.131 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.133 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.135 = private constant [5 x i8] c"next\00" +@fld.str.136 = private constant [4 x i8] c"cap\00" +@field_names.137 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.135, i64 4 }, { ptr, i64 } { ptr @fld.str.136, i64 3 }] +@str.138 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.139 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.141 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.143 = private constant [6 x i8] c"first\00" +@fld.str.144 = private constant [10 x i8] c"end_index\00" +@fld.str.145 = private constant [7 x i8] c"parent\00" +@field_names.146 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.143, i64 5 }, { ptr, i64 } { ptr @fld.str.144, i64 9 }, { ptr, i64 } { ptr @fld.str.145, i64 6 }] +@str.147 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.148 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.149 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.150 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.151 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.152 = private constant [4 x i8] c"buf\00" +@fld.str.153 = private constant [4 x i8] c"len\00" +@fld.str.154 = private constant [4 x i8] c"pos\00" +@field_names.155 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.152, i64 3 }, { ptr, i64 } { ptr @fld.str.153, i64 3 }, { ptr, i64 } { ptr @fld.str.154, i64 3 }] +@str.156 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.157 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\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 [7 x i8] c"parent\00" +@fld.str.162 = private constant [12 x i8] c"alloc_count\00" +@fld.str.163 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.164 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.165 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.161, i64 6 }, { ptr, i64 } { ptr @fld.str.162, i64 11 }, { ptr, i64 } { ptr @fld.str.163, i64 13 }, { ptr, i64 } { ptr @fld.str.164, i64 17 }] +@str.166 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.167 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.170 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.171 = private constant [10 x i8] c"allocator\00" +@fld.str.172 = private constant [5 x i8] c"data\00" +@field_names.173 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.171, i64 9 }, { ptr, i64 } { ptr @fld.str.172, i64 4 }] +@str.174 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.175 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.176 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.178 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.179 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.181 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.182 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.183 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.184 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.185 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.186 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.181 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.182 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.185 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.186 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.187 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.188 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.188 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.189 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.190 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.191 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.191 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.192 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.193 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.194 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.194 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.195 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.196 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.197 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.197 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.198 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.199 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.200 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.200 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.201 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.202 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.203 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.203 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.204 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.205 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.206 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.206 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.207 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.208 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.209 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.209 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.210 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.211 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.212 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.212 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.213 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.214 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.215 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.215 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.216 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.217 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.218 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.218 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.219 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.220 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.221 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.221 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.222 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.223 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.224 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.224 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.225 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.226 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.227 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.227 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.228 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.229 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.230 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.230 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.231 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.232 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.233 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.233 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.234 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.235 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.236 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.237 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.238 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.239 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.240 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -377,38 +384,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -421,50 +433,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -478,19 +618,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -507,15 +647,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -533,16 +673,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -559,17 +699,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -632,39 +772,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.181 + br label %while.hdr.203 -while.hdr.181: ; preds = %if.merge.186, %entry +while.hdr.203: ; preds = %if.merge.208, %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.182, label %while.exit.183 + br i1 %icmp, label %while.body.204, label %while.exit.205 -while.body.182: ; preds = %while.hdr.181 +while.body.204: ; preds = %while.hdr.203 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.184, label %if.else.185 + br i1 %icmpN, label %if.then.206, label %if.else.207 -while.exit.183: ; preds = %while.hdr.181 +while.exit.205: ; preds = %while.hdr.203 ret void -if.then.184: ; preds = %while.body.182 +if.then.206: ; preds = %while.body.204 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.186 + br label %if.merge.208 -if.else.185: ; preds = %while.body.182 +if.else.207: ; preds = %while.body.204 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.186 + br label %if.merge.208 -if.merge.186: ; preds = %if.else.185, %if.then.184 - %bp = phi i64 [ %addN, %if.then.184 ], [ %addN, %if.else.185 ] +if.merge.208: ; preds = %if.else.207, %if.then.206 + %bp = phi i64 [ %addN, %if.then.206 ], [ %addN, %if.else.207 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -677,37 +817,29 @@ if.merge.186: ; preds = %if.else.185, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.181 + br label %while.hdr.203 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.171, label %if.merge.172 - -if.then.171: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.172: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.173, label %if.merge.174 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.173: ; preds = %if.merge.172 +if.then.58: ; 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.174 + br label %if.merge.59 -if.merge.174: ; preds = %if.then.173, %if.merge.172 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -720,15 +852,15 @@ if.merge.174: ; preds = %if.then.173, %if.me 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.175, label %if.merge.176 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.175: ; preds = %if.merge.174 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.176 + br label %if.merge.61 -if.merge.176: ; preds = %if.then.175, %if.merge.174 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -741,15 +873,15 @@ if.merge.176: ; preds = %if.then.175, %if.me 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.177, label %if.merge.178 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.177: ; preds = %if.merge.176 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.178 + br label %if.merge.63 -if.merge.178: ; preds = %if.then.177, %if.merge.176 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -762,65 +894,116 @@ if.merge.178: ; preds = %if.then.177, %if.me 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.179, label %if.merge.180 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.179: ; preds = %if.merge.178 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.180 + br label %if.merge.65 -if.merge.180: ; preds = %if.then.179, %if.merge.178 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.201, label %if.merge.202 + +if.then.201: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.202: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.187 + br label %while.hdr.209 -while.hdr.187: ; preds = %if.merge.191, %if.merge.180 +while.hdr.209: ; preds = %if.merge.213, %if.merge.202 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.188, label %while.exit.189 + br i1 %icmpN, label %while.body.210, label %while.exit.211 -while.body.188: ; preds = %while.hdr.187 +while.body.210: ; preds = %while.hdr.209 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.190, label %if.merge.191 + br i1 %icmpN, label %if.then.212, label %if.merge.213 -while.exit.189: ; preds = %if.then.190, %while.hdr.187 +while.exit.211: ; preds = %if.then.212, %while.hdr.209 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.190: ; preds = %while.body.188 - br label %while.exit.189 +if.then.212: ; preds = %while.body.210 + br label %while.exit.211 -if.merge.191: ; preds = %while.body.188 +if.merge.213: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.187 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.209 } ; Function Attrs: nounwind @@ -899,7 +1082,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -907,458 +1090,485 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 42, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 35, label %match.arm.47 + i64 43, label %match.arm.47 + i64 36, label %match.arm.48 + i64 41, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 37, label %match.arm.49 + i64 38, label %match.arm.49 + i64 39, label %match.arm.49 i64 40, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 36, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 39, label %match.arm.50 - i64 41, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 13, label %match.arm.52 + i64 42, label %match.arm.49 + i64 44, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.148, %dispatch.merge.134, %dispatch.merge.126, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.178, %dispatch.merge.164, %dispatch.merge.150, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [70 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.151 [ + i64 35, label %dispatch.case.152 + i64 43, label %dispatch.case.153 + ] + +match.arm.48: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.165 [ + i64 36, label %dispatch.case.166 + i64 41, label %dispatch.case.167 + ] + +match.arm.49: ; preds = %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.179 [ + i64 18, label %dispatch.case.180 + i64 22, label %dispatch.case.181 + i64 24, label %dispatch.case.182 + i64 26, label %dispatch.case.183 + i64 28, label %dispatch.case.184 + i64 29, label %dispatch.case.185 + i64 31, label %dispatch.case.186 + i64 33, label %dispatch.case.187 + i64 37, label %dispatch.case.188 + i64 38, label %dispatch.case.189 + i64 39, label %dispatch.case.190 + i64 40, label %dispatch.case.191 + i64 42, label %dispatch.case.192 + i64 44, label %dispatch.case.193 + i64 45, label %dispatch.case.194 + i64 46, label %dispatch.case.195 + i64 47, label %dispatch.case.196 + i64 48, label %dispatch.case.197 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.127 [ - i64 42, label %dispatch.case.128 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.135 [ - i64 35, label %dispatch.case.136 - i64 40, label %dispatch.case.137 - ] - -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.149 [ - i64 18, label %dispatch.case.150 - i64 22, label %dispatch.case.151 - i64 24, label %dispatch.case.152 - i64 26, label %dispatch.case.153 - i64 28, label %dispatch.case.154 - i64 29, label %dispatch.case.155 - i64 31, label %dispatch.case.156 - i64 33, label %dispatch.case.157 - i64 36, label %dispatch.case.158 - i64 37, label %dispatch.case.159 - i64 38, label %dispatch.case.160 - i64 39, label %dispatch.case.161 - i64 41, label %dispatch.case.162 - i64 43, label %dispatch.case.163 - i64 44, label %dispatch.case.164 - i64 45, label %dispatch.case.165 - i64 46, label %dispatch.case.166 - i64 47, label %dispatch.case.167 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [68 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [70 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.73, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.76, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.126: ; preds = %dispatch.case.128, %dispatch.default.127 +dispatch.case.104: ; preds = %match.arm.43 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.150: ; preds = %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.127: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.74, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.126 +dispatch.default.151: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.150 -dispatch.case.128: ; preds = %match.arm.48 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [1 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load78) +dispatch.case.152: ; preds = %match.arm.47 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.merge.134: ; preds = %dispatch.case.137, %dispatch.case.136, %dispatch.default.135 +dispatch.case.153: ; preds = %match.arm.47 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.merge.164: ; preds = %dispatch.case.167, %dispatch.case.166, %dispatch.default.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.135: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.75, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.134 +dispatch.default.165: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.164 -dispatch.case.136: ; preds = %match.arm.49 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load { ptr, i64 }, ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load83) +dispatch.case.166: ; preds = %match.arm.48 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load91) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.134 + br label %dispatch.merge.164 -dispatch.case.137: ; preds = %match.arm.49 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.167: ; preds = %match.arm.48 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.134 + br label %dispatch.merge.164 -dispatch.merge.148: ; preds = %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.case.155, %dispatch.case.154, %dispatch.case.153, %dispatch.case.152, %dispatch.case.151, %dispatch.case.150, %dispatch.default.149 +dispatch.merge.178: ; preds = %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.case.180, %dispatch.default.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.149: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.76, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.148 +dispatch.default.179: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.178 -dispatch.case.150: ; preds = %match.arm.50 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw90 to ptr +dispatch.case.180: ; preds = %match.arm.49 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw98 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.148 + br label %dispatch.merge.178 -dispatch.case.151: ; preds = %match.arm.50 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %iNp93 = inttoptr i64 %ua.raw92 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp93) +dispatch.case.181: ; preds = %match.arm.49 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %iNp101 = inttoptr i64 %ua.raw100 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.152: ; preds = %match.arm.50 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp96 = inttoptr i64 %ua.raw95 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp96) +dispatch.case.182: ; preds = %match.arm.49 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp104 = inttoptr i64 %ua.raw103 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp104) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.153: ; preds = %match.arm.50 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %iNp99 = inttoptr i64 %ua.raw98 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp99) +dispatch.case.183: ; preds = %match.arm.49 + %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 + %iNp107 = inttoptr i64 %ua.raw106 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.154: ; preds = %match.arm.50 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %iNp102 = inttoptr i64 %ua.raw101 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp102) +dispatch.case.184: ; preds = %match.arm.49 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %iNp110 = inttoptr i64 %ua.raw109 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp110) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.155: ; preds = %match.arm.50 - %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 - %iNp105 = inttoptr i64 %ua.raw104 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp105) +dispatch.case.185: ; preds = %match.arm.49 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %iNp113 = inttoptr i64 %ua.raw112 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp113) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 - %iNp108 = inttoptr i64 %ua.raw107 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp108) +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %iNp116 = inttoptr i64 %ua.raw115 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp116) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %iNp111 = inttoptr i64 %ua.raw110 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp111) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %iNp119 = inttoptr i64 %ua.raw118 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %iNp114 = inttoptr i64 %ua.raw113 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp114) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 + %iNp122 = inttoptr i64 %ua.raw121 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp122) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp117) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp120) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp123) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp126) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp129) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp132) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp135) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp138) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp141) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 } ; Function Attrs: nounwind @@ -1367,7 +1577,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.80, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1398,7 +1608,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1416,9 +1626,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1456,14 +1666,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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 @@ -1471,7 +1681,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, 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 @@ -1481,13 +1691,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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 @@ -1495,7 +1705,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1507,83 +1717,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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.84, 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.85, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1611,18 +1745,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1635,6 +1806,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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.91, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, 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.93, 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 @@ -1643,11 +1853,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1698,7 +1908,7 @@ entry: define internal void @print__ct_s95dfd2a009f17129__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.92, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.95, i64 8 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1713,7 +1923,7 @@ entry: %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.93, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.96, 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 5) @@ -1740,7 +1950,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.97, i64 8 }) ret { ptr, i64 } %call } @@ -1761,7 +1971,7 @@ entry: define internal void @print__ct_s95dfd2a009f17129__pack_f64(ptr %0, double %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.95, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.98, i64 8 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 store double %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1777,7 +1987,7 @@ entry: %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.96, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.99, 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 5) @@ -1805,7 +2015,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.97, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.100, i64 8 }) ret { ptr, i64 } %call } @@ -1814,35 +2024,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.98, i64 15 }, { ptr, i64 } { ptr @str.99, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.101, i64 15 }, { ptr, i64 } { ptr @str.102, 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.81 + br label %while.hdr.105 -while.hdr.81: ; preds = %fv.merge, %entry +while.hdr.105: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.82, label %while.exit.83 + br i1 %icmp, label %while.body.106, label %while.exit.107 -while.body.82: ; preds = %while.hdr.81 +while.body.106: ; preds = %while.hdr.105 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.84, label %if.merge.85 + br i1 %icmpN, label %if.then.108, label %if.merge.109 -while.exit.83: ; preds = %while.hdr.81 +while.exit.107: ; preds = %while.hdr.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 1 }) ret { ptr, i64 } %callN -if.then.84: ; preds = %while.body.82 +if.then.108: ; preds = %while.body.106 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.104, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.85 + br label %if.merge.109 -if.merge.85: ; preds = %if.then.84, %while.body.82 +if.merge.109: ; preds = %if.then.108, %while.body.106 %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 @@ -1850,7 +2060,7 @@ if.merge.85: ; preds = %if.then.84, %while. %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.105, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, 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 @@ -1870,12 +2080,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.81 + br label %while.hdr.105 -fv.default: ; preds = %if.merge.85 +fv.default: ; preds = %if.merge.109 br label %fv.merge -fv.case: ; preds = %if.merge.85 +fv.case: ; preds = %if.merge.109 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1883,19 +2093,19 @@ fv.case: ; preds = %if.merge.85 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.85 +fv.case17: ; preds = %if.merge.109 %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.85 +fv.case20: ; preds = %if.merge.109 %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.85 +fv.case24: ; preds = %if.merge.109 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1909,43 +2119,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.106, i64 9 }, { ptr, i64 } { ptr @str.107, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.109, i64 9 }, { ptr, i64 } { ptr @str.110, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 2 }) + %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 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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.113, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.116, 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.114, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, 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 @@ -1964,24 +2174,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %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.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case21: ; preds = %if.merge.114 %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 @@ -1993,43 +2203,43 @@ 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.115, i64 10 }, { ptr, i64 } { ptr @str.116, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.118, i64 10 }, { ptr, i64 } { ptr @str.119, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %if.merge.95, %entry +while.hdr.115: ; preds = %if.merge.119, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.119, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.122, 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.120, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2040,7 +2250,7 @@ if.merge.95: ; preds = %if.then.94, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 } ; Function Attrs: nounwind @@ -2048,43 +2258,43 @@ 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.121, i64 3 }, { ptr, i64 } { ptr @str.122, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.124, i64 3 }, { ptr, i64 } { ptr @str.125, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.126, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.129, 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.127, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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 @@ -2101,12 +2311,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2117,43 +2327,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.128, i64 10 }, { ptr, i64 } { ptr @str.129, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.131, i64 10 }, { ptr, i64 } { ptr @str.132, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.134, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.137, 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.135, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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 @@ -2171,18 +2381,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %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.105 +fv.case17: ; preds = %if.merge.129 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2193,43 +2403,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.136, i64 5 }, { ptr, i64 } { ptr @str.137, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.139, i64 5 }, { ptr, i64 } { ptr @str.140, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.143, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.146, 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.144, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, 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 @@ -2248,23 +2458,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %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.110 +fv.case20: ; preds = %if.merge.134 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2278,43 +2488,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.145, i64 8 }, { ptr, i64 } { ptr @str.146, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.148, i64 8 }, { ptr, i64 } { ptr @str.149, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.152, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 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.153, i64 2 }) + %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, i64, i64 }, ptr %alloca, align 8 @@ -2333,23 +2543,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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 @@ -2360,43 +2570,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.154, i64 17 }, { ptr, i64 } { ptr @str.155, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.157, i64 17 }, { 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) + %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.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.162, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.165, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, 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 @@ -2416,12 +2626,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2429,17 +2639,17 @@ fv.case: ; preds = %if.merge.120 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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.120 +fv.case23: ; preds = %if.merge.144 %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 @@ -2450,43 +2660,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.164, i64 7 }, { ptr, i64 } { ptr @str.165, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.167, i64 7 }, { ptr, i64 } { ptr @str.168, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.173, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, 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 @@ -2504,12 +2714,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2517,46 +2727,96 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.175, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.154 + +while.hdr.154: ; preds = %if.merge.158, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.155, label %while.exit.156 + +while.body.155: ; preds = %while.hdr.154 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.157, label %if.merge.158 + +while.exit.156: ; preds = %while.hdr.154 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) + ret { ptr, i64 } %call + +if.then.157: ; preds = %while.body.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.158 + +if.merge.158: ; preds = %if.then.157, %while.body.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.154 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.172, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.178, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.159 -while.hdr.129: ; preds = %if.merge.133, %entry +while.hdr.159: ; preds = %if.merge.163, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.130, label %while.exit.131 + br i1 %icmp, label %while.body.160, label %while.exit.161 -while.body.130: ; preds = %while.hdr.129 +while.body.160: ; preds = %while.hdr.159 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.132, label %if.merge.133 + br i1 %icmpN, label %if.then.162, label %if.merge.163 -while.exit.131: ; preds = %while.hdr.129 +while.exit.161: ; preds = %while.hdr.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) ret { ptr, i64 } %call -if.then.132: ; preds = %while.body.130 +if.then.162: ; preds = %while.body.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 2 }) + %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 - br label %if.merge.133 + br label %if.merge.163 -if.merge.133: ; preds = %if.then.132, %while.body.130 +if.merge.163: ; preds = %if.then.162, %while.body.160 %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 @@ -2574,7 +2834,7 @@ if.merge.133: ; preds = %if.then.132, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.159 } ; Function Attrs: nounwind @@ -2583,35 +2843,35 @@ 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.175, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.181, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.168 -while.hdr.138: ; preds = %if.merge.142, %entry +while.hdr.168: ; preds = %if.merge.172, %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.139, label %while.exit.140 + br i1 %icmp, label %while.body.169, label %while.exit.170 -while.body.139: ; preds = %while.hdr.138 +while.body.169: ; preds = %while.hdr.168 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.141, label %if.merge.142 + br i1 %icmpN, label %if.then.171, label %if.merge.172 -while.exit.140: ; preds = %while.hdr.138 +while.exit.170: ; preds = %while.hdr.168 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) ret { ptr, i64 } %call -if.then.141: ; preds = %while.body.139 +if.then.171: ; preds = %while.body.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.142 + br label %if.merge.172 -if.merge.142: ; preds = %if.then.141, %while.body.139 +if.merge.172: ; preds = %if.then.171, %while.body.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2628,7 +2888,7 @@ if.merge.142: ; preds = %if.then.141, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.168 } ; Function Attrs: nounwind @@ -2637,35 +2897,35 @@ 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.178, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 -while.hdr.143: ; preds = %if.merge.147, %entry +while.hdr.173: ; preds = %if.merge.177, %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.144, label %while.exit.145 + br i1 %icmp, label %while.body.174, label %while.exit.175 -while.body.144: ; preds = %while.hdr.143 +while.body.174: ; preds = %while.hdr.173 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.146, label %if.merge.147 + br i1 %icmpN, label %if.then.176, label %if.merge.177 -while.exit.145: ; preds = %while.hdr.143 +while.exit.175: ; preds = %while.hdr.173 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) ret { ptr, i64 } %call -if.then.146: ; preds = %while.body.144 +if.then.176: ; preds = %while.body.174 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.147 + br label %if.merge.177 -if.merge.147: ; preds = %if.then.146, %while.body.144 +if.merge.177: ; preds = %if.then.176, %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2682,95 +2942,11 @@ if.merge.147: ; preds = %if.then.146, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 } ; 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.168, label %if.else.169 - -if.then.168: ; preds = %entry - br label %if.merge.170 - -if.else.169: ; 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.183, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.170 - -if.merge.170: ; preds = %if.else.169, %if.then.168 - %bp = phi { ptr, i64 } [ { ptr @str.181, i64 4 }, %if.then.168 ], [ %callN, %if.else.169 ] - 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.192, label %if.else.193 - -if.then.192: ; preds = %entry - br label %if.merge.194 - -if.else.193: ; 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.186, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.185, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.194 - -if.merge.194: ; preds = %if.else.193, %if.then.192 - %bp = phi { ptr, i64 } [ { ptr @str.184, i64 4 }, %if.then.192 ], [ %callN, %if.else.193 ] - 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.195, label %if.else.196 - -if.then.195: ; preds = %entry - br label %if.merge.197 - -if.else.196: ; 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.189, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.197 - -if.merge.197: ; preds = %if.else.196, %if.then.195 - %bp = phi { ptr, i64 } [ { ptr @str.187, i64 4 }, %if.then.195 ], [ %callN, %if.else.196 ] - 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 @@ -2788,12 +2964,96 @@ if.then.198: ; preds = %entry if.else.199: ; 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.192, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.191, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.189, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 5 }, { ptr, i64 } %callN) br label %if.merge.200 if.merge.200: ; preds = %if.else.199, %if.then.198 - %bp = phi { ptr, i64 } [ { ptr @str.190, i64 4 }, %if.then.198 ], [ %callN, %if.else.199 ] + %bp = phi { ptr, i64 } [ { ptr @str.187, i64 4 }, %if.then.198 ], [ %callN, %if.else.199 ] + 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.214, label %if.else.215 + +if.then.214: ; preds = %entry + br label %if.merge.216 + +if.else.215: ; 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.192, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.191, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.216 + +if.merge.216: ; preds = %if.else.215, %if.then.214 + %bp = phi { ptr, i64 } [ { ptr @str.190, i64 4 }, %if.then.214 ], [ %callN, %if.else.215 ] + 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.217, label %if.else.218 + +if.then.217: ; preds = %entry + br label %if.merge.219 + +if.else.218: ; 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.195, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.194, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.219 + +if.merge.219: ; preds = %if.else.218, %if.then.217 + %bp = phi { ptr, i64 } [ { ptr @str.193, i64 4 }, %if.then.217 ], [ %callN, %if.else.218 ] + 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.220, label %if.else.221 + +if.then.220: ; preds = %entry + br label %if.merge.222 + +if.else.221: ; 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.198, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.222 + +if.merge.222: ; preds = %if.else.221, %if.then.220 + %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] ret { ptr, i64 } %bp } @@ -2808,20 +3068,20 @@ entry: 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.201, label %if.else.202 + br i1 %icmp, label %if.then.223, label %if.else.224 -if.then.201: ; preds = %entry - br label %if.merge.203 +if.then.223: ; preds = %entry + br label %if.merge.225 -if.else.202: ; preds = %entry +if.else.224: ; 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.195, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.194, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.203 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.225 -if.merge.203: ; preds = %if.else.202, %if.then.201 - %bp = phi { ptr, i64 } [ { ptr @str.193, i64 4 }, %if.then.201 ], [ %callN, %if.else.202 ] +if.merge.225: ; preds = %if.else.224, %if.then.223 + %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] ret { ptr, i64 } %bp } @@ -2835,20 +3095,20 @@ entry: 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.204, label %if.else.205 + br i1 %icmp, label %if.then.226, label %if.else.227 -if.then.204: ; preds = %entry - br label %if.merge.206 +if.then.226: ; preds = %entry + br label %if.merge.228 -if.else.205: ; preds = %entry +if.else.227: ; 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.198, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.206 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.228 -if.merge.206: ; preds = %if.else.205, %if.then.204 - %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.204 ], [ %callN, %if.else.205 ] +if.merge.228: ; preds = %if.else.227, %if.then.226 + %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] ret { ptr, i64 } %bp } @@ -2863,20 +3123,20 @@ entry: 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.207, label %if.else.208 + br i1 %icmp, label %if.then.229, label %if.else.230 -if.then.207: ; preds = %entry - br label %if.merge.209 +if.then.229: ; preds = %entry + br label %if.merge.231 -if.else.208: ; preds = %entry +if.else.230: ; 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.201, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.209 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.231 -if.merge.209: ; preds = %if.else.208, %if.then.207 - %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.207 ], [ %callN, %if.else.208 ] +if.merge.231: ; preds = %if.else.230, %if.then.229 + %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] ret { ptr, i64 } %bp } @@ -2891,20 +3151,20 @@ entry: 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.210, label %if.else.211 + br i1 %icmp, label %if.then.232, label %if.else.233 -if.then.210: ; preds = %entry - br label %if.merge.212 +if.then.232: ; preds = %entry + br label %if.merge.234 -if.else.211: ; preds = %entry +if.else.233: ; 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.204, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.212 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.234 -if.merge.212: ; preds = %if.else.211, %if.then.210 - %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.210 ], [ %callN, %if.else.211 ] +if.merge.234: ; preds = %if.else.233, %if.then.232 + %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] ret { ptr, i64 } %bp } @@ -2919,20 +3179,20 @@ entry: 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.213, label %if.else.214 + br i1 %icmp, label %if.then.235, label %if.else.236 -if.then.213: ; preds = %entry - br label %if.merge.215 +if.then.235: ; preds = %entry + br label %if.merge.237 -if.else.214: ; preds = %entry +if.else.236: ; 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.207, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.215 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.237 -if.merge.215: ; preds = %if.else.214, %if.then.213 - %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.213 ], [ %callN, %if.else.214 ] +if.merge.237: ; preds = %if.else.236, %if.then.235 + %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] ret { ptr, i64 } %bp } @@ -2947,20 +3207,20 @@ entry: 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.216, label %if.else.217 + br i1 %icmp, label %if.then.238, label %if.else.239 -if.then.216: ; preds = %entry - br label %if.merge.218 +if.then.238: ; preds = %entry + br label %if.merge.240 -if.else.217: ; preds = %entry +if.else.239: ; 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.210, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.218 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.240 -if.merge.218: ; preds = %if.else.217, %if.then.216 - %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.216 ], [ %callN, %if.else.217 ] +if.merge.240: ; preds = %if.else.239, %if.then.238 + %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] ret { ptr, i64 } %bp } @@ -2975,20 +3235,20 @@ entry: 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.219, label %if.else.220 + br i1 %icmp, label %if.then.241, label %if.else.242 -if.then.219: ; preds = %entry - br label %if.merge.221 +if.then.241: ; preds = %entry + br label %if.merge.243 -if.else.220: ; preds = %entry +if.else.242: ; 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.213, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.221 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.243 -if.merge.221: ; preds = %if.else.220, %if.then.219 - %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] +if.merge.243: ; preds = %if.else.242, %if.then.241 + %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] ret { ptr, i64 } %bp } @@ -3003,20 +3263,20 @@ entry: 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.222, label %if.else.223 + br i1 %icmp, label %if.then.244, label %if.else.245 -if.then.222: ; preds = %entry - br label %if.merge.224 +if.then.244: ; preds = %entry + br label %if.merge.246 -if.else.223: ; preds = %entry +if.else.245: ; 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.216, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.224 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.246 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] ret { ptr, i64 } %bp } @@ -3031,20 +3291,20 @@ entry: 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.225, label %if.else.226 + br i1 %icmp, label %if.then.247, label %if.else.248 -if.then.225: ; preds = %entry - br label %if.merge.227 +if.then.247: ; preds = %entry + br label %if.merge.249 -if.else.226: ; preds = %entry +if.else.248: ; 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.219, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.227 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.249 -if.merge.227: ; preds = %if.else.226, %if.then.225 - %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] +if.merge.249: ; preds = %if.else.248, %if.then.247 + %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] ret { ptr, i64 } %bp } @@ -3059,20 +3319,20 @@ entry: 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.228, label %if.else.229 + br i1 %icmp, label %if.then.250, label %if.else.251 -if.then.228: ; preds = %entry - br label %if.merge.230 +if.then.250: ; preds = %entry + br label %if.merge.252 -if.else.229: ; preds = %entry +if.else.251: ; 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.222, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.230 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.252 -if.merge.230: ; preds = %if.else.229, %if.then.228 - %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] +if.merge.252: ; preds = %if.else.251, %if.then.250 + %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] ret { ptr, i64 } %bp } @@ -3087,20 +3347,20 @@ entry: 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.231, label %if.else.232 + br i1 %icmp, label %if.then.253, label %if.else.254 -if.then.231: ; preds = %entry - br label %if.merge.233 +if.then.253: ; preds = %entry + br label %if.merge.255 -if.else.232: ; preds = %entry +if.else.254: ; 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.225, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.233 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.255 -if.merge.233: ; preds = %if.else.232, %if.then.231 - %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] +if.merge.255: ; preds = %if.else.254, %if.then.253 + %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] ret { ptr, i64 } %bp } @@ -3115,20 +3375,20 @@ entry: 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.234, label %if.else.235 + br i1 %icmp, label %if.then.256, label %if.else.257 -if.then.234: ; preds = %entry - br label %if.merge.236 +if.then.256: ; preds = %entry + br label %if.merge.258 -if.else.235: ; preds = %entry +if.else.257: ; 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.228, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.236 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.258 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] ret { ptr, i64 } %bp } @@ -3143,20 +3403,20 @@ entry: 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.237, label %if.else.238 + br i1 %icmp, label %if.then.259, label %if.else.260 -if.then.237: ; preds = %entry - br label %if.merge.239 +if.then.259: ; preds = %entry + br label %if.merge.261 -if.else.238: ; preds = %entry +if.else.260: ; 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.231, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.239 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.261 -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] ret { ptr, i64 } %bp } @@ -3171,23 +3431,21 @@ entry: 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.240, label %if.else.241 + br i1 %icmp, label %if.then.262, label %if.else.263 -if.then.240: ; preds = %entry - br label %if.merge.242 +if.then.262: ; preds = %entry + br label %if.merge.264 -if.else.241: ; preds = %entry +if.else.263: ; 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.234, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.242 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.264 -if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0201-generics-generic-struct.ir b/examples/expected/0201-generics-generic-struct.ir index b774037..db6deaf 100644 --- a/examples/expected/0201-generics-generic-struct.ir +++ b/examples/expected/0201-generics-generic-struct.ir @@ -1,294 +1,295 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [97 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, i1 false, i1 false, i1 false] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [8 x i8] c"[16]f32\00" -@tn.str.42 = private constant [5 x i8] c"Mat4\00" -@tn.str.43 = private constant [5 x i8] c"Vec2\00" -@tn.str.44 = private constant [14 x i8] c"Vector(3,f32)\00" -@tn.str.45 = private constant [12 x i8] c"Vec__3__f32\00" -@tn.str.46 = private constant [5 x i8] c"Vec3\00" -@tn.str.47 = private constant [13 x i8] c"Complex__u32\00" -@tn.str.48 = private constant [4 x i8] c"Foo\00" -@tn.str.49 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.50 = private constant [5 x i8] c"*s64\00" -@tn.str.51 = private constant [7 x i8] c"**void\00" -@tn.str.52 = private constant [6 x i8] c"*Vec3\00" -@tn.str.53 = private constant [8 x i8] c"*string\00" -@tn.str.54 = private constant [6 x i8] c"[]Any\00" -@tn.str.55 = private constant [5 x i8] c"*Any\00" -@tn.str.56 = private constant [7 x i8] c"[1]Any\00" -@tn.str.57 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.58 = private constant [7 x i8] c"*[]Any\00" -@tn.str.59 = private constant [4 x i8] c"*u8\00" -@tn.str.60 = private constant [6 x i8] c"*bool\00" -@tn.str.61 = private constant [5 x i8] c"*f32\00" -@tn.str.62 = private constant [15 x i8] c"*Vector(3,f32)\00" -@tn.str.63 = private constant [7 x i8] c"[5]f32\00" -@tn.str.64 = private constant [8 x i8] c"*[5]f32\00" -@tn.str.65 = private constant [5 x i8] c"*Foo\00" -@tn.str.66 = private constant [5 x i8] c"*f64\00" -@tn.str.67 = private constant [8 x i8] c"Sx__f32\00" -@tn.str.68 = private constant [9 x i8] c"*Sx__f32\00" -@tn.str.69 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.70 = private constant [11 x i8] c"*Allocator\00" -@tn.str.71 = private constant [9 x i8] c"*Context\00" -@tn.str.72 = private constant [6 x i8] c"*Mat4\00" -@tn.str.73 = private constant [6 x i8] c"*Vec2\00" -@tn.str.74 = private constant [13 x i8] c"*Vec__3__f32\00" -@tn.str.75 = private constant [14 x i8] c"*Complex__u32\00" -@tn.str.76 = private constant [9 x i8] c"*[16]f32\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 [14 x i8] c"***CAllocator\00" -@tn.str.85 = private constant [6 x i8] c"**s64\00" -@tn.str.86 = private constant [8 x i8] c"***void\00" -@tn.str.87 = private constant [7 x i8] c"**Vec3\00" -@tn.str.88 = private constant [9 x i8] c"**string\00" -@tn.str.89 = private constant [6 x i8] c"**Any\00" -@tn.str.90 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.91 = private constant [8 x i8] c"**[]Any\00" -@tn.str.92 = private constant [5 x i8] c"**u8\00" -@tn.str.93 = private constant [7 x i8] c"**bool\00" -@tn.str.94 = private constant [6 x i8] c"**f32\00" -@tn.str.95 = private constant [16 x i8] c"**Vector(3,f32)\00" -@tn.str.96 = private constant [9 x i8] c"**[5]f32\00" -@tn.str.97 = private constant [6 x i8] c"**Foo\00" -@tn.str.98 = private constant [6 x i8] c"**f64\00" -@tn.str.99 = private constant [10 x i8] c"**Sx__f32\00" -@__sx_type_names = private constant [95 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 4 }, { ptr, i64 } { ptr @tn.str.44, i64 13 }, { ptr, i64 } { ptr @tn.str.45, i64 11 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 12 }, { ptr, i64 } { ptr @tn.str.48, i64 3 }, { ptr, i64 } { ptr @tn.str.49, i64 12 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 7 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 3 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 4 }, { ptr, i64 } { ptr @tn.str.62, i64 14 }, { ptr, i64 } { ptr @tn.str.63, i64 6 }, { ptr, i64 } { ptr @tn.str.64, i64 7 }, { ptr, i64 } { ptr @tn.str.65, i64 4 }, { ptr, i64 } { ptr @tn.str.66, i64 4 }, { ptr, i64 } { ptr @tn.str.67, i64 7 }, { ptr, i64 } { ptr @tn.str.68, i64 8 }, { ptr, i64 } { ptr @tn.str.69, i64 16 }, { ptr, i64 } { ptr @tn.str.70, i64 10 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 12 }, { ptr, i64 } { ptr @tn.str.75, i64 13 }, { ptr, i64 } { ptr @tn.str.76, i64 8 }, { 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 13 }, { ptr, i64 } { ptr @tn.str.85, i64 5 }, { ptr, i64 } { ptr @tn.str.86, i64 7 }, { ptr, i64 } { ptr @tn.str.87, i64 6 }, { 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 7 }, { ptr, i64 } { ptr @tn.str.92, i64 4 }, { ptr, i64 } { ptr @tn.str.93, i64 6 }, { ptr, i64 } { ptr @tn.str.94, i64 5 }, { ptr, i64 } { ptr @tn.str.95, i64 15 }, { ptr, i64 } { ptr @tn.str.96, i64 8 }, { ptr, i64 } { ptr @tn.str.97, i64 5 }, { ptr, i64 } { ptr @tn.str.98, i64 5 }, { ptr, i64 } { ptr @tn.str.99, i64 9 }] -@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 +@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 [8 x i8] c"[16]f32\00" +@tn.str.44 = private constant [5 x i8] c"Mat4\00" +@tn.str.45 = private constant [5 x i8] c"Vec2\00" +@tn.str.46 = private constant [14 x i8] c"Vector(3,f32)\00" +@tn.str.47 = private constant [12 x i8] c"Vec__3__f32\00" +@tn.str.48 = private constant [5 x i8] c"Vec3\00" +@tn.str.49 = private constant [13 x i8] c"Complex__u32\00" +@tn.str.50 = private constant [4 x i8] c"Foo\00" +@tn.str.51 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.52 = private constant [5 x i8] c"*s64\00" +@tn.str.53 = private constant [7 x i8] c"**void\00" +@tn.str.54 = private constant [6 x i8] c"*Vec3\00" +@tn.str.55 = private constant [8 x i8] c"*string\00" +@tn.str.56 = private constant [6 x i8] c"[]Any\00" +@tn.str.57 = private constant [5 x i8] c"*Any\00" +@tn.str.58 = private constant [7 x i8] c"[1]Any\00" +@tn.str.59 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.60 = private constant [7 x i8] c"*[]Any\00" +@tn.str.61 = private constant [4 x i8] c"*u8\00" +@tn.str.62 = private constant [6 x i8] c"*bool\00" +@tn.str.63 = private constant [5 x i8] c"*f32\00" +@tn.str.64 = private constant [15 x i8] c"*Vector(3,f32)\00" +@tn.str.65 = private constant [7 x i8] c"[5]f32\00" +@tn.str.66 = private constant [8 x i8] c"*[5]f32\00" +@tn.str.67 = private constant [5 x i8] c"*Foo\00" +@tn.str.68 = private constant [5 x i8] c"*f64\00" +@tn.str.69 = private constant [8 x i8] c"Sx__f32\00" +@tn.str.70 = private constant [9 x i8] c"*Sx__f32\00" +@tn.str.71 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.72 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.73 = private constant [11 x i8] c"*Allocator\00" +@tn.str.74 = private constant [9 x i8] c"*Context\00" +@tn.str.75 = private constant [6 x i8] c"*Mat4\00" +@tn.str.76 = private constant [6 x i8] c"*Vec2\00" +@tn.str.77 = private constant [13 x i8] c"*Vec__3__f32\00" +@tn.str.78 = private constant [14 x i8] c"*Complex__u32\00" +@tn.str.79 = private constant [9 x i8] c"*[16]f32\00" +@tn.str.80 = private constant [10 x i8] c"*[]string\00" +@tn.str.81 = private constant [6 x i8] c"**GPA\00" +@tn.str.82 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.83 = private constant [8 x i8] c"**Arena\00" +@tn.str.84 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.85 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.86 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.87 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.88 = private constant [6 x i8] c"**s64\00" +@tn.str.89 = private constant [8 x i8] c"***void\00" +@tn.str.90 = private constant [7 x i8] c"**Vec3\00" +@tn.str.91 = private constant [9 x i8] c"**string\00" +@tn.str.92 = private constant [6 x i8] c"**Any\00" +@tn.str.93 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.94 = private constant [8 x i8] c"**[]Any\00" +@tn.str.95 = private constant [5 x i8] c"**u8\00" +@tn.str.96 = private constant [7 x i8] c"**bool\00" +@tn.str.97 = private constant [6 x i8] c"**f32\00" +@tn.str.98 = private constant [16 x i8] c"**Vector(3,f32)\00" +@tn.str.99 = private constant [9 x i8] c"**[5]f32\00" +@tn.str.100 = private constant [6 x i8] c"**Foo\00" +@tn.str.101 = private constant [6 x i8] c"**f64\00" +@tn.str.102 = private constant [10 x i8] c"**Sx__f32\00" +@__sx_type_names = private constant [97 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 7 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 13 }, { ptr, i64 } { ptr @tn.str.47, i64 11 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 12 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 12 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 6 }, { ptr, i64 } { ptr @tn.str.61, i64 3 }, { ptr, i64 } { ptr @tn.str.62, i64 5 }, { ptr, i64 } { ptr @tn.str.63, i64 4 }, { ptr, i64 } { ptr @tn.str.64, i64 14 }, { ptr, i64 } { ptr @tn.str.65, i64 6 }, { ptr, i64 } { ptr @tn.str.66, i64 7 }, { ptr, i64 } { ptr @tn.str.67, i64 4 }, { ptr, i64 } { ptr @tn.str.68, i64 4 }, { ptr, i64 } { ptr @tn.str.69, i64 7 }, { ptr, i64 } { ptr @tn.str.70, i64 8 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 16 }, { ptr, i64 } { ptr @tn.str.73, i64 10 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 5 }, { ptr, i64 } { ptr @tn.str.77, i64 12 }, { ptr, i64 } { ptr @tn.str.78, i64 13 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }, { ptr, i64 } { ptr @tn.str.80, i64 9 }, { ptr, i64 } { ptr @tn.str.81, i64 5 }, { ptr, i64 } { ptr @tn.str.82, i64 12 }, { ptr, i64 } { ptr @tn.str.83, i64 7 }, { ptr, i64 } { ptr @tn.str.84, i64 6 }, { ptr, i64 } { ptr @tn.str.85, i64 10 }, { ptr, i64 } { ptr @tn.str.86, i64 19 }, { ptr, i64 } { ptr @tn.str.87, i64 13 }, { ptr, i64 } { ptr @tn.str.88, i64 5 }, { ptr, i64 } { ptr @tn.str.89, i64 7 }, { ptr, i64 } { ptr @tn.str.90, i64 6 }, { ptr, i64 } { ptr @tn.str.91, i64 8 }, { ptr, i64 } { ptr @tn.str.92, i64 5 }, { ptr, i64 } { ptr @tn.str.93, i64 8 }, { ptr, i64 } { ptr @tn.str.94, i64 7 }, { ptr, i64 } { ptr @tn.str.95, i64 4 }, { ptr, i64 } { ptr @tn.str.96, i64 6 }, { ptr, i64 } { ptr @tn.str.97, i64 5 }, { ptr, i64 } { ptr @tn.str.98, i64 15 }, { ptr, i64 } { ptr @tn.str.99, i64 8 }, { ptr, i64 } { ptr @tn.str.100, i64 5 }, { ptr, i64 } { ptr @tn.str.101, i64 5 }, { ptr, i64 } { ptr @tn.str.102, i64 9 }] @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 [1 x i8] zeroinitializer, align 1 -@str.106 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.107 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.109 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.110 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.111 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.112 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.113 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.114 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.106 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.107 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.108 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.109 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.110 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.112 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.113 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.114 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.115 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.116 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.117 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.121 = private unnamed_addr constant [8 x i8] c"v1: {}\0A\00", align 1 -@str.122 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.123 = private unnamed_addr constant [8 x i8] c"v1: {}\0A\00", align 1 -@str.124 = private unnamed_addr constant [8 x i8] c"v2: {}\0A\00", align 1 +@str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.124 = private unnamed_addr constant [8 x i8] c"v1: {}\0A\00", align 1 @str.125 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.126 = private unnamed_addr constant [8 x i8] c"v2: {}\0A\00", align 1 -@str.127 = private unnamed_addr constant [10 x i8] c"buff: {}\0A\00", align 1 +@str.126 = private unnamed_addr constant [8 x i8] c"v1: {}\0A\00", align 1 +@str.127 = private unnamed_addr constant [8 x i8] c"v2: {}\0A\00", align 1 @str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.129 = private unnamed_addr constant [10 x i8] c"buff: {}\0A\00", align 1 -@str.130 = private unnamed_addr constant [10 x i8] c"comp: {}\0A\00", align 1 +@str.129 = private unnamed_addr constant [8 x i8] c"v2: {}\0A\00", align 1 +@str.130 = private unnamed_addr constant [10 x i8] c"buff: {}\0A\00", align 1 @str.131 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.132 = private unnamed_addr constant [10 x i8] c"comp: {}\0A\00", align 1 -@str.133 = private unnamed_addr constant [9 x i8] c"add: {}\0A\00", align 1 +@str.132 = private unnamed_addr constant [10 x i8] c"buff: {}\0A\00", align 1 +@str.133 = private unnamed_addr constant [10 x i8] c"comp: {}\0A\00", align 1 @str.134 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.135 = private unnamed_addr constant [9 x i8] c"add: {}\0A\00", align 1 -@str.136 = private unnamed_addr constant [10 x i8] c"v2.x: {}\0A\00", align 1 +@str.135 = private unnamed_addr constant [10 x i8] c"comp: {}\0A\00", align 1 +@str.136 = private unnamed_addr constant [9 x i8] c"add: {}\0A\00", align 1 @str.137 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.138 = private unnamed_addr constant [10 x i8] c"v2.x: {}\0A\00", align 1 -@str.139 = private unnamed_addr constant [11 x i8] c"v2[1]: {}\0A\00", align 1 +@str.138 = private unnamed_addr constant [9 x i8] c"add: {}\0A\00", align 1 +@str.139 = private unnamed_addr constant [10 x i8] c"v2.x: {}\0A\00", align 1 @str.140 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.141 = private unnamed_addr constant [11 x i8] c"v2[1]: {}\0A\00", align 1 -@str.142 = private unnamed_addr constant [12 x i8] c"scaled: {}\0A\00", align 1 +@str.141 = private unnamed_addr constant [10 x i8] c"v2.x: {}\0A\00", align 1 +@str.142 = private unnamed_addr constant [11 x i8] c"v2[1]: {}\0A\00", align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.144 = private unnamed_addr constant [12 x i8] c"scaled: {}\0A\00", align 1 -@str.145 = private unnamed_addr constant [9 x i8] c"neg: {}\0A\00", align 1 +@str.144 = private unnamed_addr constant [11 x i8] c"v2[1]: {}\0A\00", align 1 +@str.145 = private unnamed_addr constant [12 x i8] c"scaled: {}\0A\00", align 1 @str.146 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.147 = private unnamed_addr constant [9 x i8] c"neg: {}\0A\00", align 1 -@str.148 = private unnamed_addr constant [13 x i8] c"sqrt(9): {}\0A\00", align 1 +@str.147 = private unnamed_addr constant [12 x i8] c"scaled: {}\0A\00", align 1 +@str.148 = private unnamed_addr constant [9 x i8] c"neg: {}\0A\00", align 1 @str.149 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.150 = private unnamed_addr constant [13 x i8] c"sqrt(9): {}\0A\00", align 1 -@str.151 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.150 = private unnamed_addr constant [9 x i8] c"neg: {}\0A\00", align 1 +@str.151 = private unnamed_addr constant [13 x i8] c"sqrt(9): {}\0A\00", align 1 @str.152 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.153 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.153 = private unnamed_addr constant [13 x i8] c"sqrt(9): {}\0A\00", align 1 @str.154 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 @str.155 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.156 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.157 = private unnamed_addr constant [16 x i8] c"Source_Location\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 +@str.157 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.158 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.159 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.160 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.161 = private constant [5 x i8] c"line\00" -@fld.str.162 = private constant [4 x i8] c"col\00" -@fld.str.163 = 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.161, i64 4 }, { ptr, i64 } { ptr @fld.str.162, i64 3 }, { ptr, i64 } { ptr @fld.str.163, i64 4 }] -@str.164 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.165 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.166 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.167 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.168 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.169 = private constant [4 x i8] c"ctx\00" -@fld.str.170 = private constant [6 x i8] c"alloc\00" -@fld.str.171 = private constant [8 x i8] c"dealloc\00" -@field_names.172 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.169, i64 3 }, { ptr, i64 } { ptr @fld.str.170, i64 5 }, { ptr, i64 } { ptr @fld.str.171, i64 7 }] -@str.173 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.174 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.175 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.176 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.178 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.179 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.180 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.181 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.182 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.184 = private constant [12 x i8] c"alloc_count\00" -@field_names.185 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.184, i64 11 }] -@str.186 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.187 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.188 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.189 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.190 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.191 = private constant [5 x i8] c"next\00" -@fld.str.192 = private constant [4 x i8] c"cap\00" -@field_names.193 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.191, i64 4 }, { ptr, i64 } { ptr @fld.str.192, i64 3 }] -@str.194 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.195 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.196 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.197 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.198 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.199 = private constant [6 x i8] c"first\00" -@fld.str.200 = private constant [10 x i8] c"end_index\00" -@fld.str.201 = private constant [7 x i8] c"parent\00" -@field_names.202 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.199, i64 5 }, { ptr, i64 } { ptr @fld.str.200, i64 9 }, { ptr, i64 } { ptr @fld.str.201, i64 6 }] -@str.203 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.204 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.205 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.206 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.207 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.208 = private constant [4 x i8] c"buf\00" -@fld.str.209 = private constant [4 x i8] c"len\00" -@fld.str.210 = private constant [4 x i8] c"pos\00" -@field_names.211 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.208, i64 3 }, { ptr, i64 } { ptr @fld.str.209, i64 3 }, { ptr, i64 } { ptr @fld.str.210, i64 3 }] -@str.212 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.213 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.214 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.215 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.216 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.217 = private constant [7 x i8] c"parent\00" -@fld.str.218 = private constant [12 x i8] c"alloc_count\00" -@fld.str.219 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.220 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.221 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.217, i64 6 }, { ptr, i64 } { ptr @fld.str.218, i64 11 }, { ptr, i64 } { ptr @fld.str.219, i64 13 }, { ptr, i64 } { ptr @fld.str.220, i64 17 }] -@str.222 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.223 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.224 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.225 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.226 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.227 = private constant [10 x i8] c"allocator\00" -@fld.str.228 = private constant [5 x i8] c"data\00" -@field_names.229 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.227, i64 9 }, { ptr, i64 } { ptr @fld.str.228, i64 4 }] -@str.230 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.231 = private unnamed_addr constant [5 x i8] c"Mat4\00", align 1 -@str.232 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.233 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.234 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.235 = private constant [5 x i8] c"data\00" -@field_names.236 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.235, i64 4 }] -@str.237 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.238 = private unnamed_addr constant [5 x i8] c"Vec2\00", align 1 -@str.239 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.240 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.241 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.242 = private constant [2 x i8] c"x\00" -@fld.str.243 = private constant [2 x i8] c"y\00" -@field_names.244 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.242, i64 1 }, { ptr, i64 } { ptr @fld.str.243, i64 1 }] -@str.245 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.246 = private unnamed_addr constant [12 x i8] c"Vec__3__f32\00", align 1 -@str.247 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.248 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.249 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.250 = private constant [5 x i8] c"data\00" -@field_names.251 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.250, i64 4 }] -@str.252 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.253 = private unnamed_addr constant [5 x i8] c"Vec3\00", align 1 -@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 [3 x i8] c", \00", align 1 -@fld.str.257 = private constant [5 x i8] c"data\00" -@field_names.258 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.257, i64 4 }] -@str.259 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.260 = private unnamed_addr constant [13 x i8] c"Complex__u32\00", align 1 -@str.261 = private unnamed_addr constant [2 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 [3 x i8] c", \00", align 1 -@fld.str.264 = private constant [6 x i8] c"value\00" -@fld.str.265 = private constant [6 x i8] c"count\00" -@field_names.266 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.264, i64 5 }, { ptr, i64 } { ptr @fld.str.265, i64 5 }] -@str.267 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.268 = private unnamed_addr constant [4 x i8] c"Foo\00", align 1 -@str.269 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.270 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.271 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.272 = private constant [6 x i8] c"value\00" -@fld.str.273 = private constant [6 x i8] c"count\00" -@field_names.274 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.272, i64 5 }, { ptr, i64 } { ptr @fld.str.273, i64 5 }] -@str.275 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.276 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.277 = private constant [8 x i8] c"counter\00" -@fld.str.278 = private constant [5 x i8] c"user\00" -@field_names.279 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.277, i64 7 }, { ptr, i64 } { ptr @fld.str.278, i64 4 }] -@str.280 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.281 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.282 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.283 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.284 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.164 = private constant [5 x i8] c"line\00" +@fld.str.165 = private constant [4 x i8] c"col\00" +@fld.str.166 = 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.164, i64 4 }, { ptr, i64 } { ptr @fld.str.165, i64 3 }, { ptr, i64 } { ptr @fld.str.166, i64 4 }] +@str.167 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.168 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.170 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.171 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.172 = private constant [4 x i8] c"ctx\00" +@fld.str.173 = private constant [6 x i8] c"alloc\00" +@fld.str.174 = private constant [8 x i8] c"dealloc\00" +@field_names.175 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.172, i64 3 }, { ptr, i64 } { ptr @fld.str.173, i64 5 }, { ptr, i64 } { ptr @fld.str.174, i64 7 }] +@str.176 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.177 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.178 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.179 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.181 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.182 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.183 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.185 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.186 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.187 = private constant [12 x i8] c"alloc_count\00" +@field_names.188 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.187, i64 11 }] +@str.189 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.190 = private unnamed_addr constant [11 x i8] c"ArenaChunk\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 [5 x i8] c"next\00" +@fld.str.195 = private constant [4 x i8] c"cap\00" +@field_names.196 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.194, i64 4 }, { ptr, i64 } { ptr @fld.str.195, i64 3 }] +@str.197 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.198 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.199 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.201 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.202 = private constant [6 x i8] c"first\00" +@fld.str.203 = private constant [10 x i8] c"end_index\00" +@fld.str.204 = private constant [7 x i8] c"parent\00" +@field_names.205 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.202, i64 5 }, { ptr, i64 } { ptr @fld.str.203, i64 9 }, { ptr, i64 } { ptr @fld.str.204, i64 6 }] +@str.206 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.207 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.208 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.209 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.210 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.211 = private constant [4 x i8] c"buf\00" +@fld.str.212 = private constant [4 x i8] c"len\00" +@fld.str.213 = private constant [4 x i8] c"pos\00" +@field_names.214 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.211, i64 3 }, { ptr, i64 } { ptr @fld.str.212, i64 3 }, { ptr, i64 } { ptr @fld.str.213, i64 3 }] +@str.215 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.216 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.217 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.218 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.219 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.220 = private constant [7 x i8] c"parent\00" +@fld.str.221 = private constant [12 x i8] c"alloc_count\00" +@fld.str.222 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.223 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.224 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.220, i64 6 }, { ptr, i64 } { ptr @fld.str.221, i64 11 }, { ptr, i64 } { ptr @fld.str.222, i64 13 }, { ptr, i64 } { ptr @fld.str.223, i64 17 }] +@str.225 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.226 = private unnamed_addr constant [8 x i8] c"Context\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 [10 x i8] c"allocator\00" +@fld.str.231 = private constant [5 x i8] c"data\00" +@field_names.232 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.230, i64 9 }, { ptr, i64 } { ptr @fld.str.231, i64 4 }] +@str.233 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.234 = private unnamed_addr constant [5 x i8] c"Mat4\00", align 1 +@str.235 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.236 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.237 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.238 = private constant [5 x i8] c"data\00" +@field_names.239 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.238, i64 4 }] +@str.240 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.241 = private unnamed_addr constant [5 x i8] c"Vec2\00", align 1 +@str.242 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.243 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.244 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.245 = private constant [2 x i8] c"x\00" +@fld.str.246 = private constant [2 x i8] c"y\00" +@field_names.247 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.245, i64 1 }, { ptr, i64 } { ptr @fld.str.246, i64 1 }] +@str.248 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.249 = private unnamed_addr constant [12 x i8] c"Vec__3__f32\00", align 1 +@str.250 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.251 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.252 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.253 = private constant [5 x i8] c"data\00" +@field_names.254 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.253, i64 4 }] +@str.255 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.256 = private unnamed_addr constant [5 x i8] c"Vec3\00", align 1 +@str.257 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.258 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.259 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.260 = private constant [5 x i8] c"data\00" +@field_names.261 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.260, i64 4 }] +@str.262 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.263 = private unnamed_addr constant [13 x i8] c"Complex__u32\00", align 1 +@str.264 = private unnamed_addr constant [2 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 [3 x i8] c", \00", align 1 +@fld.str.267 = private constant [6 x i8] c"value\00" +@fld.str.268 = private constant [6 x i8] c"count\00" +@field_names.269 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.267, i64 5 }, { ptr, i64 } { ptr @fld.str.268, i64 5 }] +@str.270 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.271 = private unnamed_addr constant [4 x i8] c"Foo\00", align 1 +@str.272 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.273 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.274 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.275 = private constant [6 x i8] c"value\00" +@fld.str.276 = private constant [6 x i8] c"count\00" +@field_names.277 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.275, i64 5 }, { ptr, i64 } { ptr @fld.str.276, i64 5 }] +@str.278 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.279 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.280 = private constant [8 x i8] c"counter\00" +@fld.str.281 = private constant [5 x i8] c"user\00" +@field_names.282 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.280, i64 7 }, { ptr, i64 } { ptr @fld.str.281, i64 4 }] +@str.283 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.284 = private unnamed_addr constant [2 x i8] c")\00", align 1 @str.285 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.286 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.287 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -304,78 +305,84 @@ @str.297 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.298 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.299 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.300 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.301 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.302 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.303 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.304 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.305 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.300 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.301 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.302 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.303 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.304 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.305 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.306 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.307 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.307 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.308 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.309 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.310 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.310 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.311 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.312 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.313 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.313 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.314 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.315 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.316 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.316 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.317 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.318 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.319 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.319 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.320 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.321 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.322 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.322 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.323 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.324 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.325 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.325 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.326 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.327 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.328 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.328 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.329 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.330 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.331 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.331 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.332 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.333 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.334 = private unnamed_addr constant [6 x i8] c"*Vec3\00", align 1 +@str.334 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.335 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.336 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.337 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.337 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.338 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.339 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.340 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.340 = private unnamed_addr constant [6 x i8] c"*Vec3\00", align 1 @str.341 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.342 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.343 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.343 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.344 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.345 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.346 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.346 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.347 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.348 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.349 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.349 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.350 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.351 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.352 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.352 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.353 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.354 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.355 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 +@str.355 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.356 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.357 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.358 = private unnamed_addr constant [15 x i8] c"*Vector(3,f32)\00", align 1 +@str.358 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 @str.359 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.360 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.361 = private unnamed_addr constant [8 x i8] c"*[5]f32\00", align 1 +@str.361 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 @str.362 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.363 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.364 = private unnamed_addr constant [5 x i8] c"*Foo\00", align 1 +@str.364 = private unnamed_addr constant [15 x i8] c"*Vector(3,f32)\00", align 1 @str.365 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.366 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.367 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.367 = private unnamed_addr constant [8 x i8] c"*[5]f32\00", align 1 @str.368 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.369 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.370 = private unnamed_addr constant [9 x i8] c"*Sx__f32\00", align 1 +@str.370 = private unnamed_addr constant [5 x i8] c"*Foo\00", align 1 @str.371 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.372 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.373 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.374 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.375 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.376 = private unnamed_addr constant [9 x i8] c"*Sx__f32\00", align 1 +@str.377 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -514,38 +521,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -558,50 +570,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -615,19 +755,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -644,15 +784,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -670,16 +810,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -696,17 +836,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -769,39 +909,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.248 + br label %while.hdr.270 -while.hdr.248: ; preds = %if.merge.253, %entry +while.hdr.270: ; preds = %if.merge.275, %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.249, label %while.exit.250 + br i1 %icmp, label %while.body.271, label %while.exit.272 -while.body.249: ; preds = %while.hdr.248 +while.body.271: ; preds = %while.hdr.270 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.251, label %if.else.252 + br i1 %icmpN, label %if.then.273, label %if.else.274 -while.exit.250: ; preds = %while.hdr.248 +while.exit.272: ; preds = %while.hdr.270 ret void -if.then.251: ; preds = %while.body.249 +if.then.273: ; preds = %while.body.271 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.253 + br label %if.merge.275 -if.else.252: ; preds = %while.body.249 +if.else.274: ; preds = %while.body.271 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.253 + br label %if.merge.275 -if.merge.253: ; preds = %if.else.252, %if.then.251 - %bp = phi i64 [ %addN, %if.then.251 ], [ %addN, %if.else.252 ] +if.merge.275: ; preds = %if.else.274, %if.then.273 + %bp = phi i64 [ %addN, %if.then.273 ], [ %addN, %if.else.274 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -814,37 +954,29 @@ if.merge.253: ; preds = %if.else.252, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.248 + br label %while.hdr.270 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.238, label %if.merge.239 - -if.then.238: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.239: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.240, label %if.merge.241 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.240: ; preds = %if.merge.239 +if.then.58: ; 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.241 + br label %if.merge.59 -if.merge.241: ; preds = %if.then.240, %if.merge.239 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -857,15 +989,15 @@ if.merge.241: ; preds = %if.then.240, %if.me 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.242, label %if.merge.243 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.242: ; preds = %if.merge.241 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.243 + br label %if.merge.61 -if.merge.243: ; preds = %if.then.242, %if.merge.241 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -878,15 +1010,15 @@ if.merge.243: ; preds = %if.then.242, %if.me 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.244, label %if.merge.245 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.244: ; preds = %if.merge.243 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.245 + br label %if.merge.63 -if.merge.245: ; preds = %if.then.244, %if.merge.243 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -899,65 +1031,116 @@ if.merge.245: ; preds = %if.then.244, %if.me 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.246, label %if.merge.247 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.246: ; preds = %if.merge.245 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.247 + br label %if.merge.65 -if.merge.247: ; preds = %if.then.246, %if.merge.245 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.268, label %if.merge.269 + +if.then.268: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.269: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.254 + br label %while.hdr.276 -while.hdr.254: ; preds = %if.merge.258, %if.merge.247 +while.hdr.276: ; preds = %if.merge.280, %if.merge.269 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.255, label %while.exit.256 + br i1 %icmpN, label %while.body.277, label %while.exit.278 -while.body.255: ; preds = %while.hdr.254 +while.body.277: ; preds = %while.hdr.276 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.257, label %if.merge.258 + br i1 %icmpN, label %if.then.279, label %if.merge.280 -while.exit.256: ; preds = %if.then.257, %while.hdr.254 +while.exit.278: ; preds = %if.then.279, %while.hdr.276 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.257: ; preds = %while.body.255 - br label %while.exit.256 +if.then.279: ; preds = %while.body.277 + br label %while.exit.278 -if.merge.258: ; preds = %while.body.255 +if.merge.280: ; preds = %while.body.277 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.254 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.276 } ; Function Attrs: nounwind @@ -1036,7 +1219,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -1044,640 +1227,667 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 37, label %match.arm.44 - i64 38, label %match.arm.44 - i64 40, label %match.arm.44 - i64 41, label %match.arm.44 - i64 42, label %match.arm.44 - i64 43, label %match.arm.44 - i64 62, label %match.arm.45 - i64 39, label %match.arm.47 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 38, label %match.arm.43 + i64 39, label %match.arm.43 + i64 41, label %match.arm.43 + i64 42, label %match.arm.43 + i64 43, label %match.arm.43 + i64 44, label %match.arm.43 + i64 63, label %match.arm.44 + i64 40, label %match.arm.46 + i64 35, label %match.arm.47 + i64 37, label %match.arm.47 + i64 52, label %match.arm.47 + i64 59, label %match.arm.47 i64 36, label %match.arm.48 - i64 51, label %match.arm.48 - i64 58, label %match.arm.48 - i64 35, label %match.arm.49 + i64 50, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 i64 49, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 50, label %match.arm.50 - i64 52, label %match.arm.50 - i64 53, label %match.arm.50 - i64 54, label %match.arm.50 - i64 55, label %match.arm.50 - i64 56, label %match.arm.50 - i64 57, label %match.arm.50 - i64 59, label %match.arm.50 - i64 60, label %match.arm.50 - i64 61, label %match.arm.50 - i64 63, label %match.arm.50 - i64 13, label %match.arm.52 + i64 51, label %match.arm.49 + i64 53, label %match.arm.49 + i64 54, label %match.arm.49 + i64 55, label %match.arm.49 + i64 56, label %match.arm.49 + i64 57, label %match.arm.49 + i64 58, label %match.arm.49 + i64 60, label %match.arm.49 + i64 61, label %match.arm.49 + i64 62, label %match.arm.49 + i64 64, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.209, %dispatch.merge.195, %dispatch.merge.175, %dispatch.merge.167, %dispatch.merge.162, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.239, %dispatch.merge.225, %dispatch.merge.199, %dispatch.merge.191, %dispatch.merge.186, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [97 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 37, label %dispatch.case.81 - i64 38, label %dispatch.case.82 - i64 40, label %dispatch.case.83 - i64 41, label %dispatch.case.84 - i64 42, label %dispatch.case.85 - i64 43, label %dispatch.case.86 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 38, label %dispatch.case.105 + i64 39, label %dispatch.case.106 + i64 41, label %dispatch.case.107 + i64 42, label %dispatch.case.108 + i64 43, label %dispatch.case.109 + i64 44, label %dispatch.case.110 ] -match.arm.45: ; preds = %entry +match.arm.44: ; preds = %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.163 [ - i64 62, label %dispatch.case.164 + switch i64 %ua.raw20, label %dispatch.default.187 [ + i64 63, label %dispatch.case.188 ] -match.arm.46: ; No predecessors! +match.arm.45: ; No predecessors! unreachable -match.arm.47: ; preds = %entry +match.arm.46: ; preds = %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.168 [ - i64 39, label %dispatch.case.169 + switch i64 %ua.raw24, label %dispatch.default.192 [ + i64 40, label %dispatch.case.193 ] -match.arm.48: ; preds = %entry, %entry, %entry +match.arm.47: ; preds = %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw30 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.176 [ - i64 36, label %dispatch.case.177 - i64 51, label %dispatch.case.178 - i64 58, label %dispatch.case.179 + switch i64 %ua.raw28, label %dispatch.default.200 [ + i64 35, label %dispatch.case.201 + i64 37, label %dispatch.case.202 + i64 52, label %dispatch.case.203 + i64 59, label %dispatch.case.204 ] -match.arm.49: ; preds = %entry, %entry +match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw32 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.196 [ - i64 35, label %dispatch.case.197 - i64 49, label %dispatch.case.198 + switch i64 %ua.raw32, label %dispatch.default.226 [ + i64 36, label %dispatch.case.227 + i64 50, label %dispatch.case.228 ] -match.arm.50: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.49: ; preds = %entry, %entry, %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.raw38 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw38, label %dispatch.default.210 [ - i64 18, label %dispatch.case.211 - i64 22, label %dispatch.case.212 - i64 24, label %dispatch.case.213 - i64 26, label %dispatch.case.214 - i64 28, label %dispatch.case.215 - i64 29, label %dispatch.case.216 - i64 31, label %dispatch.case.217 - i64 33, label %dispatch.case.218 - i64 44, label %dispatch.case.219 - i64 45, label %dispatch.case.220 - i64 46, label %dispatch.case.221 - i64 47, label %dispatch.case.222 - i64 48, label %dispatch.case.223 - i64 50, label %dispatch.case.224 - i64 52, label %dispatch.case.225 - i64 53, label %dispatch.case.226 - i64 54, label %dispatch.case.227 - i64 55, label %dispatch.case.228 - i64 56, label %dispatch.case.229 - i64 57, label %dispatch.case.230 - i64 59, label %dispatch.case.231 - i64 60, label %dispatch.case.232 - i64 61, label %dispatch.case.233 - i64 63, label %dispatch.case.234 + switch i64 %ua.raw36, label %dispatch.default.240 [ + i64 18, label %dispatch.case.241 + i64 22, label %dispatch.case.242 + i64 24, label %dispatch.case.243 + i64 26, label %dispatch.case.244 + i64 28, label %dispatch.case.245 + i64 29, label %dispatch.case.246 + i64 31, label %dispatch.case.247 + i64 33, label %dispatch.case.248 + i64 45, label %dispatch.case.249 + i64 46, label %dispatch.case.250 + i64 47, label %dispatch.case.251 + i64 48, label %dispatch.case.252 + i64 49, label %dispatch.case.253 + i64 51, label %dispatch.case.254 + i64 53, label %dispatch.case.255 + i64 54, label %dispatch.case.256 + i64 55, label %dispatch.case.257 + i64 56, label %dispatch.case.258 + i64 57, label %dispatch.case.259 + i64 58, label %dispatch.case.260 + i64 60, label %dispatch.case.261 + i64 61, label %dispatch.case.262 + i64 62, label %dispatch.case.263 + i64 64, label %dispatch.case.264 ] -match.arm.51: ; No predecessors! +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [95 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [97 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw42 to i32 +if.then.53: ; preds = %match.arm.39 + %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.55 + +if.else.54: ; preds = %match.arm.39 + %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.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw43 to double +f64.unbox.82: ; preds = %match.arm.42 + %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.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.110, %dispatch.case.109, %dispatch.case.108, %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.100, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.103, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) + %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.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load {}, ptr %ua.ptr56, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) + %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.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) + %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.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) + %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.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) + %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.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) + %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.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) + %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.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) + %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.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { [16 x float] }, ptr %ua.ptr84, align 4 - %callN = call { ptr, i64 } @struct_to_string__Mat4(ptr %0, { [16 x float] } %ua.load85) + %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.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { float, float }, ptr %ua.ptr88, align 4 - %callN = call { ptr, i64 } @struct_to_string__Vec2(ptr %0, { float, float } %ua.load89) + %ua.load89 = load { [16 x float] }, ptr %ua.ptr88, align 4 + %callN = call { ptr, i64 } @struct_to_string__Mat4(ptr %0, { [16 x float] } %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr - %ua.load93 = load { <3 x float> }, ptr %ua.ptr92, align 16 - %callN = call { ptr, i64 } @struct_to_string__Vec__3__f32(ptr %0, { <3 x float> } %ua.load93) + %ua.load93 = load { float, float }, ptr %ua.ptr92, align 4 + %callN = call { ptr, i64 } @struct_to_string__Vec2(ptr %0, { float, float } %ua.load93) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.84: ; preds = %match.arm.44 +dispatch.case.107: ; preds = %match.arm.43 %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr96 = inttoptr i64 %ua.raw95 to ptr %ua.load97 = load { <3 x float> }, ptr %ua.ptr96, align 16 - %callN = call { ptr, i64 } @struct_to_string__Vec3(ptr %0, { <3 x float> } %ua.load97) + %callN = call { ptr, i64 } @struct_to_string__Vec__3__f32(ptr %0, { <3 x float> } %ua.load97) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.85: ; preds = %match.arm.44 +dispatch.case.108: ; preds = %match.arm.43 %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr100 = inttoptr i64 %ua.raw99 to ptr - %ua.load101 = load { i32, i32 }, ptr %ua.ptr100, align 4 - %callN = call { ptr, i64 } @struct_to_string__Complex__u32(ptr %0, { i32, i32 } %ua.load101) + %ua.load101 = load { <3 x float> }, ptr %ua.ptr100, align 16 + %callN = call { ptr, i64 } @struct_to_string__Vec3(ptr %0, { <3 x float> } %ua.load101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.86: ; preds = %match.arm.44 +dispatch.case.109: ; preds = %match.arm.43 %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr104 = inttoptr i64 %ua.raw103 to ptr %ua.load105 = load { i32, i32 }, ptr %ua.ptr104, align 4 - %callN = call { ptr, i64 } @struct_to_string__Foo(ptr %0, { i32, i32 } %ua.load105) + %callN = call { ptr, i64 } @struct_to_string__Complex__u32(ptr %0, { i32, i32 } %ua.load105) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.162: ; preds = %dispatch.case.164, %dispatch.default.163 +dispatch.case.110: ; preds = %match.arm.43 + %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr108 = inttoptr i64 %ua.raw107 to ptr + %ua.load109 = load { i32, i32 }, ptr %ua.ptr108, align 4 + %callN = call { ptr, i64 } @struct_to_string__Foo(ptr %0, { i32, i32 } %ua.load109) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.186: ; preds = %dispatch.case.188, %dispatch.default.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.163: ; preds = %match.arm.45 - store { ptr, i64 } { ptr @str.101, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.162 +dispatch.default.187: ; preds = %match.arm.44 + store { ptr, i64 } { ptr @str.104, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.186 -dispatch.case.164: ; preds = %match.arm.45 - %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr109 = inttoptr i64 %ua.raw108 to ptr - %ua.load110 = load { i64, [4 x i8] }, ptr %ua.ptr109, align 8 - %callN = call { ptr, i64 } @enum_to_string__Sx__f32(ptr %0, { i64, [4 x i8] } %ua.load110) +dispatch.case.188: ; preds = %match.arm.44 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr113 = inttoptr i64 %ua.raw112 to ptr + %ua.load114 = load { i64, [4 x i8] }, ptr %ua.ptr113, align 8 + %callN = call { ptr, i64 } @enum_to_string__Sx__f32(ptr %0, { i64, [4 x i8] } %ua.load114) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.162 + br label %dispatch.merge.186 -dispatch.merge.167: ; preds = %dispatch.case.169, %dispatch.default.168 +dispatch.merge.191: ; preds = %dispatch.case.193, %dispatch.default.192 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.168: ; preds = %match.arm.47 - store { ptr, i64 } { ptr @str.102, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.167 +dispatch.default.192: ; preds = %match.arm.46 + store { ptr, i64 } { ptr @str.105, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.191 -dispatch.case.169: ; preds = %match.arm.47 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr114 = inttoptr i64 %ua.raw113 to ptr - %ua.load115 = load <3 x float>, ptr %ua.ptr114, align 16 - %callN = call { ptr, i64 } @vector_to_string__vec_3_f32(ptr %0, <3 x float> %ua.load115) +dispatch.case.193: ; preds = %match.arm.46 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr118 = inttoptr i64 %ua.raw117 to ptr + %ua.load119 = load <3 x float>, ptr %ua.ptr118, align 16 + %callN = call { ptr, i64 } @vector_to_string__vec_3_f32(ptr %0, <3 x float> %ua.load119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.167 + br label %dispatch.merge.191 -dispatch.merge.175: ; preds = %dispatch.case.179, %dispatch.case.178, %dispatch.case.177, %dispatch.default.176 +dispatch.merge.199: ; preds = %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.default.200 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.176: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.103, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.175 +dispatch.default.200: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.106, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.199 -dispatch.case.177: ; preds = %match.arm.48 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr119 = inttoptr i64 %ua.raw118 to ptr - %ua.load120 = load [16 x float], ptr %ua.ptr119, align 4 - %callN = call { ptr, i64 } @array_to_string__AR_16_f32(ptr %0, [16 x float] %ua.load120) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.175 - -dispatch.case.178: ; preds = %match.arm.48 +dispatch.case.201: ; preds = %match.arm.47 %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr123 = inttoptr i64 %ua.raw122 to ptr - %ua.load124 = load [1 x { i64, i64 }], ptr %ua.ptr123, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load124) + %ua.load124 = load [4 x i64], ptr %ua.ptr123, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.175 + br label %dispatch.merge.199 -dispatch.case.179: ; preds = %match.arm.48 +dispatch.case.202: ; preds = %match.arm.47 %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr127 = inttoptr i64 %ua.raw126 to ptr - %ua.load128 = load [5 x float], ptr %ua.ptr127, align 4 - %callN = call { ptr, i64 } @array_to_string__AR_5_f32(ptr %0, [5 x float] %ua.load128) + %ua.load128 = load [16 x float], ptr %ua.ptr127, align 4 + %callN = call { ptr, i64 } @array_to_string__AR_16_f32(ptr %0, [16 x float] %ua.load128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.175 + br label %dispatch.merge.199 -dispatch.merge.195: ; preds = %dispatch.case.198, %dispatch.case.197, %dispatch.default.196 +dispatch.case.203: ; preds = %match.arm.47 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr131 = inttoptr i64 %ua.raw130 to ptr + %ua.load132 = load [1 x { i64, i64 }], ptr %ua.ptr131, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load132) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.199 + +dispatch.case.204: ; preds = %match.arm.47 + %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr135 = inttoptr i64 %ua.raw134 to ptr + %ua.load136 = load [5 x float], ptr %ua.ptr135, align 4 + %callN = call { ptr, i64 } @array_to_string__AR_5_f32(ptr %0, [5 x float] %ua.load136) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.199 + +dispatch.merge.225: ; preds = %dispatch.case.228, %dispatch.case.227, %dispatch.default.226 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.196: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.104, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.195 +dispatch.default.226: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.107, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.225 -dispatch.case.197: ; preds = %match.arm.49 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr132 = inttoptr i64 %ua.raw131 to ptr - %ua.load133 = load { ptr, i64 }, ptr %ua.ptr132, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load133) +dispatch.case.227: ; preds = %match.arm.48 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr140 = inttoptr i64 %ua.raw139 to ptr + %ua.load141 = load { ptr, i64 }, ptr %ua.ptr140, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load141) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.195 + br label %dispatch.merge.225 -dispatch.case.198: ; preds = %match.arm.49 - %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr136 = inttoptr i64 %ua.raw135 to ptr - %ua.load137 = load { ptr, i64 }, ptr %ua.ptr136, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load137) +dispatch.case.228: ; preds = %match.arm.48 + %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr144 = inttoptr i64 %ua.raw143 to ptr + %ua.load145 = load { ptr, i64 }, ptr %ua.ptr144, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.195 + br label %dispatch.merge.225 -dispatch.merge.209: ; preds = %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.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.case.211, %dispatch.default.210 +dispatch.merge.239: ; preds = %dispatch.case.264, %dispatch.case.263, %dispatch.case.262, %dispatch.case.261, %dispatch.case.260, %dispatch.case.259, %dispatch.case.258, %dispatch.case.257, %dispatch.case.256, %dispatch.case.255, %dispatch.case.254, %dispatch.case.253, %dispatch.case.252, %dispatch.case.251, %dispatch.case.250, %dispatch.case.249, %dispatch.case.248, %dispatch.case.247, %dispatch.case.246, %dispatch.case.245, %dispatch.case.244, %dispatch.case.243, %dispatch.case.242, %dispatch.case.241, %dispatch.default.240 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.210: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.105, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.209 +dispatch.default.240: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.108, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.239 -dispatch.case.211: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw140 to ptr +dispatch.case.241: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw148 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.209 + br label %dispatch.merge.239 -dispatch.case.212: ; preds = %match.arm.50 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp143) +dispatch.case.242: ; preds = %match.arm.49 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.213: ; preds = %match.arm.50 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp146) +dispatch.case.243: ; preds = %match.arm.49 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.214: ; preds = %match.arm.50 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp149) +dispatch.case.244: ; preds = %match.arm.49 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.215: ; preds = %match.arm.50 - %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 - %iNp152 = inttoptr i64 %ua.raw151 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp152) +dispatch.case.245: ; preds = %match.arm.49 + %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 + %iNp160 = inttoptr i64 %ua.raw159 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp160) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.216: ; preds = %match.arm.50 - %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 - %iNp155 = inttoptr i64 %ua.raw154 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp155) +dispatch.case.246: ; preds = %match.arm.49 + %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 + %iNp163 = inttoptr i64 %ua.raw162 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp163) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.217: ; preds = %match.arm.50 - %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 - %iNp158 = inttoptr i64 %ua.raw157 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp158) +dispatch.case.247: ; preds = %match.arm.49 + %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 + %iNp166 = inttoptr i64 %ua.raw165 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp166) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.218: ; preds = %match.arm.50 - %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 - %iNp161 = inttoptr i64 %ua.raw160 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp161) +dispatch.case.248: ; preds = %match.arm.49 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %iNp169 = inttoptr i64 %ua.raw168 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp169) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.219: ; preds = %match.arm.50 - %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 - %iNp164 = inttoptr i64 %ua.raw163 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp164) +dispatch.case.249: ; preds = %match.arm.49 + %ua.raw171 = extractvalue { i64, i64 } %loadN, 1 + %iNp172 = inttoptr i64 %ua.raw171 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp172) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.220: ; preds = %match.arm.50 - %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 - %iNp167 = inttoptr i64 %ua.raw166 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp167) +dispatch.case.250: ; preds = %match.arm.49 + %ua.raw174 = extractvalue { i64, i64 } %loadN, 1 + %iNp175 = inttoptr i64 %ua.raw174 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp175) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.221: ; preds = %match.arm.50 - %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 - %iNp170 = inttoptr i64 %ua.raw169 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp170) +dispatch.case.251: ; preds = %match.arm.49 + %ua.raw177 = extractvalue { i64, i64 } %loadN, 1 + %iNp178 = inttoptr i64 %ua.raw177 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp178) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.222: ; preds = %match.arm.50 - %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 - %iNp173 = inttoptr i64 %ua.raw172 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Vec3(ptr %0, ptr %iNp173) +dispatch.case.252: ; preds = %match.arm.49 + %ua.raw180 = extractvalue { i64, i64 } %loadN, 1 + %iNp181 = inttoptr i64 %ua.raw180 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Vec3(ptr %0, ptr %iNp181) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.223: ; preds = %match.arm.50 - %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) +dispatch.case.253: ; preds = %match.arm.49 + %ua.raw183 = extractvalue { i64, i64 } %loadN, 1 + %iNp184 = inttoptr i64 %ua.raw183 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp184) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.224: ; preds = %match.arm.50 - %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) +dispatch.case.254: ; preds = %match.arm.49 + %ua.raw186 = extractvalue { i64, i64 } %loadN, 1 + %iNp187 = inttoptr i64 %ua.raw186 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp187) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.225: ; preds = %match.arm.50 - %ua.raw181 = extractvalue { i64, i64 } %loadN, 1 - %iNp182 = inttoptr i64 %ua.raw181 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp182) +dispatch.case.255: ; preds = %match.arm.49 + %ua.raw189 = extractvalue { i64, i64 } %loadN, 1 + %iNp190 = inttoptr i64 %ua.raw189 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp190) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.226: ; preds = %match.arm.50 - %ua.raw184 = extractvalue { i64, i64 } %loadN, 1 - %iNp185 = inttoptr i64 %ua.raw184 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp185) +dispatch.case.256: ; preds = %match.arm.49 + %ua.raw192 = extractvalue { i64, i64 } %loadN, 1 + %iNp193 = inttoptr i64 %ua.raw192 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp193) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.227: ; preds = %match.arm.50 - %ua.raw187 = extractvalue { i64, i64 } %loadN, 1 - %iNp188 = inttoptr i64 %ua.raw187 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp188) +dispatch.case.257: ; preds = %match.arm.49 + %ua.raw195 = extractvalue { i64, i64 } %loadN, 1 + %iNp196 = inttoptr i64 %ua.raw195 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp196) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.228: ; preds = %match.arm.50 - %ua.raw190 = extractvalue { i64, i64 } %loadN, 1 - %iNp191 = inttoptr i64 %ua.raw190 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp191) +dispatch.case.258: ; preds = %match.arm.49 + %ua.raw198 = extractvalue { i64, i64 } %loadN, 1 + %iNp199 = inttoptr i64 %ua.raw198 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp199) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.229: ; preds = %match.arm.50 - %ua.raw193 = extractvalue { i64, i64 } %loadN, 1 - %iNp194 = inttoptr i64 %ua.raw193 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp194) +dispatch.case.259: ; preds = %match.arm.49 + %ua.raw201 = extractvalue { i64, i64 } %loadN, 1 + %iNp202 = inttoptr i64 %ua.raw201 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp202) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.230: ; preds = %match.arm.50 - %ua.raw196 = extractvalue { i64, i64 } %loadN, 1 - %iNp197 = inttoptr i64 %ua.raw196 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_vec_3_f32(ptr %0, ptr %iNp197) +dispatch.case.260: ; preds = %match.arm.49 + %ua.raw204 = extractvalue { i64, i64 } %loadN, 1 + %iNp205 = inttoptr i64 %ua.raw204 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_vec_3_f32(ptr %0, ptr %iNp205) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.231: ; preds = %match.arm.50 - %ua.raw199 = extractvalue { i64, i64 } %loadN, 1 - %iNp200 = inttoptr i64 %ua.raw199 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_5_f32(ptr %0, ptr %iNp200) +dispatch.case.261: ; preds = %match.arm.49 + %ua.raw207 = extractvalue { i64, i64 } %loadN, 1 + %iNp208 = inttoptr i64 %ua.raw207 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_5_f32(ptr %0, ptr %iNp208) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.232: ; preds = %match.arm.50 - %ua.raw202 = extractvalue { i64, i64 } %loadN, 1 - %iNp203 = inttoptr i64 %ua.raw202 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Foo(ptr %0, ptr %iNp203) +dispatch.case.262: ; preds = %match.arm.49 + %ua.raw210 = extractvalue { i64, i64 } %loadN, 1 + %iNp211 = inttoptr i64 %ua.raw210 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Foo(ptr %0, ptr %iNp211) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.233: ; preds = %match.arm.50 - %ua.raw205 = extractvalue { i64, i64 } %loadN, 1 - %iNp206 = inttoptr i64 %ua.raw205 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp206) +dispatch.case.263: ; preds = %match.arm.49 + %ua.raw213 = extractvalue { i64, i64 } %loadN, 1 + %iNp214 = inttoptr i64 %ua.raw213 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp214) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 -dispatch.case.234: ; preds = %match.arm.50 - %ua.raw208 = extractvalue { i64, i64 } %loadN, 1 - %iNp209 = inttoptr i64 %ua.raw208 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Sx__f32(ptr %0, ptr %iNp209) +dispatch.case.264: ; preds = %match.arm.49 + %ua.raw216 = extractvalue { i64, i64 } %loadN, 1 + %iNp217 = inttoptr i64 %ua.raw216 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Sx__f32(ptr %0, ptr %iNp217) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.209 + br label %dispatch.merge.239 } ; Function Attrs: nounwind @@ -1686,7 +1896,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.106, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.109, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1717,7 +1927,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1735,9 +1945,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1775,14 +1985,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, 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 @@ -1790,7 +2000,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, 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 @@ -1800,13 +2010,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, 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 @@ -1814,7 +2024,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1826,83 +2036,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, 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.113, 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.114, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1930,18 +2064,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1954,6 +2125,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, 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.120, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, 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.122, 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 @@ -1962,11 +2172,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -2148,7 +2358,7 @@ entry: define internal void @print__ct_saf3b53dfd1590ed__pack_Vec3(ptr %0, { <3 x float> } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.121, i64 7 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.124, i64 7 }, ptr %alloca, align 8 %allocaN = alloca { <3 x float> }, align 16 store { <3 x float> } %1, ptr %allocaN, align 16 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2156,7 +2366,7 @@ entry: %ba.tmp = alloca { <3 x float> }, align 16 store { <3 x float> } %load, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 41, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i, 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 @@ -2166,7 +2376,7 @@ entry: %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.122, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.125, 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 4) @@ -2177,7 +2387,7 @@ entry: %ba.tmp12 = alloca { <3 x float> }, align 16 store { <3 x float> } %loadN, ptr %ba.tmp12, align 16 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 41, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2196,7 +2406,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.123, i64 7 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.126, i64 7 }) ret { ptr, i64 } %call } @@ -2204,7 +2414,7 @@ entry: define internal void @print__ct_s962c60eb1430613f__pack_vec_3_f32(ptr %0, <3 x float> %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.124, i64 7 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.127, i64 7 }, ptr %alloca, align 8 %allocaN = alloca <3 x float>, align 16 store <3 x float> %1, ptr %allocaN, align 16 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2212,7 +2422,7 @@ entry: %ba.tmp = alloca <3 x float>, align 16 store <3 x float> %load, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 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 @@ -2222,7 +2432,7 @@ entry: %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.125, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.128, 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 4) @@ -2233,7 +2443,7 @@ entry: %ba.tmp12 = alloca <3 x float>, align 16 store <3 x float> %loadN, ptr %ba.tmp12, align 16 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2252,7 +2462,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.126, i64 7 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 7 }) ret { ptr, i64 } %call } @@ -2260,7 +2470,7 @@ entry: define internal void @print__ct_s549467baf058e667__pack_AR_5_f32(ptr %0, [5 x float] %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.127, i64 9 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.130, i64 9 }, ptr %alloca, align 8 %allocaN = alloca [5 x float], align 4 store [5 x float] %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2268,7 +2478,7 @@ entry: %ba.tmp = alloca [5 x float], align 4 store [5 x float] %load, ptr %ba.tmp, align 4 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 58, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 59, i64 undef }, i64 %ba.p2i, 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 @@ -2278,7 +2488,7 @@ entry: %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.128, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.131, 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 6) @@ -2289,7 +2499,7 @@ entry: %ba.tmp12 = alloca [5 x float], align 4 store [5 x float] %loadN, ptr %ba.tmp12, align 4 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 58, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 59, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2308,7 +2518,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 9 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.132, i64 9 }) ret { ptr, i64 } %call } @@ -2316,7 +2526,7 @@ entry: define internal void @print__ct_sd91eb2e81c05dcd4__pack_Foo(ptr %0, { i32, i32 } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.130, i64 9 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.133, i64 9 }, ptr %alloca, align 8 %allocaN = alloca { i32, i32 }, align 8 store { i32, i32 } %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2324,7 +2534,7 @@ entry: %ba.tmp = alloca { i32, i32 }, align 8 store { i32, i32 } %load, ptr %ba.tmp, align 4 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 43, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 44, i64 undef }, i64 %ba.p2i, 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 @@ -2334,7 +2544,7 @@ entry: %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.131, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.134, 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 6) @@ -2345,7 +2555,7 @@ entry: %ba.tmp12 = alloca { i32, i32 }, align 8 store { i32, i32 } %loadN, ptr %ba.tmp12, align 4 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 43, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 44, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2364,7 +2574,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_3(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.132, i64 9 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.135, i64 9 }) ret { ptr, i64 } %call } @@ -2372,7 +2582,7 @@ entry: define internal void @print__ct_s3038067ddd716595__pack_vec_3_f32(ptr %0, <3 x float> %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.133, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.136, i64 8 }, ptr %alloca, align 8 %allocaN = alloca <3 x float>, align 16 store <3 x float> %1, ptr %allocaN, align 16 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2380,7 +2590,7 @@ entry: %ba.tmp = alloca <3 x float>, align 16 store <3 x float> %load, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 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 @@ -2390,7 +2600,7 @@ entry: %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.134, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.137, 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 5) @@ -2401,7 +2611,7 @@ entry: %ba.tmp12 = alloca <3 x float>, align 16 store <3 x float> %loadN, ptr %ba.tmp12, align 16 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2420,7 +2630,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_4(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.135, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.138, i64 8 }) ret { ptr, i64 } %call } @@ -2428,7 +2638,7 @@ entry: define internal void @print__ct_sb50fffa856c31fe8__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.136, i64 9 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.139, i64 9 }, ptr %alloca, align 8 %allocaN = alloca float, align 4 store float %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2445,7 +2655,7 @@ entry: %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.137, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.140, 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 6) @@ -2474,7 +2684,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_5(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.138, i64 9 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.141, i64 9 }) ret { ptr, i64 } %call } @@ -2482,7 +2692,7 @@ entry: define internal void @print__ct_sd243afec30847211__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.139, i64 10 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.142, i64 10 }, ptr %alloca, align 8 %allocaN = alloca float, align 4 store float %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2499,7 +2709,7 @@ entry: %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.140, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.143, 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 7) @@ -2528,7 +2738,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_6(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.141, i64 10 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, i64 10 }) ret { ptr, i64 } %call } @@ -2536,7 +2746,7 @@ entry: define internal void @print__ct_s1e80f4429411a63__pack_vec_3_f32(ptr %0, <3 x float> %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.142, i64 11 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.145, i64 11 }, ptr %alloca, align 8 %allocaN = alloca <3 x float>, align 16 store <3 x float> %1, ptr %allocaN, align 16 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2544,7 +2754,7 @@ entry: %ba.tmp = alloca <3 x float>, align 16 store <3 x float> %load, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 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 @@ -2554,7 +2764,7 @@ entry: %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.143, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.146, 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 8) @@ -2565,7 +2775,7 @@ entry: %ba.tmp12 = alloca <3 x float>, align 16 store <3 x float> %loadN, ptr %ba.tmp12, align 16 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2584,7 +2794,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_7(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, i64 11 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.147, i64 11 }) ret { ptr, i64 } %call } @@ -2592,7 +2802,7 @@ entry: define internal void @print__ct_sd428128013c58f8b__pack_vec_3_f32(ptr %0, <3 x float> %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.145, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.148, i64 8 }, ptr %alloca, align 8 %allocaN = alloca <3 x float>, align 16 store <3 x float> %1, ptr %allocaN, align 16 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2600,7 +2810,7 @@ entry: %ba.tmp = alloca <3 x float>, align 16 store <3 x float> %load, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 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 @@ -2610,7 +2820,7 @@ entry: %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.146, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.149, 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 5) @@ -2621,7 +2831,7 @@ entry: %ba.tmp12 = alloca <3 x float>, align 16 store <3 x float> %loadN, ptr %ba.tmp12, align 16 %ba.p2i13 = ptrtoint ptr %ba.tmp12 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i13, 1 + %ba.val14 = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i13, 1 %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2640,7 +2850,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_8(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.147, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.150, i64 8 }) ret { ptr, i64 } %call } @@ -2657,7 +2867,7 @@ entry: define internal void @print__ct_sa2a846ee0ce9045d__pack_f64(ptr %0, double %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.148, i64 12 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.151, i64 12 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 store double %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2673,7 +2883,7 @@ entry: %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.149, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.152, 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 9) @@ -2701,7 +2911,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_9(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.150, i64 12 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.153, i64 12 }) ret { ptr, i64 } %call } @@ -2709,7 +2919,7 @@ entry: define internal void @print__ct_sbc6305862a3a863d__pack_Sx__f32(ptr %0, { i64, [4 x i8] } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.151, i64 3 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.154, i64 3 }, ptr %alloca, align 8 %allocaN = alloca { i64, [4 x i8] }, align 8 store { i64, [4 x i8] } %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2717,7 +2927,7 @@ entry: %ba.tmp = alloca { i64, [4 x i8] }, align 8 store { i64, [4 x i8] } %load, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 62, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 63, i64 undef }, i64 %ba.p2i, 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 @@ -2727,13 +2937,13 @@ entry: %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.152, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.155, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i64, [4 x i8] }, ptr %allocaN, align 8 %ba.tmp9 = alloca { i64, [4 x i8] }, align 8 store { i64, [4 x i8] } %loadN, ptr %ba.tmp9, align 8 %ba.p2i10 = ptrtoint ptr %ba.tmp9 to i64 - %ba.val11 = insertvalue { i64, i64 } { i64 62, i64 undef }, i64 %ba.p2i10, 1 + %ba.val11 = insertvalue { i64, i64 } { i64 63, i64 undef }, i64 %ba.p2i10, 1 %call = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val11) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %call) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -2752,7 +2962,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_10(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.153, i64 3 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.156, i64 3 }) ret { ptr, i64 } %call } @@ -2760,7 +2970,7 @@ entry: define internal void @print__ct_sbc6305862a3a863d__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.154, i64 3 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.157, i64 3 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2775,7 +2985,7 @@ entry: %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.155, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.158, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %ba.val9 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %loadN, 1 @@ -2797,7 +3007,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_11(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.156, i64 3 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.159, i64 3 }) ret { ptr, i64 } %call } @@ -2806,35 +3016,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.157, i64 15 }, { ptr, i64 } { ptr @str.158, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 15 }, { ptr, i64 } { ptr @str.161, 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.87 + br label %while.hdr.111 -while.hdr.87: ; preds = %fv.merge, %entry +while.hdr.111: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.88, label %while.exit.89 + br i1 %icmp, label %while.body.112, label %while.exit.113 -while.body.88: ; preds = %while.hdr.87 +while.body.112: ; preds = %while.hdr.111 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.90, label %if.merge.91 + br i1 %icmpN, label %if.then.114, label %if.merge.115 -while.exit.89: ; preds = %while.hdr.87 +while.exit.113: ; preds = %while.hdr.111 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 1 }) ret { ptr, i64 } %callN -if.then.90: ; preds = %while.body.88 +if.then.114: ; preds = %while.body.112 %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 }) + %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 - br label %if.merge.91 + br label %if.merge.115 -if.merge.91: ; preds = %if.then.90, %while.body.88 +if.merge.115: ; preds = %if.then.114, %while.body.112 %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 @@ -2842,7 +3052,7 @@ if.merge.91: ; preds = %if.then.90, %while. %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.164, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -2862,12 +3072,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.87 + br label %while.hdr.111 -fv.default: ; preds = %if.merge.91 +fv.default: ; preds = %if.merge.115 br label %fv.merge -fv.case: ; preds = %if.merge.91 +fv.case: ; preds = %if.merge.115 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2875,19 +3085,19 @@ fv.case: ; preds = %if.merge.91 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.91 +fv.case17: ; preds = %if.merge.115 %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.91 +fv.case20: ; preds = %if.merge.115 %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.91 +fv.case24: ; preds = %if.merge.115 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2901,43 +3111,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.165, i64 9 }, { ptr, i64 } { ptr @str.166, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.168, i64 9 }, { ptr, i64 } { ptr @str.169, 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.92 + br label %while.hdr.116 -while.hdr.92: ; preds = %fv.merge, %entry +while.hdr.116: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.93, label %while.exit.94 + br i1 %icmp, label %while.body.117, label %while.exit.118 -while.body.93: ; preds = %while.hdr.92 +while.body.117: ; preds = %while.hdr.116 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.95, label %if.merge.96 + br i1 %icmpN, label %if.then.119, label %if.merge.120 -while.exit.94: ; preds = %while.hdr.92 +while.exit.118: ; preds = %while.hdr.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 1 }) ret { ptr, i64 } %callN -if.then.95: ; preds = %while.body.93 +if.then.119: ; preds = %while.body.117 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 2 }) + %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 - br label %if.merge.96 + br label %if.merge.120 -if.merge.96: ; preds = %if.then.95, %while.body.93 +if.merge.120: ; preds = %if.then.119, %while.body.117 %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.172, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.175, 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.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, 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 @@ -2956,24 +3166,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.92 + br label %while.hdr.116 -fv.default: ; preds = %if.merge.96 +fv.default: ; preds = %if.merge.120 br label %fv.merge -fv.case: ; preds = %if.merge.96 +fv.case: ; preds = %if.merge.120 %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.96 +fv.case17: ; preds = %if.merge.120 %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.96 +fv.case21: ; preds = %if.merge.120 %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 @@ -2985,43 +3195,43 @@ 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.174, i64 10 }, { ptr, i64 } { ptr @str.175, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.177, i64 10 }, { ptr, i64 } { ptr @str.178, 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.97 + br label %while.hdr.121 -while.hdr.97: ; preds = %if.merge.101, %entry +while.hdr.121: ; preds = %if.merge.125, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.98, label %while.exit.99 + br i1 %icmp, label %while.body.122, label %while.exit.123 -while.body.98: ; preds = %while.hdr.97 +while.body.122: ; preds = %while.hdr.121 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.100, label %if.merge.101 + br i1 %icmpN, label %if.then.124, label %if.merge.125 -while.exit.99: ; preds = %while.hdr.97 +while.exit.123: ; preds = %while.hdr.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) ret { ptr, i64 } %callN -if.then.100: ; preds = %while.body.98 +if.then.124: ; preds = %while.body.122 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) + %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 - br label %if.merge.101 + br label %if.merge.125 -if.merge.101: ; preds = %if.then.100, %while.body.98 +if.merge.125: ; preds = %if.then.124, %while.body.122 %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.178, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.181, 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.179, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -3032,7 +3242,7 @@ if.merge.101: ; preds = %if.then.100, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.97 + br label %while.hdr.121 } ; Function Attrs: nounwind @@ -3040,43 +3250,43 @@ 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.180, i64 3 }, { ptr, i64 } { ptr @str.181, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.183, i64 3 }, { ptr, i64 } { ptr @str.184, 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.102 + br label %while.hdr.126 -while.hdr.102: ; preds = %fv.merge, %entry +while.hdr.126: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.103, label %while.exit.104 + br i1 %icmp, label %while.body.127, label %while.exit.128 -while.body.103: ; preds = %while.hdr.102 +while.body.127: ; preds = %while.hdr.126 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.105, label %if.merge.106 + br i1 %icmpN, label %if.then.129, label %if.merge.130 -while.exit.104: ; preds = %while.hdr.102 +while.exit.128: ; preds = %while.hdr.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) ret { ptr, i64 } %callN -if.then.105: ; preds = %while.body.103 +if.then.129: ; preds = %while.body.127 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.106 + br label %if.merge.130 -if.merge.106: ; preds = %if.then.105, %while.body.103 +if.merge.130: ; preds = %if.then.129, %while.body.127 %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.185, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 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.186, i64 2 }) + %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 { i64 }, ptr %alloca, align 8 @@ -3093,12 +3303,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.102 + br label %while.hdr.126 -fv.default: ; preds = %if.merge.106 +fv.default: ; preds = %if.merge.130 br label %fv.merge -fv.case: ; preds = %if.merge.106 +fv.case: ; preds = %if.merge.130 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -3109,43 +3319,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.187, i64 10 }, { ptr, i64 } { ptr @str.188, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 10 }, { 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.107 + br label %while.hdr.131 -while.hdr.107: ; preds = %fv.merge, %entry +while.hdr.131: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.108, label %while.exit.109 + br i1 %icmp, label %while.body.132, label %while.exit.133 -while.body.108: ; preds = %while.hdr.107 +while.body.132: ; preds = %while.hdr.131 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.110, label %if.merge.111 + br i1 %icmpN, label %if.then.134, label %if.merge.135 -while.exit.109: ; preds = %while.hdr.107 +while.exit.133: ; preds = %while.hdr.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %callN -if.then.110: ; preds = %while.body.108 +if.then.134: ; preds = %while.body.132 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + %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.111 + br label %if.merge.135 -if.merge.111: ; preds = %if.then.110, %while.body.108 +if.merge.135: ; preds = %if.then.134, %while.body.132 %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.193, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.196, 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.194, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, 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 @@ -3163,18 +3373,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.107 + br label %while.hdr.131 -fv.default: ; preds = %if.merge.111 +fv.default: ; preds = %if.merge.135 br label %fv.merge -fv.case: ; preds = %if.merge.111 +fv.case: ; preds = %if.merge.135 %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.111 +fv.case17: ; preds = %if.merge.135 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -3185,43 +3395,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.195, i64 5 }, { ptr, i64 } { ptr @str.196, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 5 }, { ptr, i64 } { ptr @str.199, 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.112 + br label %while.hdr.136 -while.hdr.112: ; preds = %fv.merge, %entry +while.hdr.136: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.113, label %while.exit.114 + br i1 %icmp, label %while.body.137, label %while.exit.138 -while.body.113: ; preds = %while.hdr.112 +while.body.137: ; preds = %while.hdr.136 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.115, label %if.merge.116 + br i1 %icmpN, label %if.then.139, label %if.merge.140 -while.exit.114: ; preds = %while.hdr.112 +while.exit.138: ; preds = %while.hdr.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.200, i64 1 }) ret { ptr, i64 } %callN -if.then.115: ; preds = %while.body.113 +if.then.139: ; preds = %while.body.137 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.116 + br label %if.merge.140 -if.merge.116: ; preds = %if.then.115, %while.body.113 +if.merge.140: ; preds = %if.then.139, %while.body.137 %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.202, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.205, 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.203, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.206, 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 @@ -3240,23 +3450,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.112 + br label %while.hdr.136 -fv.default: ; preds = %if.merge.116 +fv.default: ; preds = %if.merge.140 br label %fv.merge -fv.case: ; preds = %if.merge.116 +fv.case: ; preds = %if.merge.140 %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.116 +fv.case17: ; preds = %if.merge.140 %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.116 +fv.case20: ; preds = %if.merge.140 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -3270,43 +3480,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.204, i64 8 }, { ptr, i64 } { ptr @str.205, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 8 }, { ptr, i64 } { ptr @str.208, 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 + br label %while.hdr.141 -while.hdr.117: ; preds = %fv.merge, %entry +while.hdr.141: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.118, label %while.exit.119 + br i1 %icmp, label %while.body.142, label %while.exit.143 -while.body.118: ; preds = %while.hdr.117 +while.body.142: ; preds = %while.hdr.141 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.120, label %if.merge.121 + br i1 %icmpN, label %if.then.144, label %if.merge.145 -while.exit.119: ; preds = %while.hdr.117 +while.exit.143: ; preds = %while.hdr.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.206, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 1 }) ret { ptr, i64 } %callN -if.then.120: ; preds = %while.body.118 +if.then.144: ; preds = %while.body.142 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.210, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.121 + br label %if.merge.145 -if.merge.121: ; preds = %if.then.120, %while.body.118 +if.merge.145: ; preds = %if.then.144, %while.body.142 %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.211, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.214, 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.212, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.215, 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 @@ -3325,23 +3535,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.117 + br label %while.hdr.141 -fv.default: ; preds = %if.merge.121 +fv.default: ; preds = %if.merge.145 br label %fv.merge -fv.case: ; preds = %if.merge.121 +fv.case: ; preds = %if.merge.145 %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.121 +fv.case17: ; preds = %if.merge.145 %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.121 +fv.case20: ; preds = %if.merge.145 %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 @@ -3352,43 +3562,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.213, i64 17 }, { ptr, i64 } { ptr @str.214, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 17 }, { ptr, i64 } { ptr @str.217, 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 + br label %while.hdr.146 -while.hdr.122: ; preds = %fv.merge, %entry +while.hdr.146: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.123, label %while.exit.124 + br i1 %icmp, label %while.body.147, label %while.exit.148 -while.body.123: ; preds = %while.hdr.122 +while.body.147: ; preds = %while.hdr.146 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.125, label %if.merge.126 + br i1 %icmpN, label %if.then.149, label %if.merge.150 -while.exit.124: ; preds = %while.hdr.122 +while.exit.148: ; preds = %while.hdr.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.215, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.218, i64 1 }) ret { ptr, i64 } %callN -if.then.125: ; preds = %while.body.123 +if.then.149: ; preds = %while.body.147 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, i64 2 }) + %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 - br label %if.merge.126 + br label %if.merge.150 -if.merge.126: ; preds = %if.then.125, %while.body.123 +if.merge.150: ; preds = %if.then.149, %while.body.147 %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.221, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 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.222, i64 2 }) + %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, ptr, ptr }, i64, i64, i64 }, ptr %alloca, align 8 @@ -3408,12 +3618,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.122 + br label %while.hdr.146 -fv.default: ; preds = %if.merge.126 +fv.default: ; preds = %if.merge.150 br label %fv.merge -fv.case: ; preds = %if.merge.126 +fv.case: ; preds = %if.merge.150 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3421,17 +3631,17 @@ fv.case: ; preds = %if.merge.126 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.126 +fv.case17: ; preds = %if.merge.150 %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.126 +fv.case20: ; preds = %if.merge.150 %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.126 +fv.case23: ; preds = %if.merge.150 %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 @@ -3442,43 +3652,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.223, i64 7 }, { ptr, i64 } { ptr @str.224, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 7 }, { 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.127 + br label %while.hdr.151 -while.hdr.127: ; preds = %fv.merge, %entry +while.hdr.151: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.128, label %while.exit.129 + br i1 %icmp, label %while.body.152, label %while.exit.153 -while.body.128: ; preds = %while.hdr.127 +while.body.152: ; preds = %while.hdr.151 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.130, label %if.merge.131 + br i1 %icmpN, label %if.then.154, label %if.merge.155 -while.exit.129: ; preds = %while.hdr.127 +while.exit.153: ; preds = %while.hdr.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.225, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 1 }) ret { ptr, i64 } %callN -if.then.130: ; preds = %while.body.128 +if.then.154: ; preds = %while.body.152 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.226, i64 2 }) + %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.131 + br label %if.merge.155 -if.merge.131: ; preds = %if.then.130, %while.body.128 +if.merge.155: ; preds = %if.then.154, %while.body.152 %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.229, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.232, 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.230, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, 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 @@ -3496,12 +3706,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.127 + br label %while.hdr.151 -fv.default: ; preds = %if.merge.131 +fv.default: ; preds = %if.merge.155 br label %fv.merge -fv.case: ; preds = %if.merge.131 +fv.case: ; preds = %if.merge.155 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3509,7 +3719,7 @@ fv.case: ; preds = %if.merge.131 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.131 +fv.case17: ; preds = %if.merge.155 %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 @@ -3521,43 +3731,43 @@ define internal { ptr, i64 } @struct_to_string__Mat4(ptr %0, { [16 x float] } %1 entry: %alloca = alloca { [16 x float] }, align 8 store { [16 x float] } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 4 }, { ptr, i64 } { ptr @str.232, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 4 }, { ptr, i64 } { ptr @str.235, 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 + br label %while.hdr.156 -while.hdr.132: ; preds = %fv.merge, %entry +while.hdr.156: ; 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 + br i1 %icmp, label %while.body.157, label %while.exit.158 -while.body.133: ; preds = %while.hdr.132 +while.body.157: ; preds = %while.hdr.156 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.135, label %if.merge.136 + br i1 %icmpN, label %if.then.159, label %if.merge.160 -while.exit.134: ; preds = %while.hdr.132 +while.exit.158: ; preds = %while.hdr.156 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 1 }) ret { ptr, i64 } %callN -if.then.135: ; preds = %while.body.133 +if.then.159: ; preds = %while.body.157 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.234, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.237, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.136 + br label %if.merge.160 -if.merge.136: ; preds = %if.then.135, %while.body.133 +if.merge.160: ; preds = %if.then.159, %while.body.157 %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.236, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.239, 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.237, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { [16 x float] }, ptr %alloca, align 4 @@ -3574,17 +3784,17 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.132 + br label %while.hdr.156 -fv.default: ; preds = %if.merge.136 +fv.default: ; preds = %if.merge.160 br label %fv.merge -fv.case: ; preds = %if.merge.136 +fv.case: ; preds = %if.merge.160 %fv.field = extractvalue { [16 x float] } %loadN, 0 %ba.tmp = alloca [16 x float], align 4 store [16 x float] %fv.field, ptr %ba.tmp, align 4 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val = insertvalue { i64, i64 } { i64 36, i64 undef }, i64 %ba.p2i, 1 + %fv.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge } @@ -3593,43 +3803,43 @@ define internal { ptr, i64 } @struct_to_string__Vec2(ptr %0, { float, float } %1 entry: %alloca = alloca { float, float }, align 8 store { float, float } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 4 }, { ptr, i64 } { ptr @str.239, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 4 }, { ptr, i64 } { ptr @str.242, 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 + br label %while.hdr.161 -while.hdr.137: ; preds = %fv.merge, %entry +while.hdr.161: ; 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 + br i1 %icmp, label %while.body.162, label %while.exit.163 -while.body.138: ; preds = %while.hdr.137 +while.body.162: ; preds = %while.hdr.161 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.140, label %if.merge.141 + br i1 %icmpN, label %if.then.164, label %if.merge.165 -while.exit.139: ; preds = %while.hdr.137 +while.exit.163: ; preds = %while.hdr.161 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.243, i64 1 }) ret { ptr, i64 } %callN -if.then.140: ; preds = %while.body.138 +if.then.164: ; preds = %while.body.162 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.241, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.244, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.141 + br label %if.merge.165 -if.merge.141: ; preds = %if.then.140, %while.body.138 +if.merge.165: ; preds = %if.then.164, %while.body.162 %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.244, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.247, 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.245, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { float, float }, ptr %alloca, align 4 @@ -3647,19 +3857,19 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.137 + br label %while.hdr.161 -fv.default: ; preds = %if.merge.141 +fv.default: ; preds = %if.merge.165 br label %fv.merge -fv.case: ; preds = %if.merge.141 +fv.case: ; preds = %if.merge.165 %fv.field = extractvalue { float, float } %loadN, 0 %fNi32 = bitcast float %fv.field to i32 %zN = zext i32 %fNi32 to i64 %fv.val = insertvalue { i64, i64 } { i64 10, i64 undef }, i64 %zN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.141 +fv.case17: ; preds = %if.merge.165 %fv.field18 = extractvalue { float, float } %loadN, 1 %fNi3219 = bitcast float %fv.field18 to i32 %zN = zext i32 %fNi3219 to i64 @@ -3672,43 +3882,43 @@ define internal { ptr, i64 } @struct_to_string__Vec__3__f32(ptr %0, { <3 x float entry: %alloca = alloca { <3 x float> }, align 16 store { <3 x float> } %1, ptr %alloca, align 16 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 11 }, { ptr, i64 } { ptr @str.247, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 11 }, { ptr, i64 } { ptr @str.250, 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 + br label %while.hdr.166 -while.hdr.142: ; preds = %fv.merge, %entry +while.hdr.166: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.143, label %while.exit.144 + br i1 %icmp, label %while.body.167, label %while.exit.168 -while.body.143: ; preds = %while.hdr.142 +while.body.167: ; preds = %while.hdr.166 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.145, label %if.merge.146 + br i1 %icmpN, label %if.then.169, label %if.merge.170 -while.exit.144: ; preds = %while.hdr.142 +while.exit.168: ; preds = %while.hdr.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 1 }) ret { ptr, i64 } %callN -if.then.145: ; preds = %while.body.143 +if.then.169: ; preds = %while.body.167 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.249, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.252, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.146 + br label %if.merge.170 -if.merge.146: ; preds = %if.then.145, %while.body.143 +if.merge.170: ; preds = %if.then.169, %while.body.167 %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.251, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.254, 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.252, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.255, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { <3 x float> }, ptr %alloca, align 16 @@ -3725,17 +3935,17 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.142 + br label %while.hdr.166 -fv.default: ; preds = %if.merge.146 +fv.default: ; preds = %if.merge.170 br label %fv.merge -fv.case: ; preds = %if.merge.146 +fv.case: ; preds = %if.merge.170 %fv.field = extractvalue { <3 x float> } %loadN, 0 %ba.tmp = alloca <3 x float>, align 16 store <3 x float> %fv.field, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %fv.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge } @@ -3744,43 +3954,43 @@ define internal { ptr, i64 } @struct_to_string__Vec3(ptr %0, { <3 x float> } %1) entry: %alloca = alloca { <3 x float> }, align 16 store { <3 x float> } %1, ptr %alloca, align 16 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 4 }, { ptr, i64 } { ptr @str.254, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 4 }, { ptr, i64 } { ptr @str.257, 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 + br label %while.hdr.171 -while.hdr.147: ; preds = %fv.merge, %entry +while.hdr.171: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.148, label %while.exit.149 + br i1 %icmp, label %while.body.172, label %while.exit.173 -while.body.148: ; preds = %while.hdr.147 +while.body.172: ; preds = %while.hdr.171 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.150, label %if.merge.151 + br i1 %icmpN, label %if.then.174, label %if.merge.175 -while.exit.149: ; preds = %while.hdr.147 +while.exit.173: ; preds = %while.hdr.171 %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 } %loadN, { ptr, i64 } { ptr @str.258, i64 1 }) ret { ptr, i64 } %callN -if.then.150: ; preds = %while.body.148 +if.then.174: ; preds = %while.body.172 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.256, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.259, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.151 + br label %if.merge.175 -if.merge.151: ; preds = %if.then.150, %while.body.148 +if.merge.175: ; preds = %if.then.174, %while.body.172 %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.258, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.261, 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.259, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.262, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { <3 x float> }, ptr %alloca, align 16 @@ -3797,17 +4007,17 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.147 + br label %while.hdr.171 -fv.default: ; preds = %if.merge.151 +fv.default: ; preds = %if.merge.175 br label %fv.merge -fv.case: ; preds = %if.merge.151 +fv.case: ; preds = %if.merge.175 %fv.field = extractvalue { <3 x float> } %loadN, 0 %ba.tmp = alloca <3 x float>, align 16 store <3 x float> %fv.field, ptr %ba.tmp, align 16 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %fv.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge } @@ -3816,43 +4026,43 @@ define internal { ptr, i64 } @struct_to_string__Complex__u32(ptr %0, { i32, i32 entry: %alloca = alloca { i32, i32 }, align 8 store { i32, i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 12 }, { ptr, i64 } { ptr @str.261, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.263, i64 12 }, { ptr, i64 } { ptr @str.264, 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 + br label %while.hdr.176 -while.hdr.152: ; preds = %fv.merge, %entry +while.hdr.176: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.153, label %while.exit.154 + br i1 %icmp, label %while.body.177, label %while.exit.178 -while.body.153: ; preds = %while.hdr.152 +while.body.177: ; preds = %while.hdr.176 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.155, label %if.merge.156 + br i1 %icmpN, label %if.then.179, label %if.merge.180 -while.exit.154: ; preds = %while.hdr.152 +while.exit.178: ; preds = %while.hdr.176 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.262, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.265, i64 1 }) ret { ptr, i64 } %callN -if.then.155: ; preds = %while.body.153 +if.then.179: ; preds = %while.body.177 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.263, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.266, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.156 + br label %if.merge.180 -if.merge.156: ; preds = %if.then.155, %while.body.153 +if.merge.180: ; preds = %if.then.179, %while.body.177 %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.266, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.269, 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.267, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32, i32 }, ptr %alloca, align 4 @@ -3870,18 +4080,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.152 + br label %while.hdr.176 -fv.default: ; preds = %if.merge.156 +fv.default: ; preds = %if.merge.180 br label %fv.merge -fv.case: ; preds = %if.merge.156 +fv.case: ; preds = %if.merge.180 %fv.field = extractvalue { i32, i32 } %loadN, 0 %zN = zext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 8, i64 undef }, i64 %zN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.156 +fv.case17: ; preds = %if.merge.180 %fv.field18 = extractvalue { i32, i32 } %loadN, 1 %zN = zext i32 %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 8, i64 undef }, i64 %zN, 1 @@ -3893,43 +4103,43 @@ define internal { ptr, i64 } @struct_to_string__Foo(ptr %0, { i32, i32 } %1) #0 entry: %alloca = alloca { i32, i32 }, align 8 store { i32, i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 3 }, { ptr, i64 } { ptr @str.269, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 3 }, { ptr, i64 } { ptr @str.272, 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 + br label %while.hdr.181 -while.hdr.157: ; preds = %fv.merge, %entry +while.hdr.181: ; 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 + br i1 %icmp, label %while.body.182, label %while.exit.183 -while.body.158: ; preds = %while.hdr.157 +while.body.182: ; preds = %while.hdr.181 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.160, label %if.merge.161 + br i1 %icmpN, label %if.then.184, label %if.merge.185 -while.exit.159: ; preds = %while.hdr.157 +while.exit.183: ; preds = %while.hdr.181 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.270, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.273, i64 1 }) ret { ptr, i64 } %callN -if.then.160: ; preds = %while.body.158 +if.then.184: ; preds = %while.body.182 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.271, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.274, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.161 + br label %if.merge.185 -if.merge.161: ; preds = %if.then.160, %while.body.158 +if.merge.185: ; preds = %if.then.184, %while.body.182 %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.274, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.277, 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.275, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.278, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32, i32 }, ptr %alloca, align 4 @@ -3947,18 +4157,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.157 + br label %while.hdr.181 -fv.default: ; preds = %if.merge.161 +fv.default: ; preds = %if.merge.185 br label %fv.merge -fv.case: ; preds = %if.merge.161 +fv.case: ; preds = %if.merge.185 %fv.field = extractvalue { i32, i32 } %loadN, 0 %zN = zext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 8, i64 undef }, i64 %zN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.161 +fv.case17: ; preds = %if.merge.185 %fv.field18 = extractvalue { i32, i32 } %loadN, 1 %zN = zext i32 %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 8, i64 undef }, i64 %zN, 1 @@ -3975,9 +4185,9 @@ entry: %allocaN = alloca i64, align 8 store i64 %etag, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 - %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.279, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.282, 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.276, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.279, i64 1 }, { ptr, i64 } %fn.load) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %loadN = load { i64, [4 x i8] }, ptr %alloca, align 8 @@ -3987,16 +4197,16 @@ entry: i64 1, label %fv.case6 ] -if.then.165: ; preds = %fv.merge +if.then.189: ; preds = %fv.merge %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.281, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.284, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, 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.166 + br label %if.merge.190 -if.merge.166: ; preds = %if.then.165, %fv.merge +if.merge.190: ; preds = %if.then.189, %fv.merge %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN @@ -4011,7 +4221,7 @@ fv.merge: ; preds = %fv.default, %fv.cas %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.165, label %if.merge.166 + br i1 %icmp, label %if.then.189, label %if.merge.190 fv.default: ; preds = %entry br label %fv.merge @@ -4042,33 +4252,33 @@ entry: %alloca = alloca <3 x float>, align 16 store <3 x float> %1, ptr %alloca, align 16 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.282, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.285, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.170 + br label %while.hdr.194 -while.hdr.170: ; preds = %if.merge.174, %entry +while.hdr.194: ; preds = %if.merge.198, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.171, label %while.exit.172 + br i1 %icmp, label %while.body.195, label %while.exit.196 -while.body.171: ; preds = %while.hdr.170 +while.body.195: ; preds = %while.hdr.194 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.173, label %if.merge.174 + br i1 %icmpN, label %if.then.197, label %if.merge.198 -while.exit.172: ; preds = %while.hdr.170 +while.exit.196: ; preds = %while.hdr.194 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.283, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.286, i64 1 }) ret { ptr, i64 } %call -if.then.173: ; preds = %while.body.171 +if.then.197: ; preds = %while.body.195 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.284, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.287, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.174 + br label %if.merge.198 -if.merge.174: ; preds = %if.then.173, %while.body.171 +if.merge.198: ; preds = %if.then.197, %while.body.195 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load <3 x float>, ptr %alloca, align 16 %loadN = load i64, ptr %allocaN, align 8 @@ -4083,7 +4293,57 @@ if.merge.174: ; preds = %if.then.173, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.170 + br label %while.hdr.194 +} + +; 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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.288, 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, 4 + 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.289, 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.290, 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 [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.205 } ; Function Attrs: nounwind @@ -4092,33 +4352,33 @@ entry: %alloca = alloca [16 x float], align 4 store [16 x float] %1, ptr %alloca, align 4 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.285, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.291, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.180 + br label %while.hdr.210 -while.hdr.180: ; preds = %if.merge.184, %entry +while.hdr.210: ; preds = %if.merge.214, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 16 - br i1 %icmp, label %while.body.181, label %while.exit.182 + br i1 %icmp, label %while.body.211, label %while.exit.212 -while.body.181: ; preds = %while.hdr.180 +while.body.211: ; preds = %while.hdr.210 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.183, label %if.merge.184 + br i1 %icmpN, label %if.then.213, label %if.merge.214 -while.exit.182: ; preds = %while.hdr.180 +while.exit.212: ; preds = %while.hdr.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.286, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.292, i64 1 }) ret { ptr, i64 } %call -if.then.183: ; preds = %while.body.181 +if.then.213: ; preds = %while.body.211 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.287, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.293, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.184 + br label %if.merge.214 -if.merge.184: ; preds = %if.then.183, %while.body.181 +if.merge.214: ; preds = %if.then.213, %while.body.211 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load [16 x float], ptr %alloca, align 4 %loadN = load i64, ptr %allocaN, align 8 @@ -4135,7 +4395,7 @@ if.merge.184: ; preds = %if.then.183, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.180 + br label %while.hdr.210 } ; Function Attrs: nounwind @@ -4144,33 +4404,33 @@ entry: %alloca = alloca [1 x { 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.288, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.294, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.185 + br label %while.hdr.215 -while.hdr.185: ; preds = %if.merge.189, %entry +while.hdr.215: ; preds = %if.merge.219, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.186, label %while.exit.187 + br i1 %icmp, label %while.body.216, label %while.exit.217 -while.body.186: ; preds = %while.hdr.185 +while.body.216: ; preds = %while.hdr.215 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.188, label %if.merge.189 + br i1 %icmpN, label %if.then.218, label %if.merge.219 -while.exit.187: ; preds = %while.hdr.185 +while.exit.217: ; preds = %while.hdr.215 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.289, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.295, i64 1 }) ret { ptr, i64 } %call -if.then.188: ; preds = %while.body.186 +if.then.218: ; preds = %while.body.216 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.290, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.296, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.189 + br label %if.merge.219 -if.merge.189: ; preds = %if.then.188, %while.body.186 +if.merge.219: ; preds = %if.then.218, %while.body.216 %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 @@ -4188,7 +4448,7 @@ if.merge.189: ; preds = %if.then.188, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.185 + br label %while.hdr.215 } ; Function Attrs: nounwind @@ -4197,33 +4457,33 @@ entry: %alloca = alloca [5 x float], align 4 store [5 x float] %1, ptr %alloca, align 4 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.291, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.297, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.190 + br label %while.hdr.220 -while.hdr.190: ; preds = %if.merge.194, %entry +while.hdr.220: ; preds = %if.merge.224, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 5 - br i1 %icmp, label %while.body.191, label %while.exit.192 + br i1 %icmp, label %while.body.221, label %while.exit.222 -while.body.191: ; preds = %while.hdr.190 +while.body.221: ; preds = %while.hdr.220 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.193, label %if.merge.194 + br i1 %icmpN, label %if.then.223, label %if.merge.224 -while.exit.192: ; preds = %while.hdr.190 +while.exit.222: ; preds = %while.hdr.220 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.292, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.298, i64 1 }) ret { ptr, i64 } %call -if.then.193: ; preds = %while.body.191 +if.then.223: ; preds = %while.body.221 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.293, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.299, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.194 + br label %if.merge.224 -if.merge.194: ; preds = %if.then.193, %while.body.191 +if.merge.224: ; preds = %if.then.223, %while.body.221 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load [5 x float], ptr %alloca, align 4 %loadN = load i64, ptr %allocaN, align 8 @@ -4240,7 +4500,7 @@ if.merge.194: ; preds = %if.then.193, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.190 + br label %while.hdr.220 } ; Function Attrs: nounwind @@ -4249,35 +4509,35 @@ 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.294, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.300, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.199 + br label %while.hdr.229 -while.hdr.199: ; preds = %if.merge.203, %entry +while.hdr.229: ; preds = %if.merge.233, %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.200, label %while.exit.201 + br i1 %icmp, label %while.body.230, label %while.exit.231 -while.body.200: ; preds = %while.hdr.199 +while.body.230: ; preds = %while.hdr.229 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.202, label %if.merge.203 + br i1 %icmpN, label %if.then.232, label %if.merge.233 -while.exit.201: ; preds = %while.hdr.199 +while.exit.231: ; preds = %while.hdr.229 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.295, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.301, i64 1 }) ret { ptr, i64 } %call -if.then.202: ; preds = %while.body.200 +if.then.232: ; preds = %while.body.230 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.296, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.302, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.203 + br label %if.merge.233 -if.merge.203: ; preds = %if.then.202, %while.body.200 +if.merge.233: ; preds = %if.then.232, %while.body.230 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -4294,7 +4554,7 @@ if.merge.203: ; preds = %if.then.202, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.199 + br label %while.hdr.229 } ; Function Attrs: nounwind @@ -4303,35 +4563,35 @@ 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.297, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.303, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.204 + br label %while.hdr.234 -while.hdr.204: ; preds = %if.merge.208, %entry +while.hdr.234: ; preds = %if.merge.238, %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.205, label %while.exit.206 + br i1 %icmp, label %while.body.235, label %while.exit.236 -while.body.205: ; preds = %while.hdr.204 +while.body.235: ; preds = %while.hdr.234 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.207, label %if.merge.208 + br i1 %icmpN, label %if.then.237, label %if.merge.238 -while.exit.206: ; preds = %while.hdr.204 +while.exit.236: ; preds = %while.hdr.234 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.298, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.304, i64 1 }) ret { ptr, i64 } %call -if.then.207: ; preds = %while.body.205 +if.then.237: ; preds = %while.body.235 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.299, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.305, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.208 + br label %if.merge.238 -if.merge.208: ; preds = %if.then.207, %while.body.205 +if.merge.238: ; preds = %if.then.237, %while.body.235 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -4348,95 +4608,11 @@ if.merge.208: ; preds = %if.then.207, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.204 + br label %while.hdr.234 } ; 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.235, label %if.else.236 - -if.then.235: ; preds = %entry - br label %if.merge.237 - -if.else.236: ; 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.302, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.237 - -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.300, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] - 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.259, label %if.else.260 - -if.then.259: ; preds = %entry - br label %if.merge.261 - -if.else.260: ; 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.305, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.261 - -if.merge.261: ; preds = %if.else.260, %if.then.259 - %bp = phi { ptr, i64 } [ { ptr @str.303, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] - 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.262, label %if.else.263 - -if.then.262: ; preds = %entry - br label %if.merge.264 - -if.else.263: ; 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.308, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.264 - -if.merge.264: ; preds = %if.else.263, %if.then.262 - %bp = phi { ptr, i64 } [ { ptr @str.306, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] - 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 @@ -4454,12 +4630,96 @@ if.then.265: ; preds = %entry if.else.266: ; 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.311, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 5 }, { ptr, i64 } %callN) br label %if.merge.267 if.merge.267: ; preds = %if.else.266, %if.then.265 - %bp = phi { ptr, i64 } [ { ptr @str.309, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] + %bp = phi { ptr, i64 } [ { ptr @str.306, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] + 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.281, label %if.else.282 + +if.then.281: ; preds = %entry + br label %if.merge.283 + +if.else.282: ; 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.311, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.283 + +if.merge.283: ; preds = %if.else.282, %if.then.281 + %bp = phi { ptr, i64 } [ { ptr @str.309, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] + 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.284, label %if.else.285 + +if.then.284: ; preds = %entry + br label %if.merge.286 + +if.else.285: ; 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.314, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.313, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.286 + +if.merge.286: ; preds = %if.else.285, %if.then.284 + %bp = phi { ptr, i64 } [ { ptr @str.312, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] + 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.287, label %if.else.288 + +if.then.287: ; preds = %entry + br label %if.merge.289 + +if.else.288: ; 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.317, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.316, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.289 + +if.merge.289: ; preds = %if.else.288, %if.then.287 + %bp = phi { ptr, i64 } [ { ptr @str.315, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] ret { ptr, i64 } %bp } @@ -4474,20 +4734,20 @@ entry: 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.268, label %if.else.269 + br i1 %icmp, label %if.then.290, label %if.else.291 -if.then.268: ; preds = %entry - br label %if.merge.270 +if.then.290: ; preds = %entry + br label %if.merge.292 -if.else.269: ; preds = %entry +if.else.291: ; 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.314, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.313, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.270 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.320, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.319, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.292 -if.merge.270: ; preds = %if.else.269, %if.then.268 - %bp = phi { ptr, i64 } [ { ptr @str.312, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] +if.merge.292: ; preds = %if.else.291, %if.then.290 + %bp = phi { ptr, i64 } [ { ptr @str.318, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] ret { ptr, i64 } %bp } @@ -4501,20 +4761,20 @@ entry: 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.271, label %if.else.272 + br i1 %icmp, label %if.then.293, label %if.else.294 -if.then.271: ; preds = %entry - br label %if.merge.273 +if.then.293: ; preds = %entry + br label %if.merge.295 -if.else.272: ; preds = %entry +if.else.294: ; 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.317, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.316, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.273 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.323, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.322, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.295 -if.merge.273: ; preds = %if.else.272, %if.then.271 - %bp = phi { ptr, i64 } [ { ptr @str.315, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] +if.merge.295: ; preds = %if.else.294, %if.then.293 + %bp = phi { ptr, i64 } [ { ptr @str.321, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] ret { ptr, i64 } %bp } @@ -4529,20 +4789,20 @@ entry: 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.274, label %if.else.275 + br i1 %icmp, label %if.then.296, label %if.else.297 -if.then.274: ; preds = %entry - br label %if.merge.276 +if.then.296: ; preds = %entry + br label %if.merge.298 -if.else.275: ; preds = %entry +if.else.297: ; 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.320, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.319, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.276 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.326, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.325, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.298 -if.merge.276: ; preds = %if.else.275, %if.then.274 - %bp = phi { ptr, i64 } [ { ptr @str.318, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] +if.merge.298: ; preds = %if.else.297, %if.then.296 + %bp = phi { ptr, i64 } [ { ptr @str.324, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] ret { ptr, i64 } %bp } @@ -4557,20 +4817,20 @@ entry: 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.277, label %if.else.278 + br i1 %icmp, label %if.then.299, label %if.else.300 -if.then.277: ; preds = %entry - br label %if.merge.279 +if.then.299: ; preds = %entry + br label %if.merge.301 -if.else.278: ; preds = %entry +if.else.300: ; 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.323, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.322, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.279 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.329, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.328, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.301 -if.merge.279: ; preds = %if.else.278, %if.then.277 - %bp = phi { ptr, i64 } [ { ptr @str.321, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] +if.merge.301: ; preds = %if.else.300, %if.then.299 + %bp = phi { ptr, i64 } [ { ptr @str.327, i64 4 }, %if.then.299 ], [ %callN, %if.else.300 ] ret { ptr, i64 } %bp } @@ -4585,20 +4845,20 @@ entry: 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.280, label %if.else.281 + br i1 %icmp, label %if.then.302, label %if.else.303 -if.then.280: ; preds = %entry - br label %if.merge.282 +if.then.302: ; preds = %entry + br label %if.merge.304 -if.else.281: ; preds = %entry +if.else.303: ; 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.326, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.325, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.282 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.332, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.331, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.304 -if.merge.282: ; preds = %if.else.281, %if.then.280 - %bp = phi { ptr, i64 } [ { ptr @str.324, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] +if.merge.304: ; preds = %if.else.303, %if.then.302 + %bp = phi { ptr, i64 } [ { ptr @str.330, i64 4 }, %if.then.302 ], [ %callN, %if.else.303 ] ret { ptr, i64 } %bp } @@ -4613,20 +4873,20 @@ entry: 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.283, label %if.else.284 + br i1 %icmp, label %if.then.305, label %if.else.306 -if.then.283: ; preds = %entry - br label %if.merge.285 +if.then.305: ; preds = %entry + br label %if.merge.307 -if.else.284: ; preds = %entry +if.else.306: ; 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.329, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.328, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.285 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.335, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.334, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.307 -if.merge.285: ; preds = %if.else.284, %if.then.283 - %bp = phi { ptr, i64 } [ { ptr @str.327, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] +if.merge.307: ; preds = %if.else.306, %if.then.305 + %bp = phi { ptr, i64 } [ { ptr @str.333, i64 4 }, %if.then.305 ], [ %callN, %if.else.306 ] ret { ptr, i64 } %bp } @@ -4641,20 +4901,20 @@ entry: 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.286, label %if.else.287 + br i1 %icmp, label %if.then.308, label %if.else.309 -if.then.286: ; preds = %entry - br label %if.merge.288 +if.then.308: ; preds = %entry + br label %if.merge.310 -if.else.287: ; preds = %entry +if.else.309: ; 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.332, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.331, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.288 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.338, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.337, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.310 -if.merge.288: ; preds = %if.else.287, %if.then.286 - %bp = phi { ptr, i64 } [ { ptr @str.330, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] +if.merge.310: ; preds = %if.else.309, %if.then.308 + %bp = phi { ptr, i64 } [ { ptr @str.336, i64 4 }, %if.then.308 ], [ %callN, %if.else.309 ] ret { ptr, i64 } %bp } @@ -4669,20 +4929,20 @@ entry: 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.289, label %if.else.290 + br i1 %icmp, label %if.then.311, label %if.else.312 -if.then.289: ; preds = %entry - br label %if.merge.291 +if.then.311: ; preds = %entry + br label %if.merge.313 -if.else.290: ; preds = %entry +if.else.312: ; 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.335, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.334, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.291 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.341, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.340, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.313 -if.merge.291: ; preds = %if.else.290, %if.then.289 - %bp = phi { ptr, i64 } [ { ptr @str.333, i64 4 }, %if.then.289 ], [ %callN, %if.else.290 ] +if.merge.313: ; preds = %if.else.312, %if.then.311 + %bp = phi { ptr, i64 } [ { ptr @str.339, i64 4 }, %if.then.311 ], [ %callN, %if.else.312 ] ret { ptr, i64 } %bp } @@ -4697,20 +4957,20 @@ entry: 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.292, label %if.else.293 + br i1 %icmp, label %if.then.314, label %if.else.315 -if.then.292: ; preds = %entry - br label %if.merge.294 +if.then.314: ; preds = %entry + br label %if.merge.316 -if.else.293: ; preds = %entry +if.else.315: ; 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.338, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.337, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.294 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.344, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.343, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.316 -if.merge.294: ; preds = %if.else.293, %if.then.292 - %bp = phi { ptr, i64 } [ { ptr @str.336, i64 4 }, %if.then.292 ], [ %callN, %if.else.293 ] +if.merge.316: ; preds = %if.else.315, %if.then.314 + %bp = phi { ptr, i64 } [ { ptr @str.342, i64 4 }, %if.then.314 ], [ %callN, %if.else.315 ] ret { ptr, i64 } %bp } @@ -4725,20 +4985,20 @@ entry: 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.295, label %if.else.296 + br i1 %icmp, label %if.then.317, label %if.else.318 -if.then.295: ; preds = %entry - br label %if.merge.297 +if.then.317: ; preds = %entry + br label %if.merge.319 -if.else.296: ; preds = %entry +if.else.318: ; 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.341, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.340, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.297 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.347, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.346, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.319 -if.merge.297: ; preds = %if.else.296, %if.then.295 - %bp = phi { ptr, i64 } [ { ptr @str.339, i64 4 }, %if.then.295 ], [ %callN, %if.else.296 ] +if.merge.319: ; preds = %if.else.318, %if.then.317 + %bp = phi { ptr, i64 } [ { ptr @str.345, i64 4 }, %if.then.317 ], [ %callN, %if.else.318 ] ret { ptr, i64 } %bp } @@ -4753,20 +5013,20 @@ entry: 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.298, label %if.else.299 + br i1 %icmp, label %if.then.320, label %if.else.321 -if.then.298: ; preds = %entry - br label %if.merge.300 +if.then.320: ; preds = %entry + br label %if.merge.322 -if.else.299: ; preds = %entry +if.else.321: ; 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.344, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.343, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.300 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.350, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.349, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.322 -if.merge.300: ; preds = %if.else.299, %if.then.298 - %bp = phi { ptr, i64 } [ { ptr @str.342, i64 4 }, %if.then.298 ], [ %callN, %if.else.299 ] +if.merge.322: ; preds = %if.else.321, %if.then.320 + %bp = phi { ptr, i64 } [ { ptr @str.348, i64 4 }, %if.then.320 ], [ %callN, %if.else.321 ] ret { ptr, i64 } %bp } @@ -4781,20 +5041,20 @@ entry: 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.301, label %if.else.302 + br i1 %icmp, label %if.then.323, label %if.else.324 -if.then.301: ; preds = %entry - br label %if.merge.303 +if.then.323: ; preds = %entry + br label %if.merge.325 -if.else.302: ; preds = %entry +if.else.324: ; 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.347, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.346, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.303 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.353, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.352, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.325 -if.merge.303: ; preds = %if.else.302, %if.then.301 - %bp = phi { ptr, i64 } [ { ptr @str.345, i64 4 }, %if.then.301 ], [ %callN, %if.else.302 ] +if.merge.325: ; preds = %if.else.324, %if.then.323 + %bp = phi { ptr, i64 } [ { ptr @str.351, i64 4 }, %if.then.323 ], [ %callN, %if.else.324 ] ret { ptr, i64 } %bp } @@ -4809,20 +5069,20 @@ entry: 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.304, label %if.else.305 + br i1 %icmp, label %if.then.326, label %if.else.327 -if.then.304: ; preds = %entry - br label %if.merge.306 +if.then.326: ; preds = %entry + br label %if.merge.328 -if.else.305: ; preds = %entry +if.else.327: ; 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.350, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.349, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.306 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.356, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.355, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.328 -if.merge.306: ; preds = %if.else.305, %if.then.304 - %bp = phi { ptr, i64 } [ { ptr @str.348, i64 4 }, %if.then.304 ], [ %callN, %if.else.305 ] +if.merge.328: ; preds = %if.else.327, %if.then.326 + %bp = phi { ptr, i64 } [ { ptr @str.354, i64 4 }, %if.then.326 ], [ %callN, %if.else.327 ] ret { ptr, i64 } %bp } @@ -4837,20 +5097,20 @@ entry: 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.307, label %if.else.308 + br i1 %icmp, label %if.then.329, label %if.else.330 -if.then.307: ; preds = %entry - br label %if.merge.309 +if.then.329: ; preds = %entry + br label %if.merge.331 -if.else.308: ; preds = %entry +if.else.330: ; 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.353, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.352, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.309 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.359, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.358, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.331 -if.merge.309: ; preds = %if.else.308, %if.then.307 - %bp = phi { ptr, i64 } [ { ptr @str.351, i64 4 }, %if.then.307 ], [ %callN, %if.else.308 ] +if.merge.331: ; preds = %if.else.330, %if.then.329 + %bp = phi { ptr, i64 } [ { ptr @str.357, i64 4 }, %if.then.329 ], [ %callN, %if.else.330 ] ret { ptr, i64 } %bp } @@ -4865,20 +5125,20 @@ entry: 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.310, label %if.else.311 + br i1 %icmp, label %if.then.332, label %if.else.333 -if.then.310: ; preds = %entry - br label %if.merge.312 +if.then.332: ; preds = %entry + br label %if.merge.334 -if.else.311: ; preds = %entry +if.else.333: ; 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.356, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.355, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.312 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.362, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.361, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.334 -if.merge.312: ; preds = %if.else.311, %if.then.310 - %bp = phi { ptr, i64 } [ { ptr @str.354, i64 4 }, %if.then.310 ], [ %callN, %if.else.311 ] +if.merge.334: ; preds = %if.else.333, %if.then.332 + %bp = phi { ptr, i64 } [ { ptr @str.360, i64 4 }, %if.then.332 ], [ %callN, %if.else.333 ] ret { ptr, i64 } %bp } @@ -4893,20 +5153,20 @@ entry: 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.313, label %if.else.314 + br i1 %icmp, label %if.then.335, label %if.else.336 -if.then.313: ; preds = %entry - br label %if.merge.315 +if.then.335: ; preds = %entry + br label %if.merge.337 -if.else.314: ; preds = %entry +if.else.336: ; 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.359, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.358, i64 14 }, { ptr, i64 } %callN) - br label %if.merge.315 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.365, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.364, i64 14 }, { ptr, i64 } %callN) + br label %if.merge.337 -if.merge.315: ; preds = %if.else.314, %if.then.313 - %bp = phi { ptr, i64 } [ { ptr @str.357, i64 4 }, %if.then.313 ], [ %callN, %if.else.314 ] +if.merge.337: ; preds = %if.else.336, %if.then.335 + %bp = phi { ptr, i64 } [ { ptr @str.363, i64 4 }, %if.then.335 ], [ %callN, %if.else.336 ] ret { ptr, i64 } %bp } @@ -4921,20 +5181,20 @@ entry: 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.316, label %if.else.317 + br i1 %icmp, label %if.then.338, label %if.else.339 -if.then.316: ; preds = %entry - br label %if.merge.318 +if.then.338: ; preds = %entry + br label %if.merge.340 -if.else.317: ; preds = %entry +if.else.339: ; 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.362, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.361, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.318 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.368, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.367, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.340 -if.merge.318: ; preds = %if.else.317, %if.then.316 - %bp = phi { ptr, i64 } [ { ptr @str.360, i64 4 }, %if.then.316 ], [ %callN, %if.else.317 ] +if.merge.340: ; preds = %if.else.339, %if.then.338 + %bp = phi { ptr, i64 } [ { ptr @str.366, i64 4 }, %if.then.338 ], [ %callN, %if.else.339 ] ret { ptr, i64 } %bp } @@ -4949,20 +5209,20 @@ entry: 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.319, label %if.else.320 + br i1 %icmp, label %if.then.341, label %if.else.342 -if.then.319: ; preds = %entry - br label %if.merge.321 +if.then.341: ; preds = %entry + br label %if.merge.343 -if.else.320: ; preds = %entry +if.else.342: ; 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.365, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.364, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.321 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.371, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.370, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.343 -if.merge.321: ; preds = %if.else.320, %if.then.319 - %bp = phi { ptr, i64 } [ { ptr @str.363, i64 4 }, %if.then.319 ], [ %callN, %if.else.320 ] +if.merge.343: ; preds = %if.else.342, %if.then.341 + %bp = phi { ptr, i64 } [ { ptr @str.369, i64 4 }, %if.then.341 ], [ %callN, %if.else.342 ] ret { ptr, i64 } %bp } @@ -4977,20 +5237,20 @@ entry: 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.322, label %if.else.323 + br i1 %icmp, label %if.then.344, label %if.else.345 -if.then.322: ; preds = %entry - br label %if.merge.324 +if.then.344: ; preds = %entry + br label %if.merge.346 -if.else.323: ; preds = %entry +if.else.345: ; 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.368, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.367, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.324 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.374, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.373, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.346 -if.merge.324: ; preds = %if.else.323, %if.then.322 - %bp = phi { ptr, i64 } [ { ptr @str.366, i64 4 }, %if.then.322 ], [ %callN, %if.else.323 ] +if.merge.346: ; preds = %if.else.345, %if.then.344 + %bp = phi { ptr, i64 } [ { ptr @str.372, i64 4 }, %if.then.344 ], [ %callN, %if.else.345 ] ret { ptr, i64 } %bp } @@ -5005,25 +5265,23 @@ entry: 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.325, label %if.else.326 + br i1 %icmp, label %if.then.347, label %if.else.348 -if.then.325: ; preds = %entry - br label %if.merge.327 +if.then.347: ; preds = %entry + br label %if.merge.349 -if.else.326: ; preds = %entry +if.else.348: ; 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.371, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.370, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.327 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.377, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.376, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.349 -if.merge.327: ; preds = %if.else.326, %if.then.325 - %bp = phi { ptr, i64 } [ { ptr @str.369, i64 4 }, %if.then.325 ], [ %callN, %if.else.326 ] +if.merge.349: ; preds = %if.else.348, %if.then.347 + %bp = phi { ptr, i64 } [ { ptr @str.375, i64 4 }, %if.then.347 ], [ %callN, %if.else.348 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) declare double @sqrt(double) - - diff --git a/examples/expected/0301-closures-fn-pointers.ir b/examples/expected/0301-closures-fn-pointers.ir index 7e751a4..be6aa22 100644 --- a/examples/expected/0301-closures-fn-pointers.ir +++ b/examples/expected/0301-closures-fn-pointers.ir @@ -1,254 +1,261 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [74 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [18 x i8] c"(s32, s32) -> s32\00" -@tn.str.42 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.43 = private constant [5 x i8] c"*s64\00" -@tn.str.44 = private constant [7 x i8] c"**void\00" -@tn.str.45 = private constant [19 x i8] c"*(s32, s32) -> s32\00" -@tn.str.46 = private constant [5 x i8] c"*s32\00" -@tn.str.47 = private constant [8 x i8] c"*string\00" -@tn.str.48 = private constant [6 x i8] c"[]Any\00" -@tn.str.49 = private constant [5 x i8] c"*Any\00" -@tn.str.50 = private constant [7 x i8] c"[1]Any\00" -@tn.str.51 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.52 = private constant [7 x i8] c"*[]Any\00" -@tn.str.53 = private constant [4 x i8] c"*u8\00" -@tn.str.54 = private constant [6 x i8] c"*bool\00" -@tn.str.55 = private constant [5 x i8] c"*f64\00" -@tn.str.56 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.57 = private constant [11 x i8] c"*Allocator\00" -@tn.str.58 = private constant [9 x i8] c"*Context\00" -@tn.str.59 = private constant [10 x i8] c"*[]string\00" -@tn.str.60 = private constant [6 x i8] c"**GPA\00" -@tn.str.61 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.62 = private constant [8 x i8] c"**Arena\00" -@tn.str.63 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.64 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.65 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.66 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.67 = private constant [6 x i8] c"**s64\00" -@tn.str.68 = private constant [8 x i8] c"***void\00" -@tn.str.69 = private constant [20 x i8] c"**(s32, s32) -> s32\00" -@tn.str.70 = private constant [6 x i8] c"**s32\00" -@tn.str.71 = private constant [9 x i8] c"**string\00" -@tn.str.72 = private constant [6 x i8] c"**Any\00" -@tn.str.73 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.74 = private constant [8 x i8] c"**[]Any\00" -@tn.str.75 = private constant [5 x i8] c"**u8\00" -@tn.str.76 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [72 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 17 }, { ptr, i64 } { ptr @tn.str.42, i64 12 }, { ptr, i64 } { ptr @tn.str.43, i64 4 }, { ptr, i64 } { ptr @tn.str.44, i64 6 }, { ptr, i64 } { ptr @tn.str.45, i64 18 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 7 }, { ptr, i64 } { ptr @tn.str.48, i64 5 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 3 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 16 }, { ptr, i64 } { ptr @tn.str.57, i64 10 }, { ptr, i64 } { ptr @tn.str.58, i64 8 }, { ptr, i64 } { ptr @tn.str.59, i64 9 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 12 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 6 }, { ptr, i64 } { ptr @tn.str.64, i64 10 }, { ptr, i64 } { ptr @tn.str.65, i64 19 }, { ptr, i64 } { ptr @tn.str.66, i64 13 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 19 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 8 }, { ptr, i64 } { ptr @tn.str.74, i64 7 }, { ptr, i64 } { ptr @tn.str.75, i64 4 }, { ptr, i64 } { ptr @tn.str.76, i64 6 }] -@str.77 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [18 x i8] c"(s32, s32) -> s32\00" +@tn.str.44 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.45 = private constant [5 x i8] c"*s64\00" +@tn.str.46 = private constant [7 x i8] c"**void\00" +@tn.str.47 = private constant [19 x i8] c"*(s32, s32) -> s32\00" +@tn.str.48 = private constant [5 x i8] c"*s32\00" +@tn.str.49 = private constant [8 x i8] c"*string\00" +@tn.str.50 = private constant [6 x i8] c"[]Any\00" +@tn.str.51 = private constant [5 x i8] c"*Any\00" +@tn.str.52 = private constant [7 x i8] c"[1]Any\00" +@tn.str.53 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.54 = private constant [7 x i8] c"*[]Any\00" +@tn.str.55 = private constant [4 x i8] c"*u8\00" +@tn.str.56 = private constant [6 x i8] c"*bool\00" +@tn.str.57 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.58 = private constant [5 x i8] c"*f64\00" +@tn.str.59 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.60 = private constant [11 x i8] c"*Allocator\00" +@tn.str.61 = private constant [9 x i8] c"*Context\00" +@tn.str.62 = private constant [10 x i8] c"*[]string\00" +@tn.str.63 = private constant [6 x i8] c"**GPA\00" +@tn.str.64 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.65 = private constant [8 x i8] c"**Arena\00" +@tn.str.66 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.67 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.68 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.69 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.70 = private constant [6 x i8] c"**s64\00" +@tn.str.71 = private constant [8 x i8] c"***void\00" +@tn.str.72 = private constant [20 x i8] c"**(s32, s32) -> s32\00" +@tn.str.73 = private constant [6 x i8] c"**s32\00" +@tn.str.74 = private constant [9 x i8] c"**string\00" +@tn.str.75 = private constant [6 x i8] c"**Any\00" +@tn.str.76 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.77 = private constant [8 x i8] c"**[]Any\00" +@tn.str.78 = private constant [5 x i8] c"**u8\00" +@tn.str.79 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [74 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 17 }, { ptr, i64 } { ptr @tn.str.44, i64 12 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 18 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 5 }, { ptr, i64 } { ptr @tn.str.51, i64 4 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 3 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 7 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 16 }, { ptr, i64 } { ptr @tn.str.60, i64 10 }, { ptr, i64 } { ptr @tn.str.61, i64 8 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 5 }, { ptr, i64 } { ptr @tn.str.64, i64 12 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 10 }, { ptr, i64 } { ptr @tn.str.68, i64 19 }, { ptr, i64 } { ptr @tn.str.69, i64 13 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 19 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 8 }, { ptr, i64 } { ptr @tn.str.77, i64 7 }, { ptr, i64 } { ptr @tn.str.78, i64 4 }, { ptr, i64 } { ptr @tn.str.79, i64 6 }] @str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.81 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.82 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.83 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.84 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.85 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.86 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.84 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.85 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.86 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.87 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.88 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.89 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.93 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.94 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.95 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.96 = private unnamed_addr constant [14 x i8] c"fp(3,4) = {}\0A\00", align 1 -@str.97 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.98 = private unnamed_addr constant [14 x i8] c"fp(3,4) = {}\0A\00", align 1 -@str.99 = private unnamed_addr constant [21 x i8] c"apply(add,5,6) = {}\0A\00", align 1 +@str.96 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.97 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.98 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.99 = private unnamed_addr constant [14 x i8] c"fp(3,4) = {}\0A\00", align 1 @str.100 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.101 = private unnamed_addr constant [21 x i8] c"apply(add,5,6) = {}\0A\00", align 1 -@str.102 = private unnamed_addr constant [21 x i8] c"apply(mul,5,6) = {}\0A\00", align 1 +@str.101 = private unnamed_addr constant [14 x i8] c"fp(3,4) = {}\0A\00", align 1 +@str.102 = private unnamed_addr constant [21 x i8] c"apply(add,5,6) = {}\0A\00", align 1 @str.103 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.104 = private unnamed_addr constant [21 x i8] c"apply(mul,5,6) = {}\0A\00", align 1 -@str.105 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.106 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.107 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.104 = private unnamed_addr constant [21 x i8] c"apply(add,5,6) = {}\0A\00", align 1 +@str.105 = private unnamed_addr constant [21 x i8] c"apply(mul,5,6) = {}\0A\00", align 1 +@str.106 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.107 = private unnamed_addr constant [21 x i8] c"apply(mul,5,6) = {}\0A\00", align 1 +@str.108 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.109 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.110 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.109 = private constant [5 x i8] c"line\00" -@fld.str.110 = private constant [4 x i8] c"col\00" -@fld.str.111 = 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.109, i64 4 }, { ptr, i64 } { ptr @fld.str.110, i64 3 }, { ptr, i64 } { ptr @fld.str.111, i64 4 }] -@str.112 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.113 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.114 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.115 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.116 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.117 = private constant [4 x i8] c"ctx\00" -@fld.str.118 = private constant [6 x i8] c"alloc\00" -@fld.str.119 = private constant [8 x i8] c"dealloc\00" -@field_names.120 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.117, i64 3 }, { ptr, i64 } { ptr @fld.str.118, i64 5 }, { ptr, i64 } { ptr @fld.str.119, i64 7 }] -@str.121 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.122 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.123 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.124 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.126 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.127 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.128 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.130 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.132 = private constant [12 x i8] c"alloc_count\00" -@field_names.133 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.132, i64 11 }] -@str.134 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.135 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.136 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.139 = private constant [5 x i8] c"next\00" -@fld.str.140 = private constant [4 x i8] c"cap\00" -@field_names.141 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.139, i64 4 }, { ptr, i64 } { ptr @fld.str.140, i64 3 }] -@str.142 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.143 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.144 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.145 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.146 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.147 = private constant [6 x i8] c"first\00" -@fld.str.148 = private constant [10 x i8] c"end_index\00" -@fld.str.149 = private constant [7 x i8] c"parent\00" -@field_names.150 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.147, i64 5 }, { ptr, i64 } { ptr @fld.str.148, i64 9 }, { ptr, i64 } { ptr @fld.str.149, i64 6 }] -@str.151 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.152 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.153 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.154 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.156 = private constant [4 x i8] c"buf\00" -@fld.str.157 = private constant [4 x i8] c"len\00" -@fld.str.158 = private constant [4 x i8] c"pos\00" -@field_names.159 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.156, i64 3 }, { ptr, i64 } { ptr @fld.str.157, i64 3 }, { ptr, i64 } { ptr @fld.str.158, i64 3 }] -@str.160 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.161 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.162 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.163 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.165 = private constant [7 x i8] c"parent\00" -@fld.str.166 = private constant [12 x i8] c"alloc_count\00" -@fld.str.167 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.168 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.169 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.165, i64 6 }, { ptr, i64 } { ptr @fld.str.166, i64 11 }, { ptr, i64 } { ptr @fld.str.167, i64 13 }, { ptr, i64 } { ptr @fld.str.168, i64 17 }] -@str.170 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.171 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.173 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.174 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.175 = private constant [10 x i8] c"allocator\00" -@fld.str.176 = private constant [5 x i8] c"data\00" -@field_names.177 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.175, i64 9 }, { ptr, i64 } { ptr @fld.str.176, i64 4 }] -@str.178 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.180 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.181 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.112 = private constant [5 x i8] c"line\00" +@fld.str.113 = private constant [4 x i8] c"col\00" +@fld.str.114 = 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.112, i64 4 }, { ptr, i64 } { ptr @fld.str.113, i64 3 }, { ptr, i64 } { ptr @fld.str.114, i64 4 }] +@str.115 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.116 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.117 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.118 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.120 = private constant [4 x i8] c"ctx\00" +@fld.str.121 = private constant [6 x i8] c"alloc\00" +@fld.str.122 = private constant [8 x i8] c"dealloc\00" +@field_names.123 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.120, i64 3 }, { ptr, i64 } { ptr @fld.str.121, i64 5 }, { ptr, i64 } { ptr @fld.str.122, i64 7 }] +@str.124 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.125 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.126 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.127 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.128 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.129 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.130 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.131 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.133 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.135 = private constant [12 x i8] c"alloc_count\00" +@field_names.136 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.135, i64 11 }] +@str.137 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.138 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.141 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.142 = private constant [5 x i8] c"next\00" +@fld.str.143 = private constant [4 x i8] c"cap\00" +@field_names.144 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.142, i64 4 }, { ptr, i64 } { ptr @fld.str.143, i64 3 }] +@str.145 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.146 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.148 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.149 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.150 = private constant [6 x i8] c"first\00" +@fld.str.151 = private constant [10 x i8] c"end_index\00" +@fld.str.152 = private constant [7 x i8] c"parent\00" +@field_names.153 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.150, i64 5 }, { ptr, i64 } { ptr @fld.str.151, i64 9 }, { ptr, i64 } { ptr @fld.str.152, i64 6 }] +@str.154 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.155 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.156 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.157 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.159 = private constant [4 x i8] c"buf\00" +@fld.str.160 = private constant [4 x i8] c"len\00" +@fld.str.161 = private constant [4 x i8] c"pos\00" +@field_names.162 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.159, i64 3 }, { ptr, i64 } { ptr @fld.str.160, i64 3 }, { ptr, i64 } { ptr @fld.str.161, i64 3 }] +@str.163 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.164 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\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 [7 x i8] c"parent\00" +@fld.str.169 = private constant [12 x i8] c"alloc_count\00" +@fld.str.170 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.171 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.172 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.168, i64 6 }, { ptr, i64 } { ptr @fld.str.169, i64 11 }, { ptr, i64 } { ptr @fld.str.170, i64 13 }, { ptr, i64 } { ptr @fld.str.171, i64 17 }] +@str.173 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.174 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.175 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.176 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.178 = private constant [10 x i8] c"allocator\00" +@fld.str.179 = private constant [5 x i8] c"data\00" +@field_names.180 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.178, i64 9 }, { ptr, i64 } { ptr @fld.str.179, i64 4 }] +@str.181 = private unnamed_addr constant [3 x i8] c": \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 @str.185 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.186 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.187 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.188 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.189 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.190 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.191 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.192 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.193 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.188 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.189 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.190 = private unnamed_addr constant [3 x i8] c", \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 @str.194 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.195 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.195 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.196 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.197 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.198 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.198 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.199 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.200 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.201 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.201 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.202 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.203 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.204 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.204 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.205 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.206 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.207 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.207 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.208 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.209 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.210 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.210 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.211 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.212 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.213 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.213 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.214 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.215 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.216 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.216 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.217 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.218 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.219 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.219 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.220 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.221 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.222 = private unnamed_addr constant [10 x i8] c"*function\00", align 1 +@str.222 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.223 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.224 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.225 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.225 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.226 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.227 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.228 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.228 = private unnamed_addr constant [10 x i8] c"*function\00", align 1 @str.229 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.230 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.231 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.231 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 @str.232 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.233 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.234 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.234 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.235 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.236 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.237 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.237 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.238 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.239 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.240 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.240 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.241 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.242 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.243 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.243 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.244 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.245 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.246 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.247 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.248 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.249 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.250 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -387,38 +394,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -431,50 +443,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -488,19 +628,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -517,15 +657,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -543,16 +683,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -569,17 +709,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -642,39 +782,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.182 + br label %while.hdr.204 -while.hdr.182: ; preds = %if.merge.187, %entry +while.hdr.204: ; preds = %if.merge.209, %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.183, label %while.exit.184 + br i1 %icmp, label %while.body.205, label %while.exit.206 -while.body.183: ; preds = %while.hdr.182 +while.body.205: ; preds = %while.hdr.204 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.185, label %if.else.186 + br i1 %icmpN, label %if.then.207, label %if.else.208 -while.exit.184: ; preds = %while.hdr.182 +while.exit.206: ; preds = %while.hdr.204 ret void -if.then.185: ; preds = %while.body.183 +if.then.207: ; preds = %while.body.205 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.187 + br label %if.merge.209 -if.else.186: ; preds = %while.body.183 +if.else.208: ; preds = %while.body.205 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.187 + br label %if.merge.209 -if.merge.187: ; preds = %if.else.186, %if.then.185 - %bp = phi i64 [ %addN, %if.then.185 ], [ %addN, %if.else.186 ] +if.merge.209: ; preds = %if.else.208, %if.then.207 + %bp = phi i64 [ %addN, %if.then.207 ], [ %addN, %if.else.208 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -687,37 +827,29 @@ if.merge.187: ; preds = %if.else.186, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.182 + br label %while.hdr.204 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.172, label %if.merge.173 - -if.then.172: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.173: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.174, label %if.merge.175 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.174: ; preds = %if.merge.173 +if.then.58: ; 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.175 + br label %if.merge.59 -if.merge.175: ; preds = %if.then.174, %if.merge.173 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -730,15 +862,15 @@ if.merge.175: ; preds = %if.then.174, %if.me 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.176, label %if.merge.177 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.176: ; preds = %if.merge.175 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.177 + br label %if.merge.61 -if.merge.177: ; preds = %if.then.176, %if.merge.175 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -751,15 +883,15 @@ if.merge.177: ; preds = %if.then.176, %if.me 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.178, label %if.merge.179 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.178: ; preds = %if.merge.177 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.179 + br label %if.merge.63 -if.merge.179: ; preds = %if.then.178, %if.merge.177 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -772,65 +904,116 @@ if.merge.179: ; preds = %if.then.178, %if.me 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.180, label %if.merge.181 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.180: ; preds = %if.merge.179 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.181 + br label %if.merge.65 -if.merge.181: ; preds = %if.then.180, %if.merge.179 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.202, label %if.merge.203 + +if.then.202: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.203: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.188 + br label %while.hdr.210 -while.hdr.188: ; preds = %if.merge.192, %if.merge.181 +while.hdr.210: ; preds = %if.merge.214, %if.merge.203 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.189, label %while.exit.190 + br i1 %icmpN, label %while.body.211, label %while.exit.212 -while.body.189: ; preds = %while.hdr.188 +while.body.211: ; preds = %while.hdr.210 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.191, label %if.merge.192 + br i1 %icmpN, label %if.then.213, label %if.merge.214 -while.exit.190: ; preds = %if.then.191, %while.hdr.188 +while.exit.212: ; preds = %if.then.213, %while.hdr.210 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.191: ; preds = %while.body.189 - br label %while.exit.190 +if.then.213: ; preds = %while.body.211 + br label %while.exit.212 -if.merge.192: ; preds = %while.body.189 +if.merge.214: ; preds = %while.body.211 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.188 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.210 } ; Function Attrs: nounwind @@ -909,7 +1092,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -917,467 +1100,494 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 45, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 35, label %match.arm.47 + i64 46, label %match.arm.47 + i64 36, label %match.arm.48 + i64 44, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 38, label %match.arm.49 + i64 39, label %match.arm.49 + i64 40, label %match.arm.49 + i64 41, label %match.arm.49 + i64 42, label %match.arm.49 i64 43, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 39, label %match.arm.50 - i64 40, label %match.arm.50 - i64 41, label %match.arm.50 - i64 42, label %match.arm.50 - i64 44, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 49, label %match.arm.50 - i64 13, label %match.arm.52 + i64 45, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 49, label %match.arm.49 + i64 50, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.148, %dispatch.merge.134, %dispatch.merge.126, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.178, %dispatch.merge.164, %dispatch.merge.150, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [74 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.151 [ + i64 35, label %dispatch.case.152 + i64 46, label %dispatch.case.153 + ] + +match.arm.48: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.165 [ + i64 36, label %dispatch.case.166 + i64 44, label %dispatch.case.167 + ] + +match.arm.49: ; preds = %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.179 [ + i64 18, label %dispatch.case.180 + i64 22, label %dispatch.case.181 + i64 24, label %dispatch.case.182 + i64 26, label %dispatch.case.183 + i64 28, label %dispatch.case.184 + i64 29, label %dispatch.case.185 + i64 31, label %dispatch.case.186 + i64 33, label %dispatch.case.187 + i64 38, label %dispatch.case.188 + i64 39, label %dispatch.case.189 + i64 40, label %dispatch.case.190 + i64 41, label %dispatch.case.191 + i64 42, label %dispatch.case.192 + i64 43, label %dispatch.case.193 + i64 45, label %dispatch.case.194 + i64 47, label %dispatch.case.195 + i64 48, label %dispatch.case.196 + i64 49, label %dispatch.case.197 + i64 50, label %dispatch.case.198 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.127 [ - i64 45, label %dispatch.case.128 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.135 [ - i64 35, label %dispatch.case.136 - i64 43, label %dispatch.case.137 - ] - -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.149 [ - i64 18, label %dispatch.case.150 - i64 22, label %dispatch.case.151 - i64 24, label %dispatch.case.152 - i64 26, label %dispatch.case.153 - i64 28, label %dispatch.case.154 - i64 29, label %dispatch.case.155 - i64 31, label %dispatch.case.156 - i64 33, label %dispatch.case.157 - i64 37, label %dispatch.case.158 - i64 38, label %dispatch.case.159 - i64 39, label %dispatch.case.160 - i64 40, label %dispatch.case.161 - i64 41, label %dispatch.case.162 - i64 42, label %dispatch.case.163 - i64 44, label %dispatch.case.164 - i64 46, label %dispatch.case.165 - i64 47, label %dispatch.case.166 - i64 48, label %dispatch.case.167 - i64 49, label %dispatch.case.168 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [72 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [74 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.126: ; preds = %dispatch.case.128, %dispatch.default.127 +dispatch.case.104: ; preds = %match.arm.43 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.150: ; preds = %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.127: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.126 +dispatch.default.151: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.150 -dispatch.case.128: ; preds = %match.arm.48 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [1 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load78) +dispatch.case.152: ; preds = %match.arm.47 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.merge.134: ; preds = %dispatch.case.137, %dispatch.case.136, %dispatch.default.135 +dispatch.case.153: ; preds = %match.arm.47 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.merge.164: ; preds = %dispatch.case.167, %dispatch.case.166, %dispatch.default.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.135: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.134 +dispatch.default.165: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.164 -dispatch.case.136: ; preds = %match.arm.49 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load { ptr, i64 }, ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load83) +dispatch.case.166: ; preds = %match.arm.48 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load91) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.134 + br label %dispatch.merge.164 -dispatch.case.137: ; preds = %match.arm.49 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.167: ; preds = %match.arm.48 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.134 + br label %dispatch.merge.164 -dispatch.merge.148: ; preds = %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.case.155, %dispatch.case.154, %dispatch.case.153, %dispatch.case.152, %dispatch.case.151, %dispatch.case.150, %dispatch.default.149 +dispatch.merge.178: ; preds = %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.case.180, %dispatch.default.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.149: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.148 +dispatch.default.179: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.178 -dispatch.case.150: ; preds = %match.arm.50 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw90 to ptr +dispatch.case.180: ; preds = %match.arm.49 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw98 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.148 + br label %dispatch.merge.178 -dispatch.case.151: ; preds = %match.arm.50 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %iNp93 = inttoptr i64 %ua.raw92 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp93) +dispatch.case.181: ; preds = %match.arm.49 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %iNp101 = inttoptr i64 %ua.raw100 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.152: ; preds = %match.arm.50 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp96 = inttoptr i64 %ua.raw95 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp96) +dispatch.case.182: ; preds = %match.arm.49 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp104 = inttoptr i64 %ua.raw103 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp104) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.153: ; preds = %match.arm.50 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %iNp99 = inttoptr i64 %ua.raw98 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp99) +dispatch.case.183: ; preds = %match.arm.49 + %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 + %iNp107 = inttoptr i64 %ua.raw106 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.154: ; preds = %match.arm.50 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %iNp102 = inttoptr i64 %ua.raw101 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp102) +dispatch.case.184: ; preds = %match.arm.49 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %iNp110 = inttoptr i64 %ua.raw109 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp110) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.155: ; preds = %match.arm.50 - %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 - %iNp105 = inttoptr i64 %ua.raw104 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp105) +dispatch.case.185: ; preds = %match.arm.49 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %iNp113 = inttoptr i64 %ua.raw112 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp113) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 - %iNp108 = inttoptr i64 %ua.raw107 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp108) +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %iNp116 = inttoptr i64 %ua.raw115 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp116) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %iNp111 = inttoptr i64 %ua.raw110 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp111) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %iNp119 = inttoptr i64 %ua.raw118 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %iNp114 = inttoptr i64 %ua.raw113 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp114) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 + %iNp122 = inttoptr i64 %ua.raw121 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp122) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp117) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp120) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_fn_s32_s32__s32(ptr %0, ptr %iNp123) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_fn_s32_s32__s32(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp126) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp129) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp132) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp135) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp138) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp141) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.168: ; preds = %match.arm.50 - %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 - %iNp144 = inttoptr i64 %ua.raw143 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp144) +dispatch.case.198: ; preds = %match.arm.49 + %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 + %iNp152 = inttoptr i64 %ua.raw151 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp152) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 } ; Function Attrs: nounwind @@ -1386,7 +1596,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.81, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.84, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1417,7 +1627,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1435,9 +1645,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1475,14 +1685,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, 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 @@ -1490,7 +1700,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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 @@ -1500,13 +1710,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, 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 @@ -1514,7 +1724,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1526,83 +1736,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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.88, 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.89, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1630,18 +1764,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1654,6 +1825,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, 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.95, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, 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.97, 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 @@ -1662,11 +1872,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1750,7 +1960,7 @@ entry: define internal void @print__ct_sab6a3b1f9bc359ad__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.96, i64 13 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.99, i64 13 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1766,7 +1976,7 @@ entry: %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.97, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.100, 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 10) @@ -1794,64 +2004,12 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.98, i64 13 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.101, i64 13 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind define internal void @print__ct_s3417a75739024851__pack_s32(ptr %0, i32 %1) #0 { -entry: - %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.99, i64 20 }, 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.100, 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 17) - %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 19, 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.101, i64 20 }) - ret { ptr, i64 } %call -} - -; Function Attrs: nounwind -define internal void @print__ct_s2ed9f416bd1dfc65__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.102, i64 20 }, ptr %alloca, align 8 @@ -1896,46 +2054,98 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_2(ptr %0) #0 { +define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.104, i64 20 }) ret { ptr, i64 } %call } +; Function Attrs: nounwind +define internal void @print__ct_s2ed9f416bd1dfc65__pack_s32(ptr %0, i32 %1) #0 { +entry: + %alloca = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.105, i64 20 }, 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.106, 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 17) + %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 19, 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_2(ptr %0) #0 { +entry: + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.107, i64 20 }) + 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 store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.105, i64 15 }, { ptr, i64 } { ptr @str.106, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.108, i64 15 }, { ptr, i64 } { ptr @str.109, 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.81 + br label %while.hdr.105 -while.hdr.81: ; preds = %fv.merge, %entry +while.hdr.105: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.82, label %while.exit.83 + br i1 %icmp, label %while.body.106, label %while.exit.107 -while.body.82: ; preds = %while.hdr.81 +while.body.106: ; preds = %while.hdr.105 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.84, label %if.merge.85 + br i1 %icmpN, label %if.then.108, label %if.merge.109 -while.exit.83: ; preds = %while.hdr.81 +while.exit.107: ; preds = %while.hdr.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 1 }) ret { ptr, i64 } %callN -if.then.84: ; preds = %while.body.82 +if.then.108: ; preds = %while.body.106 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.85 + br label %if.merge.109 -if.merge.85: ; preds = %if.then.84, %while.body.82 +if.merge.109: ; preds = %if.then.108, %while.body.106 %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 @@ -1943,7 +2153,7 @@ if.merge.85: ; preds = %if.then.84, %while. %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.112, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -1963,12 +2173,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.81 + br label %while.hdr.105 -fv.default: ; preds = %if.merge.85 +fv.default: ; preds = %if.merge.109 br label %fv.merge -fv.case: ; preds = %if.merge.85 +fv.case: ; preds = %if.merge.109 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1976,19 +2186,19 @@ fv.case: ; preds = %if.merge.85 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.85 +fv.case17: ; preds = %if.merge.109 %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.85 +fv.case20: ; preds = %if.merge.109 %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.85 +fv.case24: ; preds = %if.merge.109 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2002,43 +2212,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.113, i64 9 }, { ptr, i64 } { ptr @str.114, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.116, i64 9 }, { ptr, i64 } { ptr @str.117, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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.120, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.123, 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.121, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, 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 @@ -2057,24 +2267,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %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.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case21: ; preds = %if.merge.114 %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 @@ -2086,43 +2296,43 @@ 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.122, i64 10 }, { ptr, i64 } { ptr @str.123, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.125, i64 10 }, { ptr, i64 } { ptr @str.126, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %if.merge.95, %entry +while.hdr.115: ; preds = %if.merge.119, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.126, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.129, 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.127, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2133,7 +2343,7 @@ if.merge.95: ; preds = %if.then.94, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 } ; Function Attrs: nounwind @@ -2141,43 +2351,43 @@ 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.128, i64 3 }, { ptr, i64 } { ptr @str.129, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.131, i64 3 }, { ptr, i64 } { ptr @str.132, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.133, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.136, 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.134, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i64 }, ptr %alloca, align 8 @@ -2194,12 +2404,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2210,43 +2420,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.135, i64 10 }, { ptr, i64 } { ptr @str.136, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 10 }, { ptr, i64 } { ptr @str.139, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) + %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 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.141, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.144, 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.142, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 @@ -2264,18 +2474,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %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.105 +fv.case17: ; preds = %if.merge.129 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2286,43 +2496,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.143, i64 5 }, { ptr, i64 } { ptr @str.144, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.146, i64 5 }, { ptr, i64 } { ptr @str.147, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.145, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.150, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.153, 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.151, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2341,23 +2551,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %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.110 +fv.case20: ; preds = %if.merge.134 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2371,43 +2581,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.152, i64 8 }, { ptr, i64 } { ptr @str.153, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.155, i64 8 }, { ptr, i64 } { ptr @str.156, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.159, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 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.160, i64 2 }) + %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 { ptr, i64, i64 }, ptr %alloca, align 8 @@ -2426,23 +2636,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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 @@ -2453,43 +2663,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.161, i64 17 }, { ptr, i64 } { ptr @str.162, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.164, i64 17 }, { 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, i64 2 }) + %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.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.169, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.172, 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.170, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, 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 @@ -2509,12 +2719,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2522,17 +2732,17 @@ fv.case: ; preds = %if.merge.120 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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.120 +fv.case23: ; preds = %if.merge.144 %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 @@ -2543,43 +2753,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.171, i64 7 }, { ptr, i64 } { ptr @str.172, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.174, i64 7 }, { ptr, i64 } { ptr @str.175, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.177, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.180, 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.178, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, 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 @@ -2597,12 +2807,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2610,46 +2820,96 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.182, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.154 + +while.hdr.154: ; preds = %if.merge.158, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.155, label %while.exit.156 + +while.body.155: ; preds = %while.hdr.154 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.157, label %if.merge.158 + +while.exit.156: ; preds = %while.hdr.154 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 1 }) + ret { ptr, i64 } %call + +if.then.157: ; preds = %while.body.155 + %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.158 + +if.merge.158: ; preds = %if.then.157, %while.body.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.154 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.179, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.185, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.159 -while.hdr.129: ; preds = %if.merge.133, %entry +while.hdr.159: ; preds = %if.merge.163, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.130, label %while.exit.131 + br i1 %icmp, label %while.body.160, label %while.exit.161 -while.body.130: ; preds = %while.hdr.129 +while.body.160: ; preds = %while.hdr.159 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.132, label %if.merge.133 + br i1 %icmpN, label %if.then.162, label %if.merge.163 -while.exit.131: ; preds = %while.hdr.129 +while.exit.161: ; preds = %while.hdr.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.180, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 1 }) ret { ptr, i64 } %call -if.then.132: ; preds = %while.body.130 +if.then.162: ; preds = %while.body.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.133 + br label %if.merge.163 -if.merge.133: ; preds = %if.then.132, %while.body.130 +if.merge.163: ; preds = %if.then.162, %while.body.160 %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 @@ -2667,7 +2927,7 @@ if.merge.133: ; preds = %if.then.132, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.159 } ; Function Attrs: nounwind @@ -2676,35 +2936,35 @@ 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.182, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.188, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.168 -while.hdr.138: ; preds = %if.merge.142, %entry +while.hdr.168: ; preds = %if.merge.172, %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.139, label %while.exit.140 + br i1 %icmp, label %while.body.169, label %while.exit.170 -while.body.139: ; preds = %while.hdr.138 +while.body.169: ; preds = %while.hdr.168 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.141, label %if.merge.142 + br i1 %icmpN, label %if.then.171, label %if.merge.172 -while.exit.140: ; preds = %while.hdr.138 +while.exit.170: ; preds = %while.hdr.168 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) ret { ptr, i64 } %call -if.then.141: ; preds = %while.body.139 +if.then.171: ; preds = %while.body.169 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.142 + br label %if.merge.172 -if.merge.142: ; preds = %if.then.141, %while.body.139 +if.merge.172: ; preds = %if.then.171, %while.body.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2721,7 +2981,7 @@ if.merge.142: ; preds = %if.then.141, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.168 } ; Function Attrs: nounwind @@ -2730,35 +2990,35 @@ 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.185, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 -while.hdr.143: ; preds = %if.merge.147, %entry +while.hdr.173: ; preds = %if.merge.177, %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.144, label %while.exit.145 + br i1 %icmp, label %while.body.174, label %while.exit.175 -while.body.144: ; preds = %while.hdr.143 +while.body.174: ; preds = %while.hdr.173 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.146, label %if.merge.147 + br i1 %icmpN, label %if.then.176, label %if.merge.177 -while.exit.145: ; preds = %while.hdr.143 +while.exit.175: ; preds = %while.hdr.173 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %call -if.then.146: ; preds = %while.body.144 +if.then.176: ; preds = %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 2 }) + %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.147 + br label %if.merge.177 -if.merge.147: ; preds = %if.then.146, %while.body.144 +if.merge.177: ; preds = %if.then.176, %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2775,95 +3035,11 @@ if.merge.147: ; preds = %if.then.146, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 } ; 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.169, label %if.else.170 - -if.then.169: ; preds = %entry - br label %if.merge.171 - -if.else.170: ; 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.190, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.189, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.171 - -if.merge.171: ; preds = %if.else.170, %if.then.169 - %bp = phi { ptr, i64 } [ { ptr @str.188, i64 4 }, %if.then.169 ], [ %callN, %if.else.170 ] - 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.193, label %if.else.194 - -if.then.193: ; preds = %entry - br label %if.merge.195 - -if.else.194: ; 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.193, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.192, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.195 - -if.merge.195: ; preds = %if.else.194, %if.then.193 - %bp = phi { ptr, i64 } [ { ptr @str.191, i64 4 }, %if.then.193 ], [ %callN, %if.else.194 ] - 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.196, label %if.else.197 - -if.then.196: ; preds = %entry - br label %if.merge.198 - -if.else.197: ; 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.196, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.195, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.198 - -if.merge.198: ; preds = %if.else.197, %if.then.196 - %bp = phi { ptr, i64 } [ { ptr @str.194, i64 4 }, %if.then.196 ], [ %callN, %if.else.197 ] - 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 @@ -2881,12 +3057,96 @@ if.then.199: ; preds = %entry if.else.200: ; 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.199, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.195, i64 5 }, { ptr, i64 } %callN) br label %if.merge.201 if.merge.201: ; preds = %if.else.200, %if.then.199 - %bp = phi { ptr, i64 } [ { ptr @str.197, i64 4 }, %if.then.199 ], [ %callN, %if.else.200 ] + %bp = phi { ptr, i64 } [ { ptr @str.194, i64 4 }, %if.then.199 ], [ %callN, %if.else.200 ] + 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.215, label %if.else.216 + +if.then.215: ; preds = %entry + br label %if.merge.217 + +if.else.216: ; 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.199, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.217 + +if.merge.217: ; preds = %if.else.216, %if.then.215 + %bp = phi { ptr, i64 } [ { ptr @str.197, i64 4 }, %if.then.215 ], [ %callN, %if.else.216 ] + 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.218, label %if.else.219 + +if.then.218: ; preds = %entry + br label %if.merge.220 + +if.else.219: ; 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.202, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.220 + +if.merge.220: ; preds = %if.else.219, %if.then.218 + %bp = phi { ptr, i64 } [ { ptr @str.200, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] + 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.221, label %if.else.222 + +if.then.221: ; preds = %entry + br label %if.merge.223 + +if.else.222: ; 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.205, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.223 + +if.merge.223: ; preds = %if.else.222, %if.then.221 + %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.221 ], [ %callN, %if.else.222 ] ret { ptr, i64 } %bp } @@ -2901,20 +3161,20 @@ entry: 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.202, label %if.else.203 + br i1 %icmp, label %if.then.224, label %if.else.225 -if.then.202: ; preds = %entry - br label %if.merge.204 +if.then.224: ; preds = %entry + br label %if.merge.226 -if.else.203: ; preds = %entry +if.else.225: ; 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.202, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.204 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.226 -if.merge.204: ; preds = %if.else.203, %if.then.202 - %bp = phi { ptr, i64 } [ { ptr @str.200, i64 4 }, %if.then.202 ], [ %callN, %if.else.203 ] +if.merge.226: ; preds = %if.else.225, %if.then.224 + %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.224 ], [ %callN, %if.else.225 ] ret { ptr, i64 } %bp } @@ -2928,20 +3188,20 @@ entry: 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.205, label %if.else.206 + br i1 %icmp, label %if.then.227, label %if.else.228 -if.then.205: ; preds = %entry - br label %if.merge.207 +if.then.227: ; preds = %entry + br label %if.merge.229 -if.else.206: ; preds = %entry +if.else.228: ; 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.205, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.207 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.229 -if.merge.207: ; preds = %if.else.206, %if.then.205 - %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.205 ], [ %callN, %if.else.206 ] +if.merge.229: ; preds = %if.else.228, %if.then.227 + %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] ret { ptr, i64 } %bp } @@ -2956,20 +3216,20 @@ entry: 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.208, label %if.else.209 + br i1 %icmp, label %if.then.230, label %if.else.231 -if.then.208: ; preds = %entry - br label %if.merge.210 +if.then.230: ; preds = %entry + br label %if.merge.232 -if.else.209: ; preds = %entry +if.else.231: ; 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.208, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.210 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.232 -if.merge.210: ; preds = %if.else.209, %if.then.208 - %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.208 ], [ %callN, %if.else.209 ] +if.merge.232: ; preds = %if.else.231, %if.then.230 + %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] ret { ptr, i64 } %bp } @@ -2984,20 +3244,20 @@ entry: 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.211, label %if.else.212 + br i1 %icmp, label %if.then.233, label %if.else.234 -if.then.211: ; preds = %entry - br label %if.merge.213 +if.then.233: ; preds = %entry + br label %if.merge.235 -if.else.212: ; preds = %entry +if.else.234: ; 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.211, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.213 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.235 -if.merge.213: ; preds = %if.else.212, %if.then.211 - %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.211 ], [ %callN, %if.else.212 ] +if.merge.235: ; preds = %if.else.234, %if.then.233 + %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] ret { ptr, i64 } %bp } @@ -3012,20 +3272,20 @@ entry: 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.214, label %if.else.215 + br i1 %icmp, label %if.then.236, label %if.else.237 -if.then.214: ; preds = %entry - br label %if.merge.216 +if.then.236: ; preds = %entry + br label %if.merge.238 -if.else.215: ; preds = %entry +if.else.237: ; 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.214, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.216 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.238 -if.merge.216: ; preds = %if.else.215, %if.then.214 - %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.214 ], [ %callN, %if.else.215 ] +if.merge.238: ; preds = %if.else.237, %if.then.236 + %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] ret { ptr, i64 } %bp } @@ -3040,20 +3300,20 @@ entry: 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.217, label %if.else.218 + br i1 %icmp, label %if.then.239, label %if.else.240 -if.then.217: ; preds = %entry - br label %if.merge.219 +if.then.239: ; preds = %entry + br label %if.merge.241 -if.else.218: ; preds = %entry +if.else.240: ; 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.217, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.219 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.241 -if.merge.219: ; preds = %if.else.218, %if.then.217 - %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.217 ], [ %callN, %if.else.218 ] +if.merge.241: ; preds = %if.else.240, %if.then.239 + %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] ret { ptr, i64 } %bp } @@ -3068,20 +3328,20 @@ entry: 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.220, label %if.else.221 + br i1 %icmp, label %if.then.242, label %if.else.243 -if.then.220: ; preds = %entry - br label %if.merge.222 +if.then.242: ; preds = %entry + br label %if.merge.244 -if.else.221: ; preds = %entry +if.else.243: ; 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.220, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.222 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.244 -if.merge.222: ; preds = %if.else.221, %if.then.220 - %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] +if.merge.244: ; preds = %if.else.243, %if.then.242 + %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] ret { ptr, i64 } %bp } @@ -3096,20 +3356,20 @@ entry: 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.223, label %if.else.224 + br i1 %icmp, label %if.then.245, label %if.else.246 -if.then.223: ; preds = %entry - br label %if.merge.225 +if.then.245: ; preds = %entry + br label %if.merge.247 -if.else.224: ; preds = %entry +if.else.246: ; 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.223, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.225 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.247 -if.merge.225: ; preds = %if.else.224, %if.then.223 - %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] +if.merge.247: ; preds = %if.else.246, %if.then.245 + %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] ret { ptr, i64 } %bp } @@ -3124,20 +3384,20 @@ entry: 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.226, label %if.else.227 + br i1 %icmp, label %if.then.248, label %if.else.249 -if.then.226: ; preds = %entry - br label %if.merge.228 +if.then.248: ; preds = %entry + br label %if.merge.250 -if.else.227: ; preds = %entry +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.226, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.228 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.250 -if.merge.228: ; preds = %if.else.227, %if.then.226 - %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] +if.merge.250: ; preds = %if.else.249, %if.then.248 + %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] ret { ptr, i64 } %bp } @@ -3152,20 +3412,20 @@ entry: 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.229, label %if.else.230 + br i1 %icmp, label %if.then.251, label %if.else.252 -if.then.229: ; preds = %entry - br label %if.merge.231 +if.then.251: ; preds = %entry + br label %if.merge.253 -if.else.230: ; preds = %entry +if.else.252: ; 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.229, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.231 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.253 -if.merge.231: ; preds = %if.else.230, %if.then.229 - %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] +if.merge.253: ; preds = %if.else.252, %if.then.251 + %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] ret { ptr, i64 } %bp } @@ -3180,20 +3440,20 @@ entry: 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.232, label %if.else.233 + br i1 %icmp, label %if.then.254, label %if.else.255 -if.then.232: ; preds = %entry - br label %if.merge.234 +if.then.254: ; preds = %entry + br label %if.merge.256 -if.else.233: ; preds = %entry +if.else.255: ; 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.232, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.234 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.256 -if.merge.234: ; preds = %if.else.233, %if.then.232 - %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] +if.merge.256: ; preds = %if.else.255, %if.then.254 + %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] ret { ptr, i64 } %bp } @@ -3208,20 +3468,20 @@ entry: 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.235, label %if.else.236 + br i1 %icmp, label %if.then.257, label %if.else.258 -if.then.235: ; preds = %entry - br label %if.merge.237 +if.then.257: ; preds = %entry + br label %if.merge.259 -if.else.236: ; preds = %entry +if.else.258: ; 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.235, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.237 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.259 -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] ret { ptr, i64 } %bp } @@ -3236,20 +3496,20 @@ entry: 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.238, label %if.else.239 + br i1 %icmp, label %if.then.260, label %if.else.261 -if.then.238: ; preds = %entry - br label %if.merge.240 +if.then.260: ; preds = %entry + br label %if.merge.262 -if.else.239: ; preds = %entry +if.else.261: ; 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.238, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.240 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.262 -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] ret { ptr, i64 } %bp } @@ -3264,20 +3524,20 @@ entry: 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.241, label %if.else.242 + br i1 %icmp, label %if.then.263, label %if.else.264 -if.then.241: ; preds = %entry - br label %if.merge.243 +if.then.263: ; preds = %entry + br label %if.merge.265 -if.else.242: ; preds = %entry +if.else.264: ; 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.241, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.243 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.265 -if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3292,23 +3552,21 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.244, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0400-protocols-impl-for-builtin.ir b/examples/expected/0400-protocols-impl-for-builtin.ir index b66568f..905e4c2 100644 --- a/examples/expected/0400-protocols-impl-for-builtin.ir +++ b/examples/expected/0400-protocols-impl-for-builtin.ir @@ -1,263 +1,270 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [75 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [9 x i8] c"Lerpable\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 [9 x i8] c"[]string\00" -@tn.str.42 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.43 = private constant [5 x i8] c"*s64\00" -@tn.str.44 = private constant [7 x i8] c"**void\00" -@tn.str.45 = private constant [5 x i8] c"*f32\00" -@tn.str.46 = private constant [8 x i8] c"*string\00" -@tn.str.47 = private constant [6 x i8] c"[]Any\00" -@tn.str.48 = private constant [5 x i8] c"*Any\00" -@tn.str.49 = private constant [7 x i8] c"[1]Any\00" -@tn.str.50 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.51 = private constant [7 x i8] c"*[]Any\00" -@tn.str.52 = private constant [4 x i8] c"*u8\00" -@tn.str.53 = private constant [6 x i8] c"*bool\00" -@tn.str.54 = private constant [6 x i8] c"**f32\00" -@tn.str.55 = private constant [10 x i8] c"*Lerpable\00" -@tn.str.56 = private constant [5 x i8] c"*f64\00" -@tn.str.57 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.58 = private constant [11 x i8] c"*Allocator\00" -@tn.str.59 = private constant [9 x i8] c"*Context\00" -@tn.str.60 = private constant [10 x i8] c"*[]string\00" -@tn.str.61 = private constant [6 x i8] c"**GPA\00" -@tn.str.62 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.63 = private constant [8 x i8] c"**Arena\00" -@tn.str.64 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.65 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.66 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.67 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.68 = private constant [6 x i8] c"**s64\00" -@tn.str.69 = private constant [8 x i8] c"***void\00" -@tn.str.70 = private constant [9 x i8] c"**string\00" -@tn.str.71 = private constant [6 x i8] c"**Any\00" -@tn.str.72 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.73 = private constant [8 x i8] c"**[]Any\00" -@tn.str.74 = private constant [5 x i8] c"**u8\00" -@tn.str.75 = private constant [7 x i8] c"**bool\00" -@tn.str.76 = private constant [7 x i8] c"***f32\00" -@tn.str.77 = private constant [11 x i8] c"**Lerpable\00" -@__sx_type_names = private constant [73 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 8 }, { 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 8 }, { ptr, i64 } { ptr @tn.str.42, i64 12 }, { ptr, i64 } { ptr @tn.str.43, i64 4 }, { ptr, i64 } { ptr @tn.str.44, i64 6 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 7 }, { ptr, i64 } { ptr @tn.str.47, i64 5 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 9 }, { ptr, i64 } { ptr @tn.str.56, i64 4 }, { ptr, i64 } { ptr @tn.str.57, i64 16 }, { ptr, i64 } { ptr @tn.str.58, i64 10 }, { ptr, i64 } { ptr @tn.str.59, i64 8 }, { ptr, i64 } { ptr @tn.str.60, i64 9 }, { ptr, i64 } { ptr @tn.str.61, i64 5 }, { ptr, i64 } { ptr @tn.str.62, i64 12 }, { ptr, i64 } { ptr @tn.str.63, i64 7 }, { ptr, i64 } { ptr @tn.str.64, i64 6 }, { ptr, i64 } { ptr @tn.str.65, i64 10 }, { ptr, i64 } { ptr @tn.str.66, i64 19 }, { ptr, i64 } { ptr @tn.str.67, i64 13 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 7 }, { ptr, i64 } { ptr @tn.str.70, i64 8 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 4 }, { ptr, i64 } { ptr @tn.str.75, i64 6 }, { ptr, i64 } { ptr @tn.str.76, i64 6 }, { ptr, i64 } { ptr @tn.str.77, i64 10 }] -@str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [9 x i8] c"Lerpable\00" +@tn.str.26 = private constant [16 x i8] c"Source_Location\00" +@tn.str.27 = private constant [10 x i8] c"Allocator\00" +@tn.str.28 = private constant [11 x i8] c"CAllocator\00" +@tn.str.29 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.30 = private constant [4 x i8] c"GPA\00" +@tn.str.31 = private constant [5 x i8] c"*GPA\00" +@tn.str.32 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.33 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.34 = private constant [6 x i8] c"Arena\00" +@tn.str.35 = private constant [7 x i8] c"*Arena\00" +@tn.str.36 = private constant [6 x i8] c"[*]u8\00" +@tn.str.37 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.38 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.39 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.40 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.41 = private constant [8 x i8] c"Context\00" +@tn.str.42 = private constant [7 x i8] c"[4]s64\00" +@tn.str.43 = private constant [9 x i8] c"[]string\00" +@tn.str.44 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.45 = private constant [5 x i8] c"*s64\00" +@tn.str.46 = private constant [7 x i8] c"**void\00" +@tn.str.47 = private constant [5 x i8] c"*f32\00" +@tn.str.48 = private constant [8 x i8] c"*string\00" +@tn.str.49 = private constant [6 x i8] c"[]Any\00" +@tn.str.50 = private constant [5 x i8] c"*Any\00" +@tn.str.51 = private constant [7 x i8] c"[1]Any\00" +@tn.str.52 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.53 = private constant [7 x i8] c"*[]Any\00" +@tn.str.54 = private constant [4 x i8] c"*u8\00" +@tn.str.55 = private constant [6 x i8] c"*bool\00" +@tn.str.56 = private constant [6 x i8] c"**f32\00" +@tn.str.57 = private constant [10 x i8] c"*Lerpable\00" +@tn.str.58 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.59 = private constant [5 x i8] c"*f64\00" +@tn.str.60 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.61 = private constant [11 x i8] c"*Allocator\00" +@tn.str.62 = private constant [9 x i8] c"*Context\00" +@tn.str.63 = private constant [10 x i8] c"*[]string\00" +@tn.str.64 = private constant [6 x i8] c"**GPA\00" +@tn.str.65 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.66 = private constant [8 x i8] c"**Arena\00" +@tn.str.67 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.68 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.69 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.70 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.71 = private constant [6 x i8] c"**s64\00" +@tn.str.72 = private constant [8 x i8] c"***void\00" +@tn.str.73 = private constant [9 x i8] c"**string\00" +@tn.str.74 = private constant [6 x i8] c"**Any\00" +@tn.str.75 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.76 = private constant [8 x i8] c"**[]Any\00" +@tn.str.77 = private constant [5 x i8] c"**u8\00" +@tn.str.78 = private constant [7 x i8] c"**bool\00" +@tn.str.79 = private constant [7 x i8] c"***f32\00" +@tn.str.80 = private constant [11 x i8] c"**Lerpable\00" +@__sx_type_names = private constant [75 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 8 }, { ptr, i64 } { ptr @tn.str.26, i64 15 }, { ptr, i64 } { ptr @tn.str.27, i64 9 }, { ptr, i64 } { ptr @tn.str.28, i64 10 }, { ptr, i64 } { ptr @tn.str.29, i64 11 }, { ptr, i64 } { ptr @tn.str.30, i64 3 }, { ptr, i64 } { ptr @tn.str.31, i64 4 }, { ptr, i64 } { ptr @tn.str.32, i64 10 }, { ptr, i64 } { ptr @tn.str.33, i64 11 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 6 }, { ptr, i64 } { ptr @tn.str.36, i64 5 }, { ptr, i64 } { ptr @tn.str.37, i64 8 }, { ptr, i64 } { ptr @tn.str.38, i64 9 }, { ptr, i64 } { ptr @tn.str.39, i64 17 }, { ptr, i64 } { ptr @tn.str.40, i64 18 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 6 }, { ptr, i64 } { ptr @tn.str.43, i64 8 }, { ptr, i64 } { ptr @tn.str.44, i64 12 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 7 }, { ptr, i64 } { ptr @tn.str.49, i64 5 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 7 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 3 }, { ptr, i64 } { ptr @tn.str.55, i64 5 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 9 }, { ptr, i64 } { ptr @tn.str.58, i64 7 }, { ptr, i64 } { ptr @tn.str.59, i64 4 }, { ptr, i64 } { ptr @tn.str.60, i64 16 }, { ptr, i64 } { ptr @tn.str.61, i64 10 }, { ptr, i64 } { ptr @tn.str.62, i64 8 }, { ptr, i64 } { ptr @tn.str.63, i64 9 }, { ptr, i64 } { ptr @tn.str.64, i64 5 }, { ptr, i64 } { ptr @tn.str.65, i64 12 }, { ptr, i64 } { ptr @tn.str.66, i64 7 }, { ptr, i64 } { ptr @tn.str.67, i64 6 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 19 }, { ptr, i64 } { ptr @tn.str.70, i64 13 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 7 }, { ptr, i64 } { ptr @tn.str.73, i64 8 }, { ptr, i64 } { ptr @tn.str.74, i64 5 }, { ptr, i64 } { ptr @tn.str.75, i64 8 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 4 }, { ptr, i64 } { ptr @tn.str.78, i64 6 }, { ptr, i64 } { ptr @tn.str.79, i64 6 }, { ptr, i64 } { ptr @tn.str.80, i64 10 }] @str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.82 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.86 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.87 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.88 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.89 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.90 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.84 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.85 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.89 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.90 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.91 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.92 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.93 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.94 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.95 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.96 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.97 = private unnamed_addr constant [23 x i8] c"lerp(0, 10, 0.5) = {}\0A\00", align 1 -@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.99 = private unnamed_addr constant [23 x i8] c"lerp(0, 10, 0.5) = {}\0A\00", align 1 -@str.100 = private unnamed_addr constant [24 x i8] c"lerp(0, 10, 0.25) = {}\0A\00", align 1 +@str.97 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.98 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.99 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.100 = private unnamed_addr constant [23 x i8] c"lerp(0, 10, 0.5) = {}\0A\00", align 1 @str.101 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.102 = private unnamed_addr constant [24 x i8] c"lerp(0, 10, 0.25) = {}\0A\00", align 1 -@str.103 = private unnamed_addr constant [9 x i8] c"Lerpable\00", align 1 -@str.104 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.105 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.106 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.102 = private unnamed_addr constant [23 x i8] c"lerp(0, 10, 0.5) = {}\0A\00", align 1 +@str.103 = private unnamed_addr constant [24 x i8] c"lerp(0, 10, 0.25) = {}\0A\00", align 1 +@str.104 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.105 = private unnamed_addr constant [24 x i8] c"lerp(0, 10, 0.25) = {}\0A\00", align 1 +@str.106 = private unnamed_addr constant [9 x i8] c"Lerpable\00", align 1 +@str.107 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.108 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.109 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [4 x i8] c"ctx\00" -@fld.str.107 = private constant [5 x i8] c"lerp\00" -@field_names = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str, i64 3 }, { ptr, i64 } { ptr @fld.str.107, i64 4 }] -@str.108 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.109 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.110 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.111 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.112 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.113 = private constant [5 x i8] c"file\00" -@fld.str.114 = private constant [5 x i8] c"line\00" -@fld.str.115 = private constant [4 x i8] c"col\00" -@fld.str.116 = private constant [5 x i8] c"func\00" -@field_names.117 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.113, i64 4 }, { ptr, i64 } { ptr @fld.str.114, i64 4 }, { ptr, i64 } { ptr @fld.str.115, i64 3 }, { ptr, i64 } { ptr @fld.str.116, i64 4 }] -@str.118 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.119 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.120 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.121 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.123 = private constant [4 x i8] c"ctx\00" -@fld.str.124 = private constant [6 x i8] c"alloc\00" -@fld.str.125 = private constant [8 x i8] c"dealloc\00" -@field_names.126 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.123, i64 3 }, { ptr, i64 } { ptr @fld.str.124, i64 5 }, { ptr, i64 } { ptr @fld.str.125, i64 7 }] -@str.127 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.128 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.130 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.132 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.133 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.134 = private unnamed_addr constant [4 x i8] c"GPA\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.138 = private constant [12 x i8] c"alloc_count\00" -@field_names.139 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.138, i64 11 }] -@str.140 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.141 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.142 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.143 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.144 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.145 = private constant [5 x i8] c"next\00" -@fld.str.146 = private constant [4 x i8] c"cap\00" -@field_names.147 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.145, i64 4 }, { ptr, i64 } { ptr @fld.str.146, i64 3 }] -@str.148 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.149 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.151 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.153 = private constant [6 x i8] c"first\00" -@fld.str.154 = private constant [10 x i8] c"end_index\00" -@fld.str.155 = private constant [7 x i8] c"parent\00" -@field_names.156 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.153, i64 5 }, { ptr, i64 } { ptr @fld.str.154, i64 9 }, { ptr, i64 } { ptr @fld.str.155, i64 6 }] -@str.157 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.158 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.159 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.160 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.161 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.162 = private constant [4 x i8] c"buf\00" -@fld.str.163 = private constant [4 x i8] c"len\00" -@fld.str.164 = private constant [4 x i8] c"pos\00" -@field_names.165 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.162, i64 3 }, { ptr, i64 } { ptr @fld.str.163, i64 3 }, { ptr, i64 } { ptr @fld.str.164, i64 3 }] -@str.166 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.167 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.168 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.169 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.170 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.171 = private constant [7 x i8] c"parent\00" -@fld.str.172 = private constant [12 x i8] c"alloc_count\00" -@fld.str.173 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.174 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.175 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.171, i64 6 }, { ptr, i64 } { ptr @fld.str.172, i64 11 }, { ptr, i64 } { ptr @fld.str.173, i64 13 }, { ptr, i64 } { ptr @fld.str.174, i64 17 }] -@str.176 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.177 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.181 = private constant [10 x i8] c"allocator\00" -@fld.str.182 = private constant [5 x i8] c"data\00" -@field_names.183 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.181, i64 9 }, { ptr, i64 } { ptr @fld.str.182, i64 4 }] -@str.184 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.185 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.187 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.110 = private constant [5 x i8] c"lerp\00" +@field_names = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str, i64 3 }, { ptr, i64 } { ptr @fld.str.110, i64 4 }] +@str.111 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.112 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.113 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.114 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.116 = private constant [5 x i8] c"file\00" +@fld.str.117 = private constant [5 x i8] c"line\00" +@fld.str.118 = private constant [4 x i8] c"col\00" +@fld.str.119 = private constant [5 x i8] c"func\00" +@field_names.120 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.116, i64 4 }, { ptr, i64 } { ptr @fld.str.117, i64 4 }, { ptr, i64 } { ptr @fld.str.118, i64 3 }, { ptr, i64 } { ptr @fld.str.119, i64 4 }] +@str.121 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.122 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.123 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.124 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.126 = private constant [4 x i8] c"ctx\00" +@fld.str.127 = private constant [6 x i8] c"alloc\00" +@fld.str.128 = private constant [8 x i8] c"dealloc\00" +@field_names.129 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.126, i64 3 }, { ptr, i64 } { ptr @fld.str.127, i64 5 }, { ptr, i64 } { ptr @fld.str.128, i64 7 }] +@str.130 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.131 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.133 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.135 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.136 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.137 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.138 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.141 = private constant [12 x i8] c"alloc_count\00" +@field_names.142 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.141, i64 11 }] +@str.143 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.144 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.145 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.148 = private constant [5 x i8] c"next\00" +@fld.str.149 = private constant [4 x i8] c"cap\00" +@field_names.150 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.148, i64 4 }, { ptr, i64 } { ptr @fld.str.149, i64 3 }] +@str.151 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.152 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.153 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.154 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.156 = private constant [6 x i8] c"first\00" +@fld.str.157 = private constant [10 x i8] c"end_index\00" +@fld.str.158 = private constant [7 x i8] c"parent\00" +@field_names.159 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.156, i64 5 }, { ptr, i64 } { ptr @fld.str.157, i64 9 }, { ptr, i64 } { ptr @fld.str.158, i64 6 }] +@str.160 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.161 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.162 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.163 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.165 = private constant [4 x i8] c"buf\00" +@fld.str.166 = private constant [4 x i8] c"len\00" +@fld.str.167 = private constant [4 x i8] c"pos\00" +@field_names.168 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.165, i64 3 }, { ptr, i64 } { ptr @fld.str.166, i64 3 }, { ptr, i64 } { ptr @fld.str.167, i64 3 }] +@str.169 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.170 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.171 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.172 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.174 = private constant [7 x i8] c"parent\00" +@fld.str.175 = private constant [12 x i8] c"alloc_count\00" +@fld.str.176 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.177 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.178 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.174, i64 6 }, { ptr, i64 } { ptr @fld.str.175, i64 11 }, { ptr, i64 } { ptr @fld.str.176, i64 13 }, { ptr, i64 } { ptr @fld.str.177, i64 17 }] +@str.179 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.180 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.181 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.182 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.184 = private constant [10 x i8] c"allocator\00" +@fld.str.185 = private constant [5 x i8] c"data\00" +@field_names.186 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.184, i64 9 }, { ptr, i64 } { ptr @fld.str.185, i64 4 }] +@str.187 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.188 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.189 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.190 = private unnamed_addr constant [3 x i8] c", \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 -@str.194 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.195 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.196 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.197 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.198 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.199 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.194 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.195 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.196 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.198 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.199 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.200 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.201 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.201 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.202 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.203 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.204 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.204 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.205 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.206 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.207 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.207 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.208 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.209 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.210 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.210 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.211 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.212 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.213 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.213 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.214 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.215 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.216 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.216 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.217 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.218 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.219 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.219 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.220 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.221 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.222 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.222 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.223 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.224 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.225 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.225 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.226 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.227 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.228 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 +@str.228 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.229 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.230 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.231 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.231 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.232 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.233 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.234 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.234 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 @str.235 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.236 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.237 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.237 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.238 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.239 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.240 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.240 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.241 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.242 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.243 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.243 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.244 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.245 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.246 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.246 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.247 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.248 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.249 = private unnamed_addr constant [6 x i8] c"**f32\00", align 1 +@str.249 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.250 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.251 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.252 = private unnamed_addr constant [10 x i8] c"*Lerpable\00", align 1 +@str.252 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 @str.253 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.254 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.255 = private unnamed_addr constant [6 x i8] c"**f32\00", align 1 +@str.256 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.257 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.258 = private unnamed_addr constant [10 x i8] c"*Lerpable\00", align 1 +@str.259 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind define internal float @f32.lerp(ptr %0, float %1, float %2, float %3) #0 { @@ -462,38 +469,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -506,50 +518,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -563,19 +703,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -592,15 +732,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -618,16 +758,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -644,17 +784,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -717,39 +857,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.189 + br label %while.hdr.211 -while.hdr.189: ; preds = %if.merge.194, %entry +while.hdr.211: ; preds = %if.merge.216, %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.190, label %while.exit.191 + br i1 %icmp, label %while.body.212, label %while.exit.213 -while.body.190: ; preds = %while.hdr.189 +while.body.212: ; preds = %while.hdr.211 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.192, label %if.else.193 + br i1 %icmpN, label %if.then.214, label %if.else.215 -while.exit.191: ; preds = %while.hdr.189 +while.exit.213: ; preds = %while.hdr.211 ret void -if.then.192: ; preds = %while.body.190 +if.then.214: ; preds = %while.body.212 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.194 + br label %if.merge.216 -if.else.193: ; preds = %while.body.190 +if.else.215: ; preds = %while.body.212 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.194 + br label %if.merge.216 -if.merge.194: ; preds = %if.else.193, %if.then.192 - %bp = phi i64 [ %addN, %if.then.192 ], [ %addN, %if.else.193 ] +if.merge.216: ; preds = %if.else.215, %if.then.214 + %bp = phi i64 [ %addN, %if.then.214 ], [ %addN, %if.else.215 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -762,37 +902,29 @@ if.merge.194: ; preds = %if.else.193, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.189 + br label %while.hdr.211 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.179, label %if.merge.180 - -if.then.179: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.180: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.181, label %if.merge.182 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.181: ; preds = %if.merge.180 +if.then.58: ; 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.182 + br label %if.merge.59 -if.merge.182: ; preds = %if.then.181, %if.merge.180 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -805,15 +937,15 @@ if.merge.182: ; preds = %if.then.181, %if.me 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.183, label %if.merge.184 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.183: ; preds = %if.merge.182 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.184 + br label %if.merge.61 -if.merge.184: ; preds = %if.then.183, %if.merge.182 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -826,15 +958,15 @@ if.merge.184: ; preds = %if.then.183, %if.me 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.185, label %if.merge.186 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.185: ; preds = %if.merge.184 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.186 + br label %if.merge.63 -if.merge.186: ; preds = %if.then.185, %if.merge.184 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -847,65 +979,116 @@ if.merge.186: ; preds = %if.then.185, %if.me 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.187, label %if.merge.188 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.187: ; preds = %if.merge.186 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.188 + br label %if.merge.65 -if.merge.188: ; preds = %if.then.187, %if.merge.186 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.209, label %if.merge.210 + +if.then.209: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.210: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.195 + br label %while.hdr.217 -while.hdr.195: ; preds = %if.merge.199, %if.merge.188 +while.hdr.217: ; preds = %if.merge.221, %if.merge.210 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.196, label %while.exit.197 + br i1 %icmpN, label %while.body.218, label %while.exit.219 -while.body.196: ; preds = %while.hdr.195 +while.body.218: ; preds = %while.hdr.217 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.198, label %if.merge.199 + br i1 %icmpN, label %if.then.220, label %if.merge.221 -while.exit.197: ; preds = %if.then.198, %while.hdr.195 +while.exit.219: ; preds = %if.then.220, %while.hdr.217 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.198: ; preds = %while.body.196 - br label %while.exit.197 +if.then.220: ; preds = %while.body.218 + br label %while.exit.219 -if.merge.199: ; preds = %while.body.196 +if.merge.221: ; preds = %while.body.218 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.195 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.217 } ; Function Attrs: nounwind @@ -984,7 +1167,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -992,486 +1175,513 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 22, label %match.arm.44 - i64 24, label %match.arm.44 - i64 26, label %match.arm.44 - i64 28, label %match.arm.44 - i64 31, label %match.arm.44 - i64 33, label %match.arm.44 - i64 35, label %match.arm.44 - i64 44, label %match.arm.48 - i64 36, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 22, label %match.arm.43 + i64 24, label %match.arm.43 + i64 26, label %match.arm.43 + i64 28, label %match.arm.43 + i64 31, label %match.arm.43 + i64 33, label %match.arm.43 + i64 35, label %match.arm.43 + i64 36, label %match.arm.47 + i64 45, label %match.arm.47 + i64 37, label %match.arm.48 + i64 43, label %match.arm.48 + i64 18, label %match.arm.49 + i64 23, label %match.arm.49 + i64 25, label %match.arm.49 + i64 27, label %match.arm.49 + i64 29, label %match.arm.49 + i64 30, label %match.arm.49 + i64 32, label %match.arm.49 + i64 34, label %match.arm.49 + i64 38, label %match.arm.49 + i64 39, label %match.arm.49 + i64 40, label %match.arm.49 + i64 41, label %match.arm.49 i64 42, label %match.arm.49 - i64 18, label %match.arm.50 - i64 23, label %match.arm.50 - i64 25, label %match.arm.50 - i64 27, label %match.arm.50 - i64 29, label %match.arm.50 - i64 30, label %match.arm.50 - i64 32, label %match.arm.50 - i64 34, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 39, label %match.arm.50 - i64 40, label %match.arm.50 - i64 41, label %match.arm.50 - i64 43, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 49, label %match.arm.50 - i64 50, label %match.arm.50 - i64 13, label %match.arm.52 + i64 44, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 49, label %match.arm.49 + i64 50, label %match.arm.49 + i64 51, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.154, %dispatch.merge.140, %dispatch.merge.132, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.156, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [75 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 22, label %dispatch.case.75 - i64 24, label %dispatch.case.76 - i64 26, label %dispatch.case.77 - i64 28, label %dispatch.case.78 - i64 31, label %dispatch.case.79 - i64 33, label %dispatch.case.80 - i64 35, label %dispatch.case.81 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 22, label %dispatch.case.99 + i64 24, label %dispatch.case.100 + i64 26, label %dispatch.case.101 + i64 28, label %dispatch.case.102 + i64 31, label %dispatch.case.103 + i64 33, label %dispatch.case.104 + i64 35, label %dispatch.case.105 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.157 [ + i64 36, label %dispatch.case.158 + i64 45, label %dispatch.case.159 + ] + +match.arm.48: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.171 [ + i64 37, label %dispatch.case.172 + i64 43, label %dispatch.case.173 + ] + +match.arm.49: ; preds = %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.185 [ + i64 18, label %dispatch.case.186 + i64 23, label %dispatch.case.187 + i64 25, label %dispatch.case.188 + i64 27, label %dispatch.case.189 + i64 29, label %dispatch.case.190 + i64 30, label %dispatch.case.191 + i64 32, label %dispatch.case.192 + i64 34, label %dispatch.case.193 + i64 38, label %dispatch.case.194 + i64 39, label %dispatch.case.195 + i64 40, label %dispatch.case.196 + i64 41, label %dispatch.case.197 + i64 42, label %dispatch.case.198 + i64 44, label %dispatch.case.199 + i64 46, label %dispatch.case.200 + i64 47, label %dispatch.case.201 + i64 48, label %dispatch.case.202 + i64 49, label %dispatch.case.203 + i64 50, label %dispatch.case.204 + i64 51, label %dispatch.case.205 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.133 [ - i64 44, label %dispatch.case.134 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.141 [ - i64 36, label %dispatch.case.142 - i64 42, label %dispatch.case.143 - ] - -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.155 [ - i64 18, label %dispatch.case.156 - i64 23, label %dispatch.case.157 - i64 25, label %dispatch.case.158 - i64 27, label %dispatch.case.159 - i64 29, label %dispatch.case.160 - i64 30, label %dispatch.case.161 - i64 32, label %dispatch.case.162 - i64 34, label %dispatch.case.163 - i64 37, label %dispatch.case.164 - i64 38, label %dispatch.case.165 - i64 39, label %dispatch.case.166 - i64 40, label %dispatch.case.167 - i64 41, label %dispatch.case.168 - i64 43, label %dispatch.case.169 - i64 45, label %dispatch.case.170 - i64 46, label %dispatch.case.171 - i64 47, label %dispatch.case.172 - i64 48, label %dispatch.case.173 - i64 49, label %dispatch.case.174 - i64 50, label %dispatch.case.175 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [73 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [75 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { ptr, ptr }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Lerpable(ptr %0, { ptr, ptr } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) + %ua.load45 = load { ptr, ptr }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Lerpable(ptr %0, { ptr, ptr } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.132: ; preds = %dispatch.case.134, %dispatch.default.133 +dispatch.case.105: ; preds = %match.arm.43 + %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.156: ; preds = %dispatch.case.159, %dispatch.case.158, %dispatch.default.157 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.133: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.132 +dispatch.default.157: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.156 -dispatch.case.134: ; preds = %match.arm.48 - %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr - %ua.load82 = load [1 x { i64, i64 }], ptr %ua.ptr81, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load82) +dispatch.case.158: ; preds = %match.arm.47 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [4 x i64], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load86) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.132 + br label %dispatch.merge.156 -dispatch.merge.140: ; preds = %dispatch.case.143, %dispatch.case.142, %dispatch.default.141 +dispatch.case.159: ; preds = %match.arm.47 + %ua.raw88 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr89 = inttoptr i64 %ua.raw88 to ptr + %ua.load90 = load [1 x { i64, i64 }], ptr %ua.ptr89, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load90) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.156 + +dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.141: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.140 +dispatch.default.171: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.170 -dispatch.case.142: ; preds = %match.arm.49 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.172: ; preds = %match.arm.48 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.case.143: ; preds = %match.arm.49 - %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr - %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load91) +dispatch.case.173: ; preds = %match.arm.48 + %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr + %ua.load99 = load { ptr, i64 }, ptr %ua.ptr98, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load99) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.merge.154: ; preds = %dispatch.case.175, %dispatch.case.174, %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.default.155 +dispatch.merge.184: ; preds = %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.155: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.154 +dispatch.default.185: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.184 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw94 to ptr +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw102 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.154 + br label %dispatch.merge.184 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 - %iNp97 = inttoptr i64 %ua.raw96 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp97) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 + %iNp105 = inttoptr i64 %ua.raw104 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp105) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 - %iNp100 = inttoptr i64 %ua.raw99 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp100) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 + %iNp108 = inttoptr i64 %ua.raw107 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp108) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 - %iNp103 = inttoptr i64 %ua.raw102 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp103) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 + %iNp111 = inttoptr i64 %ua.raw110 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp111) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 - %iNp106 = inttoptr i64 %ua.raw105 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp106) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %iNp114 = inttoptr i64 %ua.raw113 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp114) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 - %iNp109 = inttoptr i64 %ua.raw108 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp109) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 + %iNp117 = inttoptr i64 %ua.raw116 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp117) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 - %iNp112 = inttoptr i64 %ua.raw111 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp112) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 + %iNp120 = inttoptr i64 %ua.raw119 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %iNp115 = inttoptr i64 %ua.raw114 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp115) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 + %iNp123 = inttoptr i64 %ua.raw122 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp123) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 - %iNp118 = inttoptr i64 %ua.raw117 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp118) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 + %iNp126 = inttoptr i64 %ua.raw125 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp126) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 - %iNp121 = inttoptr i64 %ua.raw120 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp121) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 + %iNp129 = inttoptr i64 %ua.raw128 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp129) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 - %iNp124 = inttoptr i64 %ua.raw123 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp124) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 + %iNp132 = inttoptr i64 %ua.raw131 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp132) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 - %iNp127 = inttoptr i64 %ua.raw126 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp127) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 + %iNp135 = inttoptr i64 %ua.raw134 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp135) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.168: ; preds = %match.arm.50 - %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 - %iNp130 = inttoptr i64 %ua.raw129 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp130) +dispatch.case.198: ; preds = %match.arm.49 + %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 + %iNp138 = inttoptr i64 %ua.raw137 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp138) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.169: ; preds = %match.arm.50 - %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 - %iNp133 = inttoptr i64 %ua.raw132 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp133) +dispatch.case.199: ; preds = %match.arm.49 + %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 + %iNp141 = inttoptr i64 %ua.raw140 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp141) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.170: ; preds = %match.arm.50 - %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 - %iNp136 = inttoptr i64 %ua.raw135 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp136) +dispatch.case.200: ; preds = %match.arm.49 + %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 + %iNp144 = inttoptr i64 %ua.raw143 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp144) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.171: ; preds = %match.arm.50 - %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 - %iNp139 = inttoptr i64 %ua.raw138 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp139) +dispatch.case.201: ; preds = %match.arm.49 + %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 + %iNp147 = inttoptr i64 %ua.raw146 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp147) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.172: ; preds = %match.arm.50 - %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 - %iNp142 = inttoptr i64 %ua.raw141 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp142) +dispatch.case.202: ; preds = %match.arm.49 + %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 + %iNp150 = inttoptr i64 %ua.raw149 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp150) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.173: ; preds = %match.arm.50 - %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 - %iNp145 = inttoptr i64 %ua.raw144 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp145) +dispatch.case.203: ; preds = %match.arm.49 + %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 + %iNp153 = inttoptr i64 %ua.raw152 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp153) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.174: ; preds = %match.arm.50 - %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 - %iNp148 = inttoptr i64 %ua.raw147 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_f32(ptr %0, ptr %iNp148) +dispatch.case.204: ; preds = %match.arm.49 + %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 + %iNp156 = inttoptr i64 %ua.raw155 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_f32(ptr %0, ptr %iNp156) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.175: ; preds = %match.arm.50 - %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 - %iNp151 = inttoptr i64 %ua.raw150 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Lerpable(ptr %0, ptr %iNp151) +dispatch.case.205: ; preds = %match.arm.49 + %ua.raw158 = extractvalue { i64, i64 } %loadN, 1 + %iNp159 = inttoptr i64 %ua.raw158 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Lerpable(ptr %0, ptr %iNp159) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 } ; Function Attrs: nounwind @@ -1480,7 +1690,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.82, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.85, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1511,7 +1721,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1529,9 +1739,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1569,14 +1779,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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 @@ -1584,7 +1794,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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 @@ -1594,13 +1804,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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 @@ -1608,7 +1818,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1620,83 +1830,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, 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.89, 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.90, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1724,18 +1858,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1748,6 +1919,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, 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.96, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, 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.98, 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 @@ -1756,11 +1966,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1783,7 +1993,7 @@ entry: define internal void @print__ct_s648b4567d2e0e089__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.97, i64 22 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.100, i64 22 }, ptr %alloca, align 8 %allocaN = alloca float, align 4 store float %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1800,7 +2010,7 @@ entry: %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.98, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.101, 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 19) @@ -1829,7 +2039,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.99, i64 22 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.102, i64 22 }) ret { ptr, i64 } %call } @@ -1848,7 +2058,7 @@ entry: define internal void @print__ct_s865ed00fd204d3cc__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.100, i64 23 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.103, i64 23 }, ptr %alloca, align 8 %allocaN = alloca float, align 4 store float %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1865,7 +2075,7 @@ entry: %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.101, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.104, 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 20) @@ -1894,7 +2104,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.102, i64 23 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.105, i64 23 }) ret { ptr, i64 } %call } @@ -1903,35 +2113,35 @@ define internal { ptr, i64 } @struct_to_string__Lerpable(ptr %0, { ptr, ptr } %1 entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.103, i64 8 }, { ptr, i64 } { ptr @str.104, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.106, i64 8 }, { ptr, i64 } { ptr @str.107, 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.82 + br label %while.hdr.106 -while.hdr.82: ; preds = %fv.merge, %entry +while.hdr.106: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.83, label %while.exit.84 + br i1 %icmp, label %while.body.107, label %while.exit.108 -while.body.83: ; preds = %while.hdr.82 +while.body.107: ; preds = %while.hdr.106 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.85, label %if.merge.86 + br i1 %icmpN, label %if.then.109, label %if.merge.110 -while.exit.84: ; preds = %while.hdr.82 +while.exit.108: ; preds = %while.hdr.106 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.105, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 1 }) ret { ptr, i64 } %callN -if.then.85: ; preds = %while.body.83 +if.then.109: ; preds = %while.body.107 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.86 + br label %if.merge.110 -if.merge.86: ; preds = %if.then.85, %while.body.83 +if.merge.110: ; preds = %if.then.109, %while.body.107 %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, i64 0, i64 %loadN @@ -1939,7 +2149,7 @@ if.merge.86: ; preds = %if.then.85, %while. %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.108, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -1957,18 +2167,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.82 + br label %while.hdr.106 -fv.default: ; preds = %if.merge.86 +fv.default: ; preds = %if.merge.110 br label %fv.merge -fv.case: ; preds = %if.merge.86 +fv.case: ; preds = %if.merge.110 %fv.field = extractvalue { 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.86 +fv.case17: ; preds = %if.merge.110 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -1980,43 +2190,43 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.109, i64 15 }, { ptr, i64 } { ptr @str.110, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.112, i64 15 }, { ptr, i64 } { ptr @str.113, 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.87 + br label %while.hdr.111 -while.hdr.87: ; preds = %fv.merge, %entry +while.hdr.111: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.88, label %while.exit.89 + br i1 %icmp, label %while.body.112, label %while.exit.113 -while.body.88: ; preds = %while.hdr.87 +while.body.112: ; preds = %while.hdr.111 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.90, label %if.merge.91 + br i1 %icmpN, label %if.then.114, label %if.merge.115 -while.exit.89: ; preds = %while.hdr.87 +while.exit.113: ; preds = %while.hdr.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 1 }) ret { ptr, i64 } %callN -if.then.90: ; preds = %while.body.88 +if.then.114: ; preds = %while.body.112 %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 }) + %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 - br label %if.merge.91 + br label %if.merge.115 -if.merge.91: ; preds = %if.then.90, %while.body.88 +if.merge.115: ; preds = %if.then.114, %while.body.112 %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.117, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.120, 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.118, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, 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 @@ -2036,12 +2246,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.87 + br label %while.hdr.111 -fv.default: ; preds = %if.merge.91 +fv.default: ; preds = %if.merge.115 br label %fv.merge -fv.case: ; preds = %if.merge.91 +fv.case: ; preds = %if.merge.115 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2049,19 +2259,19 @@ fv.case: ; preds = %if.merge.91 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.91 +fv.case17: ; preds = %if.merge.115 %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.91 +fv.case20: ; preds = %if.merge.115 %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.91 +fv.case24: ; preds = %if.merge.115 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2075,43 +2285,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.119, i64 9 }, { ptr, i64 } { ptr @str.120, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.122, i64 9 }, { ptr, i64 } { ptr @str.123, 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.92 + br label %while.hdr.116 -while.hdr.92: ; preds = %fv.merge, %entry +while.hdr.116: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.93, label %while.exit.94 + br i1 %icmp, label %while.body.117, label %while.exit.118 -while.body.93: ; preds = %while.hdr.92 +while.body.117: ; preds = %while.hdr.116 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.95, label %if.merge.96 + br i1 %icmpN, label %if.then.119, label %if.merge.120 -while.exit.94: ; preds = %while.hdr.92 +while.exit.118: ; preds = %while.hdr.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 1 }) ret { ptr, i64 } %callN -if.then.95: ; preds = %while.body.93 +if.then.119: ; preds = %while.body.117 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.96 + br label %if.merge.120 -if.merge.96: ; preds = %if.then.95, %while.body.93 +if.merge.120: ; preds = %if.then.119, %while.body.117 %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.126, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.129, 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.127, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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 @@ -2130,24 +2340,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.92 + br label %while.hdr.116 -fv.default: ; preds = %if.merge.96 +fv.default: ; preds = %if.merge.120 br label %fv.merge -fv.case: ; preds = %if.merge.96 +fv.case: ; preds = %if.merge.120 %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.96 +fv.case17: ; preds = %if.merge.120 %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.96 +fv.case21: ; preds = %if.merge.120 %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 @@ -2159,43 +2369,43 @@ 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.128, i64 10 }, { ptr, i64 } { ptr @str.129, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.131, i64 10 }, { ptr, i64 } { ptr @str.132, 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.97 + br label %while.hdr.121 -while.hdr.97: ; preds = %if.merge.101, %entry +while.hdr.121: ; preds = %if.merge.125, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.98, label %while.exit.99 + br i1 %icmp, label %while.body.122, label %while.exit.123 -while.body.98: ; preds = %while.hdr.97 +while.body.122: ; preds = %while.hdr.121 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.100, label %if.merge.101 + br i1 %icmpN, label %if.then.124, label %if.merge.125 -while.exit.99: ; preds = %while.hdr.97 +while.exit.123: ; preds = %while.hdr.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 1 }) ret { ptr, i64 } %callN -if.then.100: ; preds = %while.body.98 +if.then.124: ; preds = %while.body.122 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.101 + br label %if.merge.125 -if.merge.101: ; preds = %if.then.100, %while.body.98 +if.merge.125: ; preds = %if.then.124, %while.body.122 %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.132, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.135, 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.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2206,7 +2416,7 @@ if.merge.101: ; preds = %if.then.100, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.97 + br label %while.hdr.121 } ; Function Attrs: nounwind @@ -2214,43 +2424,43 @@ 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.134, i64 3 }, { ptr, i64 } { ptr @str.135, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.137, i64 3 }, { ptr, i64 } { ptr @str.138, 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.102 + br label %while.hdr.126 -while.hdr.102: ; preds = %fv.merge, %entry +while.hdr.126: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.103, label %while.exit.104 + br i1 %icmp, label %while.body.127, label %while.exit.128 -while.body.103: ; preds = %while.hdr.102 +while.body.127: ; preds = %while.hdr.126 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.105, label %if.merge.106 + br i1 %icmpN, label %if.then.129, label %if.merge.130 -while.exit.104: ; preds = %while.hdr.102 +while.exit.128: ; preds = %while.hdr.126 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 1 }) ret { ptr, i64 } %callN -if.then.105: ; preds = %while.body.103 +if.then.129: ; preds = %while.body.127 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.106 + br label %if.merge.130 -if.merge.106: ; preds = %if.then.105, %while.body.103 +if.merge.130: ; preds = %if.then.129, %while.body.127 %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.139, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.142, 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.140, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, 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 @@ -2267,12 +2477,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.102 + br label %while.hdr.126 -fv.default: ; preds = %if.merge.106 +fv.default: ; preds = %if.merge.130 br label %fv.merge -fv.case: ; preds = %if.merge.106 +fv.case: ; preds = %if.merge.130 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2283,43 +2493,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.141, i64 10 }, { ptr, i64 } { ptr @str.142, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.144, i64 10 }, { ptr, i64 } { ptr @str.145, 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.107 + br label %while.hdr.131 -while.hdr.107: ; preds = %fv.merge, %entry +while.hdr.131: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.108, label %while.exit.109 + br i1 %icmp, label %while.body.132, label %while.exit.133 -while.body.108: ; preds = %while.hdr.107 +while.body.132: ; preds = %while.hdr.131 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.110, label %if.merge.111 + br i1 %icmpN, label %if.then.134, label %if.merge.135 -while.exit.109: ; preds = %while.hdr.107 +while.exit.133: ; preds = %while.hdr.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 1 }) ret { ptr, i64 } %callN -if.then.110: ; preds = %while.body.108 +if.then.134: ; preds = %while.body.132 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.111 + br label %if.merge.135 -if.merge.111: ; preds = %if.then.110, %while.body.108 +if.merge.135: ; preds = %if.then.134, %while.body.132 %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.147, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.150, 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.148, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, 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 @@ -2337,18 +2547,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.107 + br label %while.hdr.131 -fv.default: ; preds = %if.merge.111 +fv.default: ; preds = %if.merge.135 br label %fv.merge -fv.case: ; preds = %if.merge.111 +fv.case: ; preds = %if.merge.135 %fv.field = extractvalue { ptr, i64 } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 27, i64 undef }, i64 %pNi, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.111 +fv.case17: ; preds = %if.merge.135 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2359,43 +2569,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.149, i64 5 }, { ptr, i64 } { ptr @str.150, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.152, i64 5 }, { ptr, i64 } { ptr @str.153, 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.112 + br label %while.hdr.136 -while.hdr.112: ; preds = %fv.merge, %entry +while.hdr.136: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.113, label %while.exit.114 + br i1 %icmp, label %while.body.137, label %while.exit.138 -while.body.113: ; preds = %while.hdr.112 +while.body.137: ; preds = %while.hdr.136 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.115, label %if.merge.116 + br i1 %icmpN, label %if.then.139, label %if.merge.140 -while.exit.114: ; preds = %while.hdr.112 +while.exit.138: ; preds = %while.hdr.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 1 }) ret { ptr, i64 } %callN -if.then.115: ; preds = %while.body.113 +if.then.139: ; preds = %while.body.137 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.116 + br label %if.merge.140 -if.merge.116: ; preds = %if.then.115, %while.body.113 +if.merge.140: ; preds = %if.then.139, %while.body.137 %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.156, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.159, 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.157, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2414,23 +2624,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.112 + br label %while.hdr.136 -fv.default: ; preds = %if.merge.116 +fv.default: ; preds = %if.merge.140 br label %fv.merge -fv.case: ; preds = %if.merge.116 +fv.case: ; preds = %if.merge.140 %fv.field = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 27, i64 undef }, i64 %pNi, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.116 +fv.case17: ; preds = %if.merge.140 %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.116 +fv.case20: ; preds = %if.merge.140 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2444,43 +2654,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.158, i64 8 }, { ptr, i64 } { ptr @str.159, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.161, i64 8 }, { ptr, i64 } { ptr @str.162, 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 + br label %while.hdr.141 -while.hdr.117: ; preds = %fv.merge, %entry +while.hdr.141: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.118, label %while.exit.119 + br i1 %icmp, label %while.body.142, label %while.exit.143 -while.body.118: ; preds = %while.hdr.117 +while.body.142: ; preds = %while.hdr.141 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.120, label %if.merge.121 + br i1 %icmpN, label %if.then.144, label %if.merge.145 -while.exit.119: ; preds = %while.hdr.117 +while.exit.143: ; preds = %while.hdr.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.160, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, i64 1 }) ret { ptr, i64 } %callN -if.then.120: ; preds = %while.body.118 +if.then.144: ; preds = %while.body.142 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.121 + br label %if.merge.145 -if.merge.121: ; preds = %if.then.120, %while.body.118 +if.merge.145: ; preds = %if.then.144, %while.body.142 %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.165, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.168, 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.166, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, 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 @@ -2499,23 +2709,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.117 + br label %while.hdr.141 -fv.default: ; preds = %if.merge.121 +fv.default: ; preds = %if.merge.145 br label %fv.merge -fv.case: ; preds = %if.merge.121 +fv.case: ; preds = %if.merge.145 %fv.field = extractvalue { ptr, i64, i64 } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 30, i64 undef }, i64 %pNi, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.121 +fv.case17: ; preds = %if.merge.145 %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.121 +fv.case20: ; preds = %if.merge.145 %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 @@ -2526,43 +2736,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.167, i64 17 }, { ptr, i64 } { ptr @str.168, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.170, i64 17 }, { ptr, i64 } { ptr @str.171, 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 + br label %while.hdr.146 -while.hdr.122: ; preds = %fv.merge, %entry +while.hdr.146: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.123, label %while.exit.124 + br i1 %icmp, label %while.body.147, label %while.exit.148 -while.body.123: ; preds = %while.hdr.122 +while.body.147: ; preds = %while.hdr.146 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.125, label %if.merge.126 + br i1 %icmpN, label %if.then.149, label %if.merge.150 -while.exit.124: ; preds = %while.hdr.122 +while.exit.148: ; preds = %while.hdr.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) ret { ptr, i64 } %callN -if.then.125: ; preds = %while.body.123 +if.then.149: ; preds = %while.body.147 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.126 + br label %if.merge.150 -if.merge.126: ; preds = %if.then.125, %while.body.123 +if.merge.150: ; preds = %if.then.149, %while.body.147 %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.175, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.178, 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.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, 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 @@ -2582,12 +2792,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.122 + br label %while.hdr.146 -fv.default: ; preds = %if.merge.126 +fv.default: ; preds = %if.merge.150 br label %fv.merge -fv.case: ; preds = %if.merge.126 +fv.case: ; preds = %if.merge.150 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2595,17 +2805,17 @@ fv.case: ; preds = %if.merge.126 %fv.val = insertvalue { i64, i64 } { i64 21, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.126 +fv.case17: ; preds = %if.merge.150 %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.126 +fv.case20: ; preds = %if.merge.150 %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.126 +fv.case23: ; preds = %if.merge.150 %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 @@ -2616,43 +2826,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.177, i64 7 }, { ptr, i64 } { ptr @str.178, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.180, i64 7 }, { ptr, i64 } { ptr @str.181, 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 + br label %while.hdr.151 -while.hdr.127: ; preds = %fv.merge, %entry +while.hdr.151: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.128, label %while.exit.129 + br i1 %icmp, label %while.body.152, label %while.exit.153 -while.body.128: ; preds = %while.hdr.127 +while.body.152: ; preds = %while.hdr.151 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.130, label %if.merge.131 + br i1 %icmpN, label %if.then.154, label %if.merge.155 -while.exit.129: ; preds = %while.hdr.127 +while.exit.153: ; preds = %while.hdr.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) ret { ptr, i64 } %callN -if.then.130: ; preds = %while.body.128 +if.then.154: ; preds = %while.body.152 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.131 + br label %if.merge.155 -if.merge.131: ; preds = %if.then.130, %while.body.128 +if.merge.155: ; preds = %if.then.154, %while.body.152 %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.183, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.186, 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.184, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, 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 @@ -2670,12 +2880,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.127 + br label %while.hdr.151 -fv.default: ; preds = %if.merge.131 +fv.default: ; preds = %if.merge.155 br label %fv.merge -fv.case: ; preds = %if.merge.131 +fv.case: ; preds = %if.merge.155 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2683,46 +2893,96 @@ fv.case: ; preds = %if.merge.131 %fv.val = insertvalue { i64, i64 } { i64 21, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.131 +fv.case17: ; preds = %if.merge.155 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.188, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.160 + +while.hdr.160: ; preds = %if.merge.164, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.161, label %while.exit.162 + +while.body.161: ; preds = %while.hdr.160 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.163, label %if.merge.164 + +while.exit.162: ; preds = %while.hdr.160 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + ret { ptr, i64 } %call + +if.then.163: ; preds = %while.body.161 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.164 + +if.merge.164: ; preds = %if.then.163, %while.body.161 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.160 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.185, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 -while.hdr.135: ; preds = %if.merge.139, %entry +while.hdr.165: ; preds = %if.merge.169, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.136, label %while.exit.137 + br i1 %icmp, label %while.body.166, label %while.exit.167 -while.body.136: ; preds = %while.hdr.135 +while.body.166: ; preds = %while.hdr.165 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.138, label %if.merge.139 + br i1 %icmpN, label %if.then.168, label %if.merge.169 -while.exit.137: ; preds = %while.hdr.135 +while.exit.167: ; preds = %while.hdr.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %call -if.then.138: ; preds = %while.body.136 +if.then.168: ; preds = %while.body.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 2 }) + %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.139 + br label %if.merge.169 -if.merge.139: ; preds = %if.then.138, %while.body.136 +if.merge.169: ; preds = %if.then.168, %while.body.166 %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 @@ -2740,7 +3000,7 @@ if.merge.139: ; preds = %if.then.138, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 } ; Function Attrs: nounwind @@ -2749,35 +3009,35 @@ 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.188, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.194, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 -while.hdr.144: ; preds = %if.merge.148, %entry +while.hdr.174: ; preds = %if.merge.178, %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.145, label %while.exit.146 + br i1 %icmp, label %while.body.175, label %while.exit.176 -while.body.145: ; preds = %while.hdr.144 +while.body.175: ; preds = %while.hdr.174 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.147, label %if.merge.148 + br i1 %icmpN, label %if.then.177, label %if.merge.178 -while.exit.146: ; preds = %while.hdr.144 +while.exit.176: ; preds = %while.hdr.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 1 }) ret { ptr, i64 } %call -if.then.147: ; preds = %while.body.145 +if.then.177: ; preds = %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.148 + br label %if.merge.178 -if.merge.148: ; preds = %if.then.147, %while.body.145 +if.merge.178: ; preds = %if.then.177, %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2794,7 +3054,7 @@ if.merge.148: ; preds = %if.then.147, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 } ; Function Attrs: nounwind @@ -2803,35 +3063,35 @@ 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.191, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.197, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 -while.hdr.149: ; preds = %if.merge.153, %entry +while.hdr.179: ; preds = %if.merge.183, %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.150, label %while.exit.151 + br i1 %icmp, label %while.body.180, label %while.exit.181 -while.body.150: ; preds = %while.hdr.149 +while.body.180: ; preds = %while.hdr.179 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.152, label %if.merge.153 + br i1 %icmpN, label %if.then.182, label %if.merge.183 -while.exit.151: ; preds = %while.hdr.149 +while.exit.181: ; preds = %while.hdr.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 1 }) ret { ptr, i64 } %call -if.then.152: ; preds = %while.body.150 +if.then.182: ; preds = %while.body.180 %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 }) + %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 - br label %if.merge.153 + br label %if.merge.183 -if.merge.153: ; preds = %if.then.152, %while.body.150 +if.merge.183: ; preds = %if.then.182, %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2848,95 +3108,11 @@ if.merge.153: ; preds = %if.then.152, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 } ; 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.176, label %if.else.177 - -if.then.176: ; preds = %entry - br label %if.merge.178 - -if.else.177: ; 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.196, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.195, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.178 - -if.merge.178: ; preds = %if.else.177, %if.then.176 - %bp = phi { ptr, i64 } [ { ptr @str.194, i64 4 }, %if.then.176 ], [ %callN, %if.else.177 ] - 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.200, label %if.else.201 - -if.then.200: ; preds = %entry - br label %if.merge.202 - -if.else.201: ; 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.199, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.202 - -if.merge.202: ; preds = %if.else.201, %if.then.200 - %bp = phi { ptr, i64 } [ { ptr @str.197, i64 4 }, %if.then.200 ], [ %callN, %if.else.201 ] - 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.203, label %if.else.204 - -if.then.203: ; preds = %entry - br label %if.merge.205 - -if.else.204: ; 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.202, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.205 - -if.merge.205: ; preds = %if.else.204, %if.then.203 - %bp = phi { ptr, i64 } [ { ptr @str.200, i64 4 }, %if.then.203 ], [ %callN, %if.else.204 ] - 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 @@ -2954,12 +3130,96 @@ if.then.206: ; preds = %entry if.else.207: ; 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.205, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 5 }, { ptr, i64 } %callN) br label %if.merge.208 if.merge.208: ; preds = %if.else.207, %if.then.206 - %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.206 ], [ %callN, %if.else.207 ] + %bp = phi { ptr, i64 } [ { ptr @str.200, i64 4 }, %if.then.206 ], [ %callN, %if.else.207 ] + 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.222, label %if.else.223 + +if.then.222: ; preds = %entry + br label %if.merge.224 + +if.else.223: ; 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.205, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.224 + +if.merge.224: ; preds = %if.else.223, %if.then.222 + %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] + 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.225, label %if.else.226 + +if.then.225: ; preds = %entry + br label %if.merge.227 + +if.else.226: ; 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.208, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.227 + +if.merge.227: ; preds = %if.else.226, %if.then.225 + %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] + 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.228, label %if.else.229 + +if.then.228: ; preds = %entry + br label %if.merge.230 + +if.else.229: ; 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.211, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.230 + +if.merge.230: ; preds = %if.else.229, %if.then.228 + %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] ret { ptr, i64 } %bp } @@ -2974,20 +3234,20 @@ entry: 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.209, label %if.else.210 + br i1 %icmp, label %if.then.231, label %if.else.232 -if.then.209: ; preds = %entry - br label %if.merge.211 +if.then.231: ; preds = %entry + br label %if.merge.233 -if.else.210: ; preds = %entry +if.else.232: ; 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.208, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.211 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.233 -if.merge.211: ; preds = %if.else.210, %if.then.209 - %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.209 ], [ %callN, %if.else.210 ] +if.merge.233: ; preds = %if.else.232, %if.then.231 + %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] ret { ptr, i64 } %bp } @@ -3001,20 +3261,20 @@ entry: 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.212, label %if.else.213 + br i1 %icmp, label %if.then.234, label %if.else.235 -if.then.212: ; preds = %entry - br label %if.merge.214 +if.then.234: ; preds = %entry + br label %if.merge.236 -if.else.213: ; preds = %entry +if.else.235: ; 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.211, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.214 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.236 -if.merge.214: ; preds = %if.else.213, %if.then.212 - %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.212 ], [ %callN, %if.else.213 ] +if.merge.236: ; preds = %if.else.235, %if.then.234 + %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] ret { ptr, i64 } %bp } @@ -3029,20 +3289,20 @@ entry: 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.215, label %if.else.216 + br i1 %icmp, label %if.then.237, label %if.else.238 -if.then.215: ; preds = %entry - br label %if.merge.217 +if.then.237: ; preds = %entry + br label %if.merge.239 -if.else.216: ; preds = %entry +if.else.238: ; 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.214, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.217 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.239 -if.merge.217: ; preds = %if.else.216, %if.then.215 - %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.215 ], [ %callN, %if.else.216 ] +if.merge.239: ; preds = %if.else.238, %if.then.237 + %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] ret { ptr, i64 } %bp } @@ -3057,20 +3317,20 @@ entry: 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.218, label %if.else.219 + br i1 %icmp, label %if.then.240, label %if.else.241 -if.then.218: ; preds = %entry - br label %if.merge.220 +if.then.240: ; preds = %entry + br label %if.merge.242 -if.else.219: ; preds = %entry +if.else.241: ; 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.217, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.220 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.242 -if.merge.220: ; preds = %if.else.219, %if.then.218 - %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] +if.merge.242: ; preds = %if.else.241, %if.then.240 + %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] ret { ptr, i64 } %bp } @@ -3085,20 +3345,20 @@ entry: 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.221, label %if.else.222 + br i1 %icmp, label %if.then.243, label %if.else.244 -if.then.221: ; preds = %entry - br label %if.merge.223 +if.then.243: ; preds = %entry + br label %if.merge.245 -if.else.222: ; preds = %entry +if.else.244: ; 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.220, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.223 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.245 -if.merge.223: ; preds = %if.else.222, %if.then.221 - %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.221 ], [ %callN, %if.else.222 ] +if.merge.245: ; preds = %if.else.244, %if.then.243 + %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] ret { ptr, i64 } %bp } @@ -3113,20 +3373,20 @@ entry: 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.224, label %if.else.225 + br i1 %icmp, label %if.then.246, label %if.else.247 -if.then.224: ; preds = %entry - br label %if.merge.226 +if.then.246: ; preds = %entry + br label %if.merge.248 -if.else.225: ; preds = %entry +if.else.247: ; 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.223, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.226 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.248 -if.merge.226: ; preds = %if.else.225, %if.then.224 - %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.224 ], [ %callN, %if.else.225 ] +if.merge.248: ; preds = %if.else.247, %if.then.246 + %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] ret { ptr, i64 } %bp } @@ -3141,20 +3401,20 @@ entry: 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.227, label %if.else.228 + br i1 %icmp, label %if.then.249, label %if.else.250 -if.then.227: ; preds = %entry - br label %if.merge.229 +if.then.249: ; preds = %entry + br label %if.merge.251 -if.else.228: ; preds = %entry +if.else.250: ; 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.226, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.229 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.251 -if.merge.229: ; preds = %if.else.228, %if.then.227 - %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] +if.merge.251: ; preds = %if.else.250, %if.then.249 + %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] ret { ptr, i64 } %bp } @@ -3169,20 +3429,20 @@ entry: 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.230, label %if.else.231 + br i1 %icmp, label %if.then.252, label %if.else.253 -if.then.230: ; preds = %entry - br label %if.merge.232 +if.then.252: ; preds = %entry + br label %if.merge.254 -if.else.231: ; preds = %entry +if.else.253: ; 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.229, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.232 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.254 -if.merge.232: ; preds = %if.else.231, %if.then.230 - %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] +if.merge.254: ; preds = %if.else.253, %if.then.252 + %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] ret { ptr, i64 } %bp } @@ -3197,20 +3457,20 @@ entry: 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.233, label %if.else.234 + br i1 %icmp, label %if.then.255, label %if.else.256 -if.then.233: ; preds = %entry - br label %if.merge.235 +if.then.255: ; preds = %entry + br label %if.merge.257 -if.else.234: ; preds = %entry +if.else.256: ; 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.232, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.235 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.257 -if.merge.235: ; preds = %if.else.234, %if.then.233 - %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] +if.merge.257: ; preds = %if.else.256, %if.then.255 + %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] ret { ptr, i64 } %bp } @@ -3225,20 +3485,20 @@ entry: 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.236, label %if.else.237 + br i1 %icmp, label %if.then.258, label %if.else.259 -if.then.236: ; preds = %entry - br label %if.merge.238 +if.then.258: ; preds = %entry + br label %if.merge.260 -if.else.237: ; preds = %entry +if.else.259: ; 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.235, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.238 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.260 -if.merge.238: ; preds = %if.else.237, %if.then.236 - %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] +if.merge.260: ; preds = %if.else.259, %if.then.258 + %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] ret { ptr, i64 } %bp } @@ -3253,20 +3513,20 @@ entry: 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.239, label %if.else.240 + br i1 %icmp, label %if.then.261, label %if.else.262 -if.then.239: ; preds = %entry - br label %if.merge.241 +if.then.261: ; preds = %entry + br label %if.merge.263 -if.else.240: ; preds = %entry +if.else.262: ; 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.238, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.241 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.263 -if.merge.241: ; preds = %if.else.240, %if.then.239 - %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] +if.merge.263: ; preds = %if.else.262, %if.then.261 + %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] ret { ptr, i64 } %bp } @@ -3281,20 +3541,20 @@ entry: 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.242, label %if.else.243 + br i1 %icmp, label %if.then.264, label %if.else.265 -if.then.242: ; preds = %entry - br label %if.merge.244 +if.then.264: ; preds = %entry + br label %if.merge.266 -if.else.243: ; preds = %entry +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.241, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.244 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.266 -if.merge.244: ; preds = %if.else.243, %if.then.242 - %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] +if.merge.266: ; preds = %if.else.265, %if.then.264 + %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] ret { ptr, i64 } %bp } @@ -3309,20 +3569,20 @@ entry: 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.245, label %if.else.246 + br i1 %icmp, label %if.then.267, label %if.else.268 -if.then.245: ; preds = %entry - br label %if.merge.247 +if.then.267: ; preds = %entry + br label %if.merge.269 -if.else.246: ; preds = %entry +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.244, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.247 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.269 -if.merge.247: ; preds = %if.else.246, %if.then.245 - %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] +if.merge.269: ; preds = %if.else.268, %if.then.267 + %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] ret { ptr, i64 } %bp } @@ -3337,20 +3597,20 @@ entry: 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 + br i1 %icmp, label %if.then.270, label %if.else.271 -if.then.248: ; preds = %entry - br label %if.merge.250 +if.then.270: ; preds = %entry + br label %if.merge.272 -if.else.249: ; preds = %entry +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.247, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.250 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.272 -if.merge.250: ; preds = %if.else.249, %if.then.248 - %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] +if.merge.272: ; preds = %if.else.271, %if.then.270 + %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ] ret { ptr, i64 } %bp } @@ -3365,20 +3625,20 @@ entry: 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.251, label %if.else.252 + br i1 %icmp, label %if.then.273, label %if.else.274 -if.then.251: ; preds = %entry - br label %if.merge.253 +if.then.273: ; preds = %entry + br label %if.merge.275 -if.else.252: ; preds = %entry +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.250, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.253 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.275 -if.merge.253: ; preds = %if.else.252, %if.then.251 - %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] +if.merge.275: ; preds = %if.else.274, %if.then.273 + %bp = phi { ptr, i64 } [ { ptr @str.254, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ] ret { ptr, i64 } %bp } @@ -3393,23 +3653,21 @@ entry: 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.254, label %if.else.255 + br i1 %icmp, label %if.then.276, label %if.else.277 -if.then.254: ; preds = %entry - br label %if.merge.256 +if.then.276: ; preds = %entry + br label %if.merge.278 -if.else.255: ; preds = %entry +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.253, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.256 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.278 -if.merge.256: ; preds = %if.else.255, %if.then.254 - %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] +if.merge.278: ; preds = %if.else.277, %if.then.276 + %bp = phi { ptr, i64 } [ { ptr @str.257, i64 4 }, %if.then.276 ], [ %callN, %if.else.277 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0413-protocols-parameterized-protocol-value.ir b/examples/expected/0413-protocols-parameterized-protocol-value.ir index 5386203..335e7ca 100644 --- a/examples/expected/0413-protocols-parameterized-protocol-value.ir +++ b/examples/expected/0413-protocols-parameterized-protocol-value.ir @@ -3,329 +3,336 @@ @__VL__s64__IntCell__vtable = internal constant { ptr } { ptr @__thunk_IntCell_VL__s64_get } @__VL__string__StrCell__vtable = internal constant { ptr } { ptr @__thunk_StrCell_VL__string_get } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [89 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [8 x i8] c"IntCell\00" -@tn.str.42 = private constant [8 x i8] c"StrCell\00" -@tn.str.43 = private constant [9 x i8] c"*IntCell\00" -@tn.str.44 = private constant [9 x i8] c"*StrCell\00" -@tn.str.45 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.46 = private constant [5 x i8] c"*s64\00" -@tn.str.47 = private constant [7 x i8] c"**void\00" -@tn.str.48 = private constant [8 x i8] c"VL__s64\00" -@tn.str.49 = private constant [18 x i8] c"__VL__s64__Vtable\00" -@tn.str.50 = private constant [9 x i8] c"*VL__s64\00" -@tn.str.51 = private constant [10 x i8] c"**IntCell\00" -@tn.str.52 = private constant [19 x i8] c"*__VL__s64__Vtable\00" -@tn.str.53 = private constant [8 x i8] c"*string\00" -@tn.str.54 = private constant [6 x i8] c"[]Any\00" -@tn.str.55 = private constant [5 x i8] c"*Any\00" -@tn.str.56 = private constant [7 x i8] c"[1]Any\00" -@tn.str.57 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.58 = private constant [7 x i8] c"*[]Any\00" -@tn.str.59 = private constant [4 x i8] c"*u8\00" -@tn.str.60 = private constant [6 x i8] c"*bool\00" -@tn.str.61 = private constant [11 x i8] c"VL__string\00" -@tn.str.62 = private constant [21 x i8] c"__VL__string__Vtable\00" -@tn.str.63 = private constant [12 x i8] c"*VL__string\00" -@tn.str.64 = private constant [10 x i8] c"**StrCell\00" -@tn.str.65 = private constant [22 x i8] c"*__VL__string__Vtable\00" -@tn.str.66 = private constant [5 x i8] c"*f64\00" -@tn.str.67 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.68 = private constant [11 x i8] c"*Allocator\00" -@tn.str.69 = private constant [9 x i8] c"*Context\00" -@tn.str.70 = private constant [10 x i8] c"*[]string\00" -@tn.str.71 = private constant [6 x i8] c"**GPA\00" -@tn.str.72 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.73 = private constant [8 x i8] c"**Arena\00" -@tn.str.74 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.75 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.76 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.77 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.78 = private constant [6 x i8] c"**s64\00" -@tn.str.79 = private constant [8 x i8] c"***void\00" -@tn.str.80 = private constant [10 x i8] c"**VL__s64\00" -@tn.str.81 = private constant [11 x i8] c"***IntCell\00" -@tn.str.82 = private constant [20 x i8] c"**__VL__s64__Vtable\00" -@tn.str.83 = private constant [9 x i8] c"**string\00" -@tn.str.84 = private constant [6 x i8] c"**Any\00" -@tn.str.85 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.86 = private constant [8 x i8] c"**[]Any\00" -@tn.str.87 = private constant [5 x i8] c"**u8\00" -@tn.str.88 = private constant [7 x i8] c"**bool\00" -@tn.str.89 = private constant [13 x i8] c"**VL__string\00" -@tn.str.90 = private constant [11 x i8] c"***StrCell\00" -@tn.str.91 = private constant [23 x i8] c"**__VL__string__Vtable\00" -@__sx_type_names = private constant [87 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 7 }, { ptr, i64 } { ptr @tn.str.43, i64 8 }, { ptr, i64 } { ptr @tn.str.44, i64 8 }, { ptr, i64 } { ptr @tn.str.45, i64 12 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 6 }, { ptr, i64 } { ptr @tn.str.48, i64 7 }, { ptr, i64 } { ptr @tn.str.49, i64 17 }, { ptr, i64 } { ptr @tn.str.50, i64 8 }, { ptr, i64 } { ptr @tn.str.51, i64 9 }, { ptr, i64 } { ptr @tn.str.52, i64 18 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 7 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 3 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 10 }, { ptr, i64 } { ptr @tn.str.62, i64 20 }, { ptr, i64 } { ptr @tn.str.63, i64 11 }, { ptr, i64 } { ptr @tn.str.64, i64 9 }, { ptr, i64 } { ptr @tn.str.65, i64 21 }, { ptr, i64 } { ptr @tn.str.66, i64 4 }, { ptr, i64 } { ptr @tn.str.67, i64 16 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 9 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 12 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }, { ptr, i64 } { ptr @tn.str.75, i64 10 }, { ptr, i64 } { ptr @tn.str.76, i64 19 }, { ptr, i64 } { ptr @tn.str.77, i64 13 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 7 }, { ptr, i64 } { ptr @tn.str.80, i64 9 }, { ptr, i64 } { ptr @tn.str.81, i64 10 }, { ptr, i64 } { ptr @tn.str.82, i64 19 }, { ptr, i64 } { ptr @tn.str.83, i64 8 }, { ptr, i64 } { ptr @tn.str.84, i64 5 }, { ptr, i64 } { ptr @tn.str.85, i64 8 }, { ptr, i64 } { ptr @tn.str.86, i64 7 }, { ptr, i64 } { ptr @tn.str.87, i64 4 }, { ptr, i64 } { ptr @tn.str.88, i64 6 }, { ptr, i64 } { ptr @tn.str.89, i64 12 }, { ptr, i64 } { ptr @tn.str.90, i64 10 }, { ptr, i64 } { ptr @tn.str.91, i64 22 }] -@str.92 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.94 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [8 x i8] c"IntCell\00" +@tn.str.44 = private constant [8 x i8] c"StrCell\00" +@tn.str.45 = private constant [9 x i8] c"*IntCell\00" +@tn.str.46 = private constant [9 x i8] c"*StrCell\00" +@tn.str.47 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.48 = private constant [5 x i8] c"*s64\00" +@tn.str.49 = private constant [7 x i8] c"**void\00" +@tn.str.50 = private constant [8 x i8] c"VL__s64\00" +@tn.str.51 = private constant [18 x i8] c"__VL__s64__Vtable\00" +@tn.str.52 = private constant [9 x i8] c"*VL__s64\00" +@tn.str.53 = private constant [10 x i8] c"**IntCell\00" +@tn.str.54 = private constant [19 x i8] c"*__VL__s64__Vtable\00" +@tn.str.55 = private constant [8 x i8] c"*string\00" +@tn.str.56 = private constant [6 x i8] c"[]Any\00" +@tn.str.57 = private constant [5 x i8] c"*Any\00" +@tn.str.58 = private constant [7 x i8] c"[1]Any\00" +@tn.str.59 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.60 = private constant [7 x i8] c"*[]Any\00" +@tn.str.61 = private constant [4 x i8] c"*u8\00" +@tn.str.62 = private constant [6 x i8] c"*bool\00" +@tn.str.63 = private constant [11 x i8] c"VL__string\00" +@tn.str.64 = private constant [21 x i8] c"__VL__string__Vtable\00" +@tn.str.65 = private constant [12 x i8] c"*VL__string\00" +@tn.str.66 = private constant [10 x i8] c"**StrCell\00" +@tn.str.67 = private constant [22 x i8] c"*__VL__string__Vtable\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 [10 x i8] c"*[]string\00" +@tn.str.74 = private constant [6 x i8] c"**GPA\00" +@tn.str.75 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.76 = private constant [8 x i8] c"**Arena\00" +@tn.str.77 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.78 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.79 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.80 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.81 = private constant [6 x i8] c"**s64\00" +@tn.str.82 = private constant [8 x i8] c"***void\00" +@tn.str.83 = private constant [10 x i8] c"**VL__s64\00" +@tn.str.84 = private constant [11 x i8] c"***IntCell\00" +@tn.str.85 = private constant [20 x i8] c"**__VL__s64__Vtable\00" +@tn.str.86 = private constant [9 x i8] c"**string\00" +@tn.str.87 = private constant [6 x i8] c"**Any\00" +@tn.str.88 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.89 = private constant [8 x i8] c"**[]Any\00" +@tn.str.90 = private constant [5 x i8] c"**u8\00" +@tn.str.91 = private constant [7 x i8] c"**bool\00" +@tn.str.92 = private constant [13 x i8] c"**VL__string\00" +@tn.str.93 = private constant [11 x i8] c"***StrCell\00" +@tn.str.94 = private constant [23 x i8] c"**__VL__string__Vtable\00" +@__sx_type_names = private constant [89 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 7 }, { ptr, i64 } { ptr @tn.str.44, i64 7 }, { ptr, i64 } { ptr @tn.str.45, i64 8 }, { ptr, i64 } { ptr @tn.str.46, i64 8 }, { ptr, i64 } { ptr @tn.str.47, i64 12 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 17 }, { ptr, i64 } { ptr @tn.str.52, i64 8 }, { ptr, i64 } { ptr @tn.str.53, i64 9 }, { ptr, i64 } { ptr @tn.str.54, i64 18 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 6 }, { ptr, i64 } { ptr @tn.str.61, i64 3 }, { ptr, i64 } { ptr @tn.str.62, i64 5 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 20 }, { ptr, i64 } { ptr @tn.str.65, i64 11 }, { ptr, i64 } { ptr @tn.str.66, i64 9 }, { ptr, i64 } { ptr @tn.str.67, i64 21 }, { 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 9 }, { ptr, i64 } { ptr @tn.str.74, i64 5 }, { ptr, i64 } { ptr @tn.str.75, i64 12 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }, { ptr, i64 } { ptr @tn.str.78, i64 10 }, { ptr, i64 } { ptr @tn.str.79, i64 19 }, { ptr, i64 } { ptr @tn.str.80, i64 13 }, { ptr, i64 } { ptr @tn.str.81, i64 5 }, { ptr, i64 } { ptr @tn.str.82, i64 7 }, { ptr, i64 } { ptr @tn.str.83, i64 9 }, { ptr, i64 } { ptr @tn.str.84, i64 10 }, { ptr, i64 } { ptr @tn.str.85, i64 19 }, { ptr, i64 } { ptr @tn.str.86, i64 8 }, { ptr, i64 } { ptr @tn.str.87, i64 5 }, { ptr, i64 } { ptr @tn.str.88, i64 8 }, { ptr, i64 } { ptr @tn.str.89, i64 7 }, { ptr, i64 } { ptr @tn.str.90, i64 4 }, { ptr, i64 } { ptr @tn.str.91, i64 6 }, { ptr, i64 } { ptr @tn.str.92, i64 12 }, { ptr, i64 } { ptr @tn.str.93, i64 10 }, { ptr, i64 } { ptr @tn.str.94, i64 22 }] @str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.96 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.97 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.98 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.99 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.100 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.101 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.102 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.103 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.104 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.96 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.97 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.99 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.100 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.101 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.102 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.103 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.104 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.105 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.106 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.107 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.108 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.109 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.110 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.111 = private unnamed_addr constant [3 x i8] c"hi\00", align 1 -@str.112 = private unnamed_addr constant [10 x i8] c"a.get={}\0A\00", align 1 -@str.113 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.114 = private unnamed_addr constant [10 x i8] c"a.get={}\0A\00", align 1 -@str.115 = private unnamed_addr constant [10 x i8] c"b.get={}\0A\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 [3 x i8] c"hi\00", align 1 +@str.115 = private unnamed_addr constant [10 x i8] c"a.get={}\0A\00", align 1 @str.116 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.117 = private unnamed_addr constant [10 x i8] c"b.get={}\0A\00", align 1 -@str.118 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.119 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.120 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.117 = private unnamed_addr constant [10 x i8] c"a.get={}\0A\00", align 1 +@str.118 = private unnamed_addr constant [10 x i8] c"b.get={}\0A\00", align 1 +@str.119 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.120 = private unnamed_addr constant [10 x i8] c"b.get={}\0A\00", align 1 +@str.121 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.122 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.123 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.122 = private constant [5 x i8] c"line\00" -@fld.str.123 = private constant [4 x i8] c"col\00" -@fld.str.124 = 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.122, i64 4 }, { ptr, i64 } { ptr @fld.str.123, i64 3 }, { ptr, i64 } { ptr @fld.str.124, i64 4 }] -@str.125 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.126 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.127 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.129 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.130 = private constant [4 x i8] c"ctx\00" -@fld.str.131 = private constant [6 x i8] c"alloc\00" -@fld.str.132 = private constant [8 x i8] c"dealloc\00" -@field_names.133 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.130, i64 3 }, { ptr, i64 } { ptr @fld.str.131, i64 5 }, { ptr, i64 } { ptr @fld.str.132, i64 7 }] -@str.134 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.135 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.136 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.139 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.140 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.141 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.142 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.143 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.144 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.145 = private constant [12 x i8] c"alloc_count\00" -@field_names.146 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.145, i64 11 }] -@str.147 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.148 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.149 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.151 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.152 = private constant [5 x i8] c"next\00" -@fld.str.153 = private constant [4 x i8] c"cap\00" -@field_names.154 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.152, i64 4 }, { ptr, i64 } { ptr @fld.str.153, i64 3 }] -@str.155 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.156 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.157 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.158 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.159 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.160 = private constant [6 x i8] c"first\00" -@fld.str.161 = private constant [10 x i8] c"end_index\00" -@fld.str.162 = private constant [7 x i8] c"parent\00" -@field_names.163 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.160, i64 5 }, { ptr, i64 } { ptr @fld.str.161, i64 9 }, { ptr, i64 } { ptr @fld.str.162, i64 6 }] -@str.164 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.165 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.166 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.167 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.168 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.169 = private constant [4 x i8] c"buf\00" -@fld.str.170 = private constant [4 x i8] c"len\00" -@fld.str.171 = private constant [4 x i8] c"pos\00" -@field_names.172 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.169, i64 3 }, { ptr, i64 } { ptr @fld.str.170, i64 3 }, { ptr, i64 } { ptr @fld.str.171, i64 3 }] -@str.173 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.174 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.175 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.176 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.178 = private constant [7 x i8] c"parent\00" -@fld.str.179 = private constant [12 x i8] c"alloc_count\00" -@fld.str.180 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.181 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.182 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.178, i64 6 }, { ptr, i64 } { ptr @fld.str.179, i64 11 }, { ptr, i64 } { ptr @fld.str.180, i64 13 }, { ptr, i64 } { ptr @fld.str.181, i64 17 }] -@str.183 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.184 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.185 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.187 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.188 = private constant [10 x i8] c"allocator\00" -@fld.str.189 = private constant [5 x i8] c"data\00" -@field_names.190 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.188, i64 9 }, { ptr, i64 } { ptr @fld.str.189, i64 4 }] -@str.191 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.192 = private unnamed_addr constant [8 x i8] c"IntCell\00", align 1 -@str.193 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.194 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.195 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.196 = private constant [2 x i8] c"v\00" -@field_names.197 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.196, i64 1 }] -@str.198 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.199 = private unnamed_addr constant [8 x i8] c"StrCell\00", align 1 -@str.200 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.201 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.203 = private constant [2 x i8] c"s\00" -@field_names.204 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.203, i64 1 }] -@str.205 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.206 = private unnamed_addr constant [8 x i8] c"VL__s64\00", align 1 -@str.207 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.208 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.209 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.210 = private constant [4 x i8] c"ctx\00" -@fld.str.211 = private constant [9 x i8] c"__vtable\00" -@field_names.212 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.210, i64 3 }, { ptr, i64 } { ptr @fld.str.211, i64 8 }] -@str.213 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.214 = private unnamed_addr constant [18 x i8] c"__VL__s64__Vtable\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 -@fld.str.218 = private constant [4 x i8] c"get\00" -@field_names.219 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.218, i64 3 }] -@str.220 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.221 = private unnamed_addr constant [11 x i8] c"VL__string\00", align 1 -@str.222 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.223 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.224 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.225 = private constant [4 x i8] c"ctx\00" -@fld.str.226 = private constant [9 x i8] c"__vtable\00" -@field_names.227 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.225, i64 3 }, { ptr, i64 } { ptr @fld.str.226, i64 8 }] -@str.228 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.229 = private unnamed_addr constant [21 x i8] c"__VL__string__Vtable\00", align 1 -@str.230 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.231 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.232 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.233 = private constant [4 x i8] c"get\00" -@field_names.234 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.233, i64 3 }] -@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 -@str.237 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.238 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.125 = private constant [5 x i8] c"line\00" +@fld.str.126 = private constant [4 x i8] c"col\00" +@fld.str.127 = 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.125, i64 4 }, { ptr, i64 } { ptr @fld.str.126, i64 3 }, { ptr, i64 } { ptr @fld.str.127, i64 4 }] +@str.128 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.129 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.130 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.133 = private constant [4 x i8] c"ctx\00" +@fld.str.134 = private constant [6 x i8] c"alloc\00" +@fld.str.135 = private constant [8 x i8] c"dealloc\00" +@field_names.136 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.133, i64 3 }, { ptr, i64 } { ptr @fld.str.134, i64 5 }, { ptr, i64 } { ptr @fld.str.135, i64 7 }] +@str.137 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.138 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.141 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.142 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.143 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.144 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.145 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.148 = private constant [12 x i8] c"alloc_count\00" +@field_names.149 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.148, i64 11 }] +@str.150 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.151 = private unnamed_addr constant [11 x i8] c"ArenaChunk\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 +@fld.str.155 = private constant [5 x i8] c"next\00" +@fld.str.156 = private constant [4 x i8] c"cap\00" +@field_names.157 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.155, i64 4 }, { ptr, i64 } { ptr @fld.str.156, i64 3 }] +@str.158 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.159 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.160 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.162 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.163 = private constant [6 x i8] c"first\00" +@fld.str.164 = private constant [10 x i8] c"end_index\00" +@fld.str.165 = private constant [7 x i8] c"parent\00" +@field_names.166 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.163, i64 5 }, { ptr, i64 } { ptr @fld.str.164, i64 9 }, { ptr, i64 } { ptr @fld.str.165, i64 6 }] +@str.167 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.168 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.170 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.171 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.172 = private constant [4 x i8] c"buf\00" +@fld.str.173 = private constant [4 x i8] c"len\00" +@fld.str.174 = private constant [4 x i8] c"pos\00" +@field_names.175 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.172, i64 3 }, { ptr, i64 } { ptr @fld.str.173, i64 3 }, { ptr, i64 } { ptr @fld.str.174, i64 3 }] +@str.176 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.177 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.178 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.179 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.181 = private constant [7 x i8] c"parent\00" +@fld.str.182 = private constant [12 x i8] c"alloc_count\00" +@fld.str.183 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.184 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.185 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.181, i64 6 }, { ptr, i64 } { ptr @fld.str.182, i64 11 }, { ptr, i64 } { ptr @fld.str.183, i64 13 }, { ptr, i64 } { ptr @fld.str.184, i64 17 }] +@str.186 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.187 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.188 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.189 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.190 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.191 = private constant [10 x i8] c"allocator\00" +@fld.str.192 = private constant [5 x i8] c"data\00" +@field_names.193 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.191, i64 9 }, { ptr, i64 } { ptr @fld.str.192, i64 4 }] +@str.194 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.195 = private unnamed_addr constant [8 x i8] c"IntCell\00", align 1 +@str.196 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.198 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.199 = private constant [2 x i8] c"v\00" +@field_names.200 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.199, i64 1 }] +@str.201 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.202 = private unnamed_addr constant [8 x i8] c"StrCell\00", align 1 +@str.203 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.204 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.205 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.206 = private constant [2 x i8] c"s\00" +@field_names.207 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.206, i64 1 }] +@str.208 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.209 = private unnamed_addr constant [8 x i8] c"VL__s64\00", align 1 +@str.210 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.211 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.212 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.213 = private constant [4 x i8] c"ctx\00" +@fld.str.214 = private constant [9 x i8] c"__vtable\00" +@field_names.215 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.213, i64 3 }, { ptr, i64 } { ptr @fld.str.214, i64 8 }] +@str.216 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.217 = private unnamed_addr constant [18 x i8] c"__VL__s64__Vtable\00", align 1 +@str.218 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.219 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.220 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.221 = private constant [4 x i8] c"get\00" +@field_names.222 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.221, i64 3 }] +@str.223 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.224 = private unnamed_addr constant [11 x i8] c"VL__string\00", align 1 +@str.225 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.226 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.227 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.228 = private constant [4 x i8] c"ctx\00" +@fld.str.229 = private constant [9 x i8] c"__vtable\00" +@field_names.230 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.228, i64 3 }, { ptr, i64 } { ptr @fld.str.229, i64 8 }] +@str.231 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.232 = private unnamed_addr constant [21 x i8] c"__VL__string__Vtable\00", align 1 +@str.233 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.234 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.235 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.236 = private constant [4 x i8] c"get\00" +@field_names.237 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.236, i64 3 }] +@str.238 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.239 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.240 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.241 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.242 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.243 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.244 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.245 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.246 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.247 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.248 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.249 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.250 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@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 [3 x i8] c", \00", align 1 +@str.248 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.249 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.250 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.251 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.252 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.252 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.253 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.254 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.255 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.255 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.256 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.257 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.258 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.258 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.259 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.260 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.261 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.261 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.262 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.263 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.264 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.264 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.265 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.266 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.267 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.267 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.268 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.269 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.270 = private unnamed_addr constant [9 x i8] c"*IntCell\00", align 1 +@str.270 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.271 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.272 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.273 = private unnamed_addr constant [9 x i8] c"*StrCell\00", align 1 +@str.273 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.274 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.275 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.276 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.276 = private unnamed_addr constant [9 x i8] c"*IntCell\00", align 1 @str.277 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.278 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.279 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.279 = private unnamed_addr constant [9 x i8] c"*StrCell\00", align 1 @str.280 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.281 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.282 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.282 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.283 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.284 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.285 = private unnamed_addr constant [9 x i8] c"*VL__s64\00", align 1 +@str.285 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.286 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.287 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.288 = private unnamed_addr constant [10 x i8] c"**IntCell\00", align 1 +@str.288 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.289 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.290 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.291 = private unnamed_addr constant [19 x i8] c"*__VL__s64__Vtable\00", align 1 +@str.291 = private unnamed_addr constant [9 x i8] c"*VL__s64\00", align 1 @str.292 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.293 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.294 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.294 = private unnamed_addr constant [10 x i8] c"**IntCell\00", align 1 @str.295 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.296 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.297 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.297 = private unnamed_addr constant [19 x i8] c"*__VL__s64__Vtable\00", align 1 @str.298 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.299 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.300 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.300 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.301 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.302 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.303 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.303 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.304 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.305 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.306 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.306 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.307 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.308 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.309 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.309 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.310 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.311 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.312 = private unnamed_addr constant [12 x i8] c"*VL__string\00", align 1 +@str.312 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.313 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.314 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.315 = private unnamed_addr constant [10 x i8] c"**StrCell\00", align 1 +@str.315 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 @str.316 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.317 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.318 = private unnamed_addr constant [22 x i8] c"*__VL__string__Vtable\00", align 1 +@str.318 = private unnamed_addr constant [12 x i8] c"*VL__string\00", align 1 @str.319 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.320 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.321 = private unnamed_addr constant [10 x i8] c"**StrCell\00", align 1 +@str.322 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.323 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.324 = private unnamed_addr constant [22 x i8] c"*__VL__string__Vtable\00", align 1 +@str.325 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -464,38 +471,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -508,50 +520,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -565,19 +705,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -594,15 +734,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -620,16 +760,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -646,17 +786,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -719,39 +859,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.224 + br label %while.hdr.246 -while.hdr.224: ; preds = %if.merge.229, %entry +while.hdr.246: ; preds = %if.merge.251, %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.225, label %while.exit.226 + br i1 %icmp, label %while.body.247, label %while.exit.248 -while.body.225: ; preds = %while.hdr.224 +while.body.247: ; preds = %while.hdr.246 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.227, label %if.else.228 + br i1 %icmpN, label %if.then.249, label %if.else.250 -while.exit.226: ; preds = %while.hdr.224 +while.exit.248: ; preds = %while.hdr.246 ret void -if.then.227: ; preds = %while.body.225 +if.then.249: ; preds = %while.body.247 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.229 + br label %if.merge.251 -if.else.228: ; preds = %while.body.225 +if.else.250: ; preds = %while.body.247 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.229 + br label %if.merge.251 -if.merge.229: ; preds = %if.else.228, %if.then.227 - %bp = phi i64 [ %addN, %if.then.227 ], [ %addN, %if.else.228 ] +if.merge.251: ; preds = %if.else.250, %if.then.249 + %bp = phi i64 [ %addN, %if.then.249 ], [ %addN, %if.else.250 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -764,37 +904,29 @@ if.merge.229: ; preds = %if.else.228, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.224 + br label %while.hdr.246 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.214, label %if.merge.215 - -if.then.214: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.215: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.216, label %if.merge.217 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.216: ; preds = %if.merge.215 +if.then.58: ; 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.217 + br label %if.merge.59 -if.merge.217: ; preds = %if.then.216, %if.merge.215 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -807,15 +939,15 @@ if.merge.217: ; preds = %if.then.216, %if.me 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.218, label %if.merge.219 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.218: ; preds = %if.merge.217 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.219 + br label %if.merge.61 -if.merge.219: ; preds = %if.then.218, %if.merge.217 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -828,15 +960,15 @@ if.merge.219: ; preds = %if.then.218, %if.me 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.220, label %if.merge.221 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.220: ; preds = %if.merge.219 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.221 + br label %if.merge.63 -if.merge.221: ; preds = %if.then.220, %if.merge.219 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -849,65 +981,116 @@ if.merge.221: ; preds = %if.then.220, %if.me 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.222, label %if.merge.223 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.222: ; preds = %if.merge.221 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.223 + br label %if.merge.65 -if.merge.223: ; preds = %if.then.222, %if.merge.221 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.244, label %if.merge.245 + +if.then.244: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.245: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.230 + br label %while.hdr.252 -while.hdr.230: ; preds = %if.merge.234, %if.merge.223 +while.hdr.252: ; preds = %if.merge.256, %if.merge.245 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.231, label %while.exit.232 + br i1 %icmpN, label %while.body.253, label %while.exit.254 -while.body.231: ; preds = %while.hdr.230 +while.body.253: ; preds = %while.hdr.252 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.233, label %if.merge.234 + br i1 %icmpN, label %if.then.255, label %if.merge.256 -while.exit.232: ; preds = %if.then.233, %while.hdr.230 +while.exit.254: ; preds = %if.then.255, %while.hdr.252 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.233: ; preds = %while.body.231 - br label %while.exit.232 +if.then.255: ; preds = %while.body.253 + br label %while.exit.254 -if.merge.234: ; preds = %while.body.231 +if.merge.256: ; preds = %while.body.253 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.230 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.252 } ; Function Attrs: nounwind @@ -986,7 +1169,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -994,581 +1177,608 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 36, label %match.arm.44 - i64 37, label %match.arm.44 - i64 43, label %match.arm.44 - i64 44, label %match.arm.44 - i64 56, label %match.arm.44 - i64 57, label %match.arm.44 - i64 51, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 37, label %match.arm.43 + i64 38, label %match.arm.43 + i64 44, label %match.arm.43 + i64 45, label %match.arm.43 + i64 57, label %match.arm.43 + i64 58, label %match.arm.43 + i64 35, label %match.arm.47 + i64 52, label %match.arm.47 + i64 36, label %match.arm.48 + i64 50, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 39, label %match.arm.49 + i64 40, label %match.arm.49 + i64 41, label %match.arm.49 + i64 42, label %match.arm.49 + i64 43, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 i64 49, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 38, label %match.arm.50 - i64 39, label %match.arm.50 - i64 40, label %match.arm.50 - i64 41, label %match.arm.50 - i64 42, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 50, label %match.arm.50 - i64 52, label %match.arm.50 - i64 53, label %match.arm.50 - i64 54, label %match.arm.50 - i64 55, label %match.arm.50 - i64 58, label %match.arm.50 - i64 59, label %match.arm.50 - i64 60, label %match.arm.50 - i64 13, label %match.arm.52 + i64 51, label %match.arm.49 + i64 53, label %match.arm.49 + i64 54, label %match.arm.49 + i64 55, label %match.arm.49 + i64 56, label %match.arm.49 + i64 59, label %match.arm.49 + i64 60, label %match.arm.49 + i64 61, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.162, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.214, %dispatch.merge.200, %dispatch.merge.186, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [89 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 36, label %dispatch.case.81 - i64 37, label %dispatch.case.82 - i64 43, label %dispatch.case.83 - i64 44, label %dispatch.case.84 - i64 56, label %dispatch.case.85 - i64 57, label %dispatch.case.86 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 37, label %dispatch.case.105 + i64 38, label %dispatch.case.106 + i64 44, label %dispatch.case.107 + i64 45, label %dispatch.case.108 + i64 57, label %dispatch.case.109 + i64 58, label %dispatch.case.110 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable - -match.arm.48: ; preds = %entry +match.arm.47: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.163 [ - i64 51, label %dispatch.case.164 + switch i64 %ua.raw20, label %dispatch.default.187 [ + i64 35, label %dispatch.case.188 + i64 52, label %dispatch.case.189 ] -match.arm.49: ; preds = %entry, %entry +match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.171 [ - i64 35, label %dispatch.case.172 - i64 49, label %dispatch.case.173 - ] - -match.arm.50: ; preds = %entry, %entry, %entry, %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.185 [ - i64 18, label %dispatch.case.186 - i64 22, label %dispatch.case.187 - i64 24, label %dispatch.case.188 - i64 26, label %dispatch.case.189 - i64 28, label %dispatch.case.190 - i64 29, label %dispatch.case.191 - i64 31, label %dispatch.case.192 - i64 33, label %dispatch.case.193 - i64 38, label %dispatch.case.194 - i64 39, label %dispatch.case.195 - i64 40, label %dispatch.case.196 - i64 41, label %dispatch.case.197 - i64 42, label %dispatch.case.198 - i64 45, label %dispatch.case.199 - i64 46, label %dispatch.case.200 - i64 47, label %dispatch.case.201 - i64 48, label %dispatch.case.202 + switch i64 %ua.raw24, label %dispatch.default.201 [ + i64 36, label %dispatch.case.202 i64 50, label %dispatch.case.203 - i64 52, label %dispatch.case.204 - i64 53, label %dispatch.case.205 - i64 54, label %dispatch.case.206 - i64 55, label %dispatch.case.207 - i64 58, label %dispatch.case.208 - i64 59, label %dispatch.case.209 - i64 60, label %dispatch.case.210 ] -match.arm.51: ; No predecessors! +match.arm.49: ; preds = %entry, %entry, %entry, %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.215 [ + i64 18, label %dispatch.case.216 + i64 22, label %dispatch.case.217 + i64 24, label %dispatch.case.218 + i64 26, label %dispatch.case.219 + i64 28, label %dispatch.case.220 + i64 29, label %dispatch.case.221 + i64 31, label %dispatch.case.222 + i64 33, label %dispatch.case.223 + i64 39, label %dispatch.case.224 + i64 40, label %dispatch.case.225 + i64 41, label %dispatch.case.226 + i64 42, label %dispatch.case.227 + i64 43, label %dispatch.case.228 + i64 46, label %dispatch.case.229 + i64 47, label %dispatch.case.230 + i64 48, label %dispatch.case.231 + i64 49, label %dispatch.case.232 + i64 51, label %dispatch.case.233 + i64 53, label %dispatch.case.234 + i64 54, label %dispatch.case.235 + i64 55, label %dispatch.case.236 + i64 56, label %dispatch.case.237 + i64 59, label %dispatch.case.238 + i64 60, label %dispatch.case.239 + i64 61, label %dispatch.case.240 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [87 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [89 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.110, %dispatch.case.109, %dispatch.case.108, %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.92, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.95, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { i64 }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__IntCell(ptr %0, { i64 } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load { { ptr, i64 } }, ptr %ua.ptr80, align 8 - %callN = call { ptr, i64 } @struct_to_string__StrCell(ptr %0, { { ptr, i64 } } %ua.load81) + %ua.load81 = load { i64 }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__IntCell(ptr %0, { i64 } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { ptr, ptr }, ptr %ua.ptr84, align 8 - %callN = call { ptr, i64 } @struct_to_string__VL__s64(ptr %0, { ptr, ptr } %ua.load85) + %ua.load85 = load { { ptr, i64 } }, ptr %ua.ptr84, align 8 + %callN = call { ptr, i64 } @struct_to_string__StrCell(ptr %0, { { ptr, i64 } } %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.84: ; preds = %match.arm.44 +dispatch.case.107: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { ptr }, ptr %ua.ptr88, align 8 - %callN = call { ptr, i64 } @struct_to_string____VL__s64__Vtable(ptr %0, { ptr } %ua.load89) + %ua.load89 = load { ptr, ptr }, ptr %ua.ptr88, align 8 + %callN = call { ptr, i64 } @struct_to_string__VL__s64(ptr %0, { ptr, ptr } %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.85: ; preds = %match.arm.44 +dispatch.case.108: ; preds = %match.arm.43 %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr - %ua.load93 = load { ptr, ptr }, ptr %ua.ptr92, align 8 - %callN = call { ptr, i64 } @struct_to_string__VL__string(ptr %0, { ptr, ptr } %ua.load93) + %ua.load93 = load { ptr }, ptr %ua.ptr92, align 8 + %callN = call { ptr, i64 } @struct_to_string____VL__s64__Vtable(ptr %0, { ptr } %ua.load93) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.86: ; preds = %match.arm.44 +dispatch.case.109: ; preds = %match.arm.43 %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr96 = inttoptr i64 %ua.raw95 to ptr - %ua.load97 = load { ptr }, ptr %ua.ptr96, align 8 - %callN = call { ptr, i64 } @struct_to_string____VL__string__Vtable(ptr %0, { ptr } %ua.load97) + %ua.load97 = load { ptr, ptr }, ptr %ua.ptr96, align 8 + %callN = call { ptr, i64 } @struct_to_string__VL__string(ptr %0, { ptr, ptr } %ua.load97) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.162: ; preds = %dispatch.case.164, %dispatch.default.163 +dispatch.case.110: ; preds = %match.arm.43 + %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr100 = inttoptr i64 %ua.raw99 to ptr + %ua.load101 = load { ptr }, ptr %ua.ptr100, align 8 + %callN = call { ptr, i64 } @struct_to_string____VL__string__Vtable(ptr %0, { ptr } %ua.load101) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.186: ; preds = %dispatch.case.189, %dispatch.case.188, %dispatch.default.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.163: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.162 +dispatch.default.187: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.96, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.186 -dispatch.case.164: ; preds = %match.arm.48 - %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr101 = inttoptr i64 %ua.raw100 to ptr - %ua.load102 = load [1 x { i64, i64 }], ptr %ua.ptr101, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load102) +dispatch.case.188: ; preds = %match.arm.47 + %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr105 = inttoptr i64 %ua.raw104 to ptr + %ua.load106 = load [4 x i64], ptr %ua.ptr105, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load106) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.162 + br label %dispatch.merge.186 -dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 +dispatch.case.189: ; preds = %match.arm.47 + %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr109 = inttoptr i64 %ua.raw108 to ptr + %ua.load110 = load [1 x { i64, i64 }], ptr %ua.ptr109, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load110) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.186 + +dispatch.merge.200: ; preds = %dispatch.case.203, %dispatch.case.202, %dispatch.default.201 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.171: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.170 +dispatch.default.201: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.97, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.200 -dispatch.case.172: ; preds = %match.arm.49 - %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr - %ua.load107 = load { ptr, i64 }, ptr %ua.ptr106, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load107) +dispatch.case.202: ; preds = %match.arm.48 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr114 = inttoptr i64 %ua.raw113 to ptr + %ua.load115 = load { ptr, i64 }, ptr %ua.ptr114, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load115) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.170 + br label %dispatch.merge.200 -dispatch.case.173: ; preds = %match.arm.49 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr - %ua.load111 = load { ptr, i64 }, ptr %ua.ptr110, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load111) +dispatch.case.203: ; preds = %match.arm.48 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr118 = inttoptr i64 %ua.raw117 to ptr + %ua.load119 = load { ptr, i64 }, ptr %ua.ptr118, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.170 + br label %dispatch.merge.200 -dispatch.merge.184: ; preds = %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 +dispatch.merge.214: ; preds = %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.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.default.215 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.185: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.95, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.184 +dispatch.default.215: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.98, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.214 -dispatch.case.186: ; preds = %match.arm.50 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw114 to ptr +dispatch.case.216: ; preds = %match.arm.49 + %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw122 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.184 + br label %dispatch.merge.214 -dispatch.case.187: ; preds = %match.arm.50 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp117) +dispatch.case.217: ; preds = %match.arm.49 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.188: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp120) +dispatch.case.218: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.189: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp123) +dispatch.case.219: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.190: ; preds = %match.arm.50 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp126) +dispatch.case.220: ; preds = %match.arm.49 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.191: ; preds = %match.arm.50 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp129) +dispatch.case.221: ; preds = %match.arm.49 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.192: ; preds = %match.arm.50 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp132) +dispatch.case.222: ; preds = %match.arm.49 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.193: ; preds = %match.arm.50 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp135) +dispatch.case.223: ; preds = %match.arm.49 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.194: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_IntCell(ptr %0, ptr %iNp138) +dispatch.case.224: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_IntCell(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.195: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_StrCell(ptr %0, ptr %iNp141) +dispatch.case.225: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_StrCell(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.196: ; preds = %match.arm.50 - %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 - %iNp144 = inttoptr i64 %ua.raw143 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp144) +dispatch.case.226: ; preds = %match.arm.49 + %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 + %iNp152 = inttoptr i64 %ua.raw151 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp152) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.197: ; preds = %match.arm.50 - %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 - %iNp147 = inttoptr i64 %ua.raw146 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp147) +dispatch.case.227: ; preds = %match.arm.49 + %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 + %iNp155 = inttoptr i64 %ua.raw154 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp155) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.198: ; preds = %match.arm.50 - %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 - %iNp150 = inttoptr i64 %ua.raw149 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp150) +dispatch.case.228: ; preds = %match.arm.49 + %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 + %iNp158 = inttoptr i64 %ua.raw157 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp158) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.199: ; preds = %match.arm.50 - %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 - %iNp153 = inttoptr i64 %ua.raw152 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_VL__s64(ptr %0, ptr %iNp153) +dispatch.case.229: ; preds = %match.arm.49 + %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 + %iNp161 = inttoptr i64 %ua.raw160 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_VL__s64(ptr %0, ptr %iNp161) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.200: ; preds = %match.arm.50 - %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 - %iNp156 = inttoptr i64 %ua.raw155 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_IntCell(ptr %0, ptr %iNp156) +dispatch.case.230: ; preds = %match.arm.49 + %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 + %iNp164 = inttoptr i64 %ua.raw163 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_IntCell(ptr %0, ptr %iNp164) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.201: ; preds = %match.arm.50 - %ua.raw158 = extractvalue { i64, i64 } %loadN, 1 - %iNp159 = inttoptr i64 %ua.raw158 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr___VL__s64__Vtable(ptr %0, ptr %iNp159) +dispatch.case.231: ; preds = %match.arm.49 + %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 + %iNp167 = inttoptr i64 %ua.raw166 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr___VL__s64__Vtable(ptr %0, ptr %iNp167) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.202: ; preds = %match.arm.50 - %ua.raw161 = extractvalue { i64, i64 } %loadN, 1 - %iNp162 = inttoptr i64 %ua.raw161 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp162) +dispatch.case.232: ; preds = %match.arm.49 + %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 + %iNp170 = inttoptr i64 %ua.raw169 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp170) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.203: ; preds = %match.arm.50 - %ua.raw164 = extractvalue { i64, i64 } %loadN, 1 - %iNp165 = inttoptr i64 %ua.raw164 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp165) +dispatch.case.233: ; preds = %match.arm.49 + %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 + %iNp173 = inttoptr i64 %ua.raw172 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp173) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.204: ; preds = %match.arm.50 - %ua.raw167 = extractvalue { i64, i64 } %loadN, 1 - %iNp168 = inttoptr i64 %ua.raw167 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp168) +dispatch.case.234: ; preds = %match.arm.49 + %ua.raw175 = extractvalue { i64, i64 } %loadN, 1 + %iNp176 = inttoptr i64 %ua.raw175 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp176) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.205: ; preds = %match.arm.50 - %ua.raw170 = extractvalue { i64, i64 } %loadN, 1 - %iNp171 = inttoptr i64 %ua.raw170 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp171) +dispatch.case.235: ; preds = %match.arm.49 + %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 + %iNp179 = inttoptr i64 %ua.raw178 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp179) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.206: ; preds = %match.arm.50 - %ua.raw173 = extractvalue { i64, i64 } %loadN, 1 - %iNp174 = inttoptr i64 %ua.raw173 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp174) +dispatch.case.236: ; preds = %match.arm.49 + %ua.raw181 = extractvalue { i64, i64 } %loadN, 1 + %iNp182 = inttoptr i64 %ua.raw181 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp182) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.207: ; preds = %match.arm.50 - %ua.raw176 = extractvalue { i64, i64 } %loadN, 1 - %iNp177 = inttoptr i64 %ua.raw176 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp177) +dispatch.case.237: ; preds = %match.arm.49 + %ua.raw184 = extractvalue { i64, i64 } %loadN, 1 + %iNp185 = inttoptr i64 %ua.raw184 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp185) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.208: ; preds = %match.arm.50 - %ua.raw179 = extractvalue { i64, i64 } %loadN, 1 - %iNp180 = inttoptr i64 %ua.raw179 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_VL__string(ptr %0, ptr %iNp180) +dispatch.case.238: ; preds = %match.arm.49 + %ua.raw187 = extractvalue { i64, i64 } %loadN, 1 + %iNp188 = inttoptr i64 %ua.raw187 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_VL__string(ptr %0, ptr %iNp188) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.209: ; preds = %match.arm.50 - %ua.raw182 = extractvalue { i64, i64 } %loadN, 1 - %iNp183 = inttoptr i64 %ua.raw182 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_StrCell(ptr %0, ptr %iNp183) +dispatch.case.239: ; preds = %match.arm.49 + %ua.raw190 = extractvalue { i64, i64 } %loadN, 1 + %iNp191 = inttoptr i64 %ua.raw190 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_StrCell(ptr %0, ptr %iNp191) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.210: ; preds = %match.arm.50 - %ua.raw185 = extractvalue { i64, i64 } %loadN, 1 - %iNp186 = inttoptr i64 %ua.raw185 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr___VL__string__Vtable(ptr %0, ptr %iNp186) +dispatch.case.240: ; preds = %match.arm.49 + %ua.raw193 = extractvalue { i64, i64 } %loadN, 1 + %iNp194 = inttoptr i64 %ua.raw193 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr___VL__string__Vtable(ptr %0, ptr %iNp194) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 } ; Function Attrs: nounwind @@ -1577,7 +1787,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.96, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.99, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1608,7 +1818,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1626,9 +1836,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1666,14 +1876,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, 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 @@ -1681,7 +1891,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, 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 @@ -1691,13 +1901,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, 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 @@ -1705,7 +1915,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.104, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1717,83 +1927,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, 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.103, 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.104, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.105, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1821,18 +1955,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1845,6 +2016,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, 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.110, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.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 { ptr, i64 }, ptr %alloca, align 8 %lenN = extractvalue { ptr, i64 } %loadN, 1 %loadN = load i64, ptr %allocaN, align 8 @@ -1853,11 +2063,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 4 }) + %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 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1908,7 +2118,7 @@ entry: call void @print__ct_seb9f5db11fd9fc4e__pack_s64(ptr @__sx_default_context, i64 %icallN) %allocaN = alloca { ptr, ptr }, align 8 %allocaN = alloca { { ptr, i64 } }, align 8 - store { { ptr, i64 } } { { ptr, i64 } { ptr @str.111, i64 2 } }, ptr %allocaN, align 8 + store { { ptr, i64 } } { { ptr, i64 } { ptr @str.114, i64 2 } }, ptr %allocaN, align 8 %loadN = load { { ptr, ptr, ptr }, ptr }, ptr @__sx_default_context, align 8 %sgN = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %sgN = extractvalue { ptr, ptr, ptr } %sgN, 0 @@ -1953,7 +2163,7 @@ entry: define internal void @print__ct_seb9f5db11fd9fc4e__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.112, i64 9 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.115, i64 9 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1968,7 +2178,7 @@ entry: %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.113, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.116, 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 6) @@ -1995,7 +2205,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.114, i64 9 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.117, i64 9 }) ret { ptr, i64 } %call } @@ -2010,7 +2220,7 @@ entry: define internal void @print__ct_sfd7f12a0a81d0d1c__pack_string(ptr %0, { ptr, i64 } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.115, i64 9 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.118, i64 9 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2028,7 +2238,7 @@ entry: %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.116, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.119, 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 6) @@ -2058,7 +2268,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.117, i64 9 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.120, i64 9 }) ret { ptr, i64 } %call } @@ -2067,35 +2277,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.118, i64 15 }, { ptr, i64 } { ptr @str.119, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.121, i64 15 }, { ptr, i64 } { ptr @str.122, 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.87 + br label %while.hdr.111 -while.hdr.87: ; preds = %fv.merge, %entry +while.hdr.111: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.88, label %while.exit.89 + br i1 %icmp, label %while.body.112, label %while.exit.113 -while.body.88: ; preds = %while.hdr.87 +while.body.112: ; preds = %while.hdr.111 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.90, label %if.merge.91 + br i1 %icmpN, label %if.then.114, label %if.merge.115 -while.exit.89: ; preds = %while.hdr.87 +while.exit.113: ; preds = %while.hdr.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 1 }) ret { ptr, i64 } %callN -if.then.90: ; preds = %while.body.88 +if.then.114: ; preds = %while.body.112 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.91 + br label %if.merge.115 -if.merge.91: ; preds = %if.then.90, %while.body.88 +if.merge.115: ; preds = %if.then.114, %while.body.112 %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 @@ -2103,7 +2313,7 @@ if.merge.91: ; preds = %if.then.90, %while. %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.125, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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 @@ -2123,12 +2333,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.87 + br label %while.hdr.111 -fv.default: ; preds = %if.merge.91 +fv.default: ; preds = %if.merge.115 br label %fv.merge -fv.case: ; preds = %if.merge.91 +fv.case: ; preds = %if.merge.115 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2136,19 +2346,19 @@ fv.case: ; preds = %if.merge.91 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.91 +fv.case17: ; preds = %if.merge.115 %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.91 +fv.case20: ; preds = %if.merge.115 %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.91 +fv.case24: ; preds = %if.merge.115 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2162,43 +2372,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.126, i64 9 }, { ptr, i64 } { ptr @str.127, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.129, i64 9 }, { ptr, i64 } { ptr @str.130, 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.92 + br label %while.hdr.116 -while.hdr.92: ; preds = %fv.merge, %entry +while.hdr.116: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.93, label %while.exit.94 + br i1 %icmp, label %while.body.117, label %while.exit.118 -while.body.93: ; preds = %while.hdr.92 +while.body.117: ; preds = %while.hdr.116 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.95, label %if.merge.96 + br i1 %icmpN, label %if.then.119, label %if.merge.120 -while.exit.94: ; preds = %while.hdr.92 +while.exit.118: ; preds = %while.hdr.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 1 }) ret { ptr, i64 } %callN -if.then.95: ; preds = %while.body.93 +if.then.119: ; preds = %while.body.117 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.96 + br label %if.merge.120 -if.merge.96: ; preds = %if.then.95, %while.body.93 +if.merge.120: ; preds = %if.then.119, %while.body.117 %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.133, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.136, 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.134, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8 @@ -2217,24 +2427,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.92 + br label %while.hdr.116 -fv.default: ; preds = %if.merge.96 +fv.default: ; preds = %if.merge.120 br label %fv.merge -fv.case: ; preds = %if.merge.96 +fv.case: ; preds = %if.merge.120 %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.96 +fv.case17: ; preds = %if.merge.120 %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.96 +fv.case21: ; preds = %if.merge.120 %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 @@ -2246,43 +2456,43 @@ 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.135, i64 10 }, { ptr, i64 } { ptr @str.136, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 10 }, { ptr, i64 } { ptr @str.139, 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.97 + br label %while.hdr.121 -while.hdr.97: ; preds = %if.merge.101, %entry +while.hdr.121: ; preds = %if.merge.125, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.98, label %while.exit.99 + br i1 %icmp, label %while.body.122, label %while.exit.123 -while.body.98: ; preds = %while.hdr.97 +while.body.122: ; preds = %while.hdr.121 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.100, label %if.merge.101 + br i1 %icmpN, label %if.then.124, label %if.merge.125 -while.exit.99: ; preds = %while.hdr.97 +while.exit.123: ; preds = %while.hdr.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 1 }) ret { ptr, i64 } %callN -if.then.100: ; preds = %while.body.98 +if.then.124: ; preds = %while.body.122 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) + %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 - br label %if.merge.101 + br label %if.merge.125 -if.merge.101: ; preds = %if.then.100, %while.body.98 +if.merge.125: ; preds = %if.then.124, %while.body.122 %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.139, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.142, 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.140, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2293,7 +2503,7 @@ if.merge.101: ; preds = %if.then.100, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.97 + br label %while.hdr.121 } ; Function Attrs: nounwind @@ -2301,43 +2511,43 @@ 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.141, i64 3 }, { ptr, i64 } { ptr @str.142, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.144, i64 3 }, { ptr, i64 } { ptr @str.145, 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.102 + br label %while.hdr.126 -while.hdr.102: ; preds = %fv.merge, %entry +while.hdr.126: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.103, label %while.exit.104 + br i1 %icmp, label %while.body.127, label %while.exit.128 -while.body.103: ; preds = %while.hdr.102 +while.body.127: ; preds = %while.hdr.126 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.105, label %if.merge.106 + br i1 %icmpN, label %if.then.129, label %if.merge.130 -while.exit.104: ; preds = %while.hdr.102 +while.exit.128: ; preds = %while.hdr.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 1 }) ret { ptr, i64 } %callN -if.then.105: ; preds = %while.body.103 +if.then.129: ; preds = %while.body.127 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.106 + br label %if.merge.130 -if.merge.106: ; preds = %if.then.105, %while.body.103 +if.merge.130: ; preds = %if.then.129, %while.body.127 %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.146, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 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.147, i64 2 }) + %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 { i64 }, ptr %alloca, align 8 @@ -2354,12 +2564,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.102 + br label %while.hdr.126 -fv.default: ; preds = %if.merge.106 +fv.default: ; preds = %if.merge.130 br label %fv.merge -fv.case: ; preds = %if.merge.106 +fv.case: ; preds = %if.merge.130 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2370,43 +2580,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.148, i64 10 }, { ptr, i64 } { ptr @str.149, i64 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.107 + br label %while.hdr.131 -while.hdr.107: ; preds = %fv.merge, %entry +while.hdr.131: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.108, label %while.exit.109 + br i1 %icmp, label %while.body.132, label %while.exit.133 -while.body.108: ; preds = %while.hdr.107 +while.body.132: ; preds = %while.hdr.131 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.110, label %if.merge.111 + br i1 %icmpN, label %if.then.134, label %if.merge.135 -while.exit.109: ; preds = %while.hdr.107 +while.exit.133: ; preds = %while.hdr.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 1 }) ret { ptr, i64 } %callN -if.then.110: ; preds = %while.body.108 +if.then.134: ; preds = %while.body.132 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 2 }) + %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.111 + br label %if.merge.135 -if.merge.111: ; preds = %if.then.110, %while.body.108 +if.merge.135: ; preds = %if.then.134, %while.body.132 %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.154, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.157, 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.155, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, 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 @@ -2424,18 +2634,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.107 + br label %while.hdr.131 -fv.default: ; preds = %if.merge.111 +fv.default: ; preds = %if.merge.135 br label %fv.merge -fv.case: ; preds = %if.merge.111 +fv.case: ; preds = %if.merge.135 %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.111 +fv.case17: ; preds = %if.merge.135 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2446,43 +2656,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.156, i64 5 }, { ptr, i64 } { ptr @str.157, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.159, i64 5 }, { ptr, i64 } { ptr @str.160, 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.112 + br label %while.hdr.136 -while.hdr.112: ; preds = %fv.merge, %entry +while.hdr.136: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.113, label %while.exit.114 + br i1 %icmp, label %while.body.137, label %while.exit.138 -while.body.113: ; preds = %while.hdr.112 +while.body.137: ; preds = %while.hdr.136 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.115, label %if.merge.116 + br i1 %icmpN, label %if.then.139, label %if.merge.140 -while.exit.114: ; preds = %while.hdr.112 +while.exit.138: ; preds = %while.hdr.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 1 }) ret { ptr, i64 } %callN -if.then.115: ; preds = %while.body.113 +if.then.139: ; preds = %while.body.137 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.116 + br label %if.merge.140 -if.merge.116: ; preds = %if.then.115, %while.body.113 +if.merge.140: ; preds = %if.then.139, %while.body.137 %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.163, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.166, 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.164, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2501,23 +2711,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.112 + br label %while.hdr.136 -fv.default: ; preds = %if.merge.116 +fv.default: ; preds = %if.merge.140 br label %fv.merge -fv.case: ; preds = %if.merge.116 +fv.case: ; preds = %if.merge.140 %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.116 +fv.case17: ; preds = %if.merge.140 %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.116 +fv.case20: ; preds = %if.merge.140 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2531,43 +2741,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.165, i64 8 }, { ptr, i64 } { ptr @str.166, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.168, i64 8 }, { ptr, i64 } { ptr @str.169, 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 + br label %while.hdr.141 -while.hdr.117: ; preds = %fv.merge, %entry +while.hdr.141: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.118, label %while.exit.119 + br i1 %icmp, label %while.body.142, label %while.exit.143 -while.body.118: ; preds = %while.hdr.117 +while.body.142: ; preds = %while.hdr.141 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.120, label %if.merge.121 + br i1 %icmpN, label %if.then.144, label %if.merge.145 -while.exit.119: ; preds = %while.hdr.117 +while.exit.143: ; preds = %while.hdr.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 1 }) ret { ptr, i64 } %callN -if.then.120: ; preds = %while.body.118 +if.then.144: ; preds = %while.body.142 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 2 }) + %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 - br label %if.merge.121 + br label %if.merge.145 -if.merge.121: ; preds = %if.then.120, %while.body.118 +if.merge.145: ; preds = %if.then.144, %while.body.142 %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.172, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.175, 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.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, 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 @@ -2586,23 +2796,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.117 + br label %while.hdr.141 -fv.default: ; preds = %if.merge.121 +fv.default: ; preds = %if.merge.145 br label %fv.merge -fv.case: ; preds = %if.merge.121 +fv.case: ; preds = %if.merge.145 %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.121 +fv.case17: ; preds = %if.merge.145 %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.121 +fv.case20: ; preds = %if.merge.145 %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 @@ -2613,43 +2823,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.174, i64 17 }, { ptr, i64 } { ptr @str.175, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.177, i64 17 }, { ptr, i64 } { ptr @str.178, 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 + br label %while.hdr.146 -while.hdr.122: ; preds = %fv.merge, %entry +while.hdr.146: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.123, label %while.exit.124 + br i1 %icmp, label %while.body.147, label %while.exit.148 -while.body.123: ; preds = %while.hdr.122 +while.body.147: ; preds = %while.hdr.146 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.125, label %if.merge.126 + br i1 %icmpN, label %if.then.149, label %if.merge.150 -while.exit.124: ; preds = %while.hdr.122 +while.exit.148: ; preds = %while.hdr.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) ret { ptr, i64 } %callN -if.then.125: ; preds = %while.body.123 +if.then.149: ; preds = %while.body.147 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) + %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 - br label %if.merge.126 + br label %if.merge.150 -if.merge.126: ; preds = %if.then.125, %while.body.123 +if.merge.150: ; preds = %if.then.149, %while.body.147 %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.182, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.185, 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.183, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, 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 @@ -2669,12 +2879,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.122 + br label %while.hdr.146 -fv.default: ; preds = %if.merge.126 +fv.default: ; preds = %if.merge.150 br label %fv.merge -fv.case: ; preds = %if.merge.126 +fv.case: ; preds = %if.merge.150 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2682,17 +2892,17 @@ fv.case: ; preds = %if.merge.126 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.126 +fv.case17: ; preds = %if.merge.150 %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.126 +fv.case20: ; preds = %if.merge.150 %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.126 +fv.case23: ; preds = %if.merge.150 %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 @@ -2703,43 +2913,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.184, i64 7 }, { ptr, i64 } { ptr @str.185, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.187, i64 7 }, { ptr, i64 } { ptr @str.188, 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 + br label %while.hdr.151 -while.hdr.127: ; preds = %fv.merge, %entry +while.hdr.151: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.128, label %while.exit.129 + br i1 %icmp, label %while.body.152, label %while.exit.153 -while.body.128: ; preds = %while.hdr.127 +while.body.152: ; preds = %while.hdr.151 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.130, label %if.merge.131 + br i1 %icmpN, label %if.then.154, label %if.merge.155 -while.exit.129: ; preds = %while.hdr.127 +while.exit.153: ; preds = %while.hdr.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) ret { ptr, i64 } %callN -if.then.130: ; preds = %while.body.128 +if.then.154: ; preds = %while.body.152 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.131 + br label %if.merge.155 -if.merge.131: ; preds = %if.then.130, %while.body.128 +if.merge.155: ; preds = %if.then.154, %while.body.152 %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.190, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.193, 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.191, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, 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 @@ -2757,12 +2967,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.127 + br label %while.hdr.151 -fv.default: ; preds = %if.merge.131 +fv.default: ; preds = %if.merge.155 br label %fv.merge -fv.case: ; preds = %if.merge.131 +fv.case: ; preds = %if.merge.155 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2770,7 +2980,7 @@ fv.case: ; preds = %if.merge.131 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.131 +fv.case17: ; preds = %if.merge.155 %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 @@ -2782,43 +2992,43 @@ define internal { ptr, i64 } @struct_to_string__IntCell(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.192, i64 7 }, { ptr, i64 } { ptr @str.193, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.195, i64 7 }, { ptr, i64 } { ptr @str.196, 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 + br label %while.hdr.156 -while.hdr.132: ; preds = %fv.merge, %entry +while.hdr.156: ; 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 + br i1 %icmp, label %while.body.157, label %while.exit.158 -while.body.133: ; preds = %while.hdr.132 +while.body.157: ; preds = %while.hdr.156 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.135, label %if.merge.136 + br i1 %icmpN, label %if.then.159, label %if.merge.160 -while.exit.134: ; preds = %while.hdr.132 +while.exit.158: ; preds = %while.hdr.156 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 1 }) ret { ptr, i64 } %callN -if.then.135: ; preds = %while.body.133 +if.then.159: ; preds = %while.body.157 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.136 + br label %if.merge.160 -if.merge.136: ; preds = %if.then.135, %while.body.133 +if.merge.160: ; preds = %if.then.159, %while.body.157 %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.197, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.200, 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.198, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, 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 @@ -2835,12 +3045,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.132 + br label %while.hdr.156 -fv.default: ; preds = %if.merge.136 +fv.default: ; preds = %if.merge.160 br label %fv.merge -fv.case: ; preds = %if.merge.136 +fv.case: ; preds = %if.merge.160 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2851,43 +3061,43 @@ define internal { ptr, i64 } @struct_to_string__StrCell(ptr %0, { { ptr, i64 } } 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.199, i64 7 }, { ptr, i64 } { ptr @str.200, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 7 }, { ptr, i64 } { ptr @str.203, 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 + br label %while.hdr.161 -while.hdr.137: ; preds = %fv.merge, %entry +while.hdr.161: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.138, label %while.exit.139 + br i1 %icmp, label %while.body.162, label %while.exit.163 -while.body.138: ; preds = %while.hdr.137 +while.body.162: ; preds = %while.hdr.161 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.140, label %if.merge.141 + br i1 %icmpN, label %if.then.164, label %if.merge.165 -while.exit.139: ; preds = %while.hdr.137 +while.exit.163: ; preds = %while.hdr.161 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.204, i64 1 }) ret { ptr, i64 } %callN -if.then.140: ; preds = %while.body.138 +if.then.164: ; preds = %while.body.162 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.205, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.141 + br label %if.merge.165 -if.merge.141: ; preds = %if.then.140, %while.body.138 +if.merge.165: ; preds = %if.then.164, %while.body.162 %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.204, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.207, 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.205, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, 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 @@ -2904,12 +3114,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.137 + br label %while.hdr.161 -fv.default: ; preds = %if.merge.141 +fv.default: ; preds = %if.merge.165 br label %fv.merge -fv.case: ; preds = %if.merge.141 +fv.case: ; preds = %if.merge.165 %fv.field = extractvalue { { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2923,43 +3133,43 @@ define internal { ptr, i64 } @struct_to_string__VL__s64(ptr %0, { ptr, ptr } %1) entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 7 }, { ptr, i64 } { ptr @str.207, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 7 }, { ptr, i64 } { ptr @str.210, 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 + br label %while.hdr.166 -while.hdr.142: ; preds = %fv.merge, %entry +while.hdr.166: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.143, label %while.exit.144 + br i1 %icmp, label %while.body.167, label %while.exit.168 -while.body.143: ; preds = %while.hdr.142 +while.body.167: ; preds = %while.hdr.166 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.145, label %if.merge.146 + br i1 %icmpN, label %if.then.169, label %if.merge.170 -while.exit.144: ; preds = %while.hdr.142 +while.exit.168: ; preds = %while.hdr.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.211, i64 1 }) ret { ptr, i64 } %callN -if.then.145: ; preds = %while.body.143 +if.then.169: ; preds = %while.body.167 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.212, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.146 + br label %if.merge.170 -if.merge.146: ; preds = %if.then.145, %while.body.143 +if.merge.170: ; preds = %if.then.169, %while.body.167 %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.212, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.215, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -2977,18 +3187,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.142 + br label %while.hdr.166 -fv.default: ; preds = %if.merge.146 +fv.default: ; preds = %if.merge.170 br label %fv.merge -fv.case: ; preds = %if.merge.146 +fv.case: ; preds = %if.merge.170 %fv.field = extractvalue { 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.146 +fv.case17: ; preds = %if.merge.170 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3000,43 +3210,43 @@ define internal { ptr, i64 } @struct_to_string____VL__s64__Vtable(ptr %0, { ptr entry: %alloca = alloca { ptr }, align 8 store { ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 17 }, { ptr, i64 } { ptr @str.215, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 17 }, { ptr, i64 } { ptr @str.218, 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 + br label %while.hdr.171 -while.hdr.147: ; preds = %fv.merge, %entry +while.hdr.171: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.148, label %while.exit.149 + br i1 %icmp, label %while.body.172, label %while.exit.173 -while.body.148: ; preds = %while.hdr.147 +while.body.172: ; preds = %while.hdr.171 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.150, label %if.merge.151 + br i1 %icmpN, label %if.then.174, label %if.merge.175 -while.exit.149: ; preds = %while.hdr.147 +while.exit.173: ; preds = %while.hdr.171 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.219, i64 1 }) ret { ptr, i64 } %callN -if.then.150: ; preds = %while.body.148 +if.then.174: ; preds = %while.body.172 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.220, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.151 + br label %if.merge.175 -if.merge.151: ; preds = %if.then.150, %while.body.148 +if.merge.175: ; preds = %if.then.174, %while.body.172 %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.219, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.222, 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.220, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr }, ptr %alloca, align 8 @@ -3053,12 +3263,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.147 + br label %while.hdr.171 -fv.default: ; preds = %if.merge.151 +fv.default: ; preds = %if.merge.175 br label %fv.merge -fv.case: ; preds = %if.merge.151 +fv.case: ; preds = %if.merge.175 %fv.field = extractvalue { ptr } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1 @@ -3070,43 +3280,43 @@ define internal { ptr, i64 } @struct_to_string__VL__string(ptr %0, { ptr, ptr } entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 10 }, { ptr, i64 } { ptr @str.222, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 10 }, { ptr, i64 } { ptr @str.225, 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 + br label %while.hdr.176 -while.hdr.152: ; preds = %fv.merge, %entry +while.hdr.176: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.153, label %while.exit.154 + br i1 %icmp, label %while.body.177, label %while.exit.178 -while.body.153: ; preds = %while.hdr.152 +while.body.177: ; preds = %while.hdr.176 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.155, label %if.merge.156 + br i1 %icmpN, label %if.then.179, label %if.merge.180 -while.exit.154: ; preds = %while.hdr.152 +while.exit.178: ; preds = %while.hdr.176 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.223, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.226, i64 1 }) ret { ptr, i64 } %callN -if.then.155: ; preds = %while.body.153 +if.then.179: ; preds = %while.body.177 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.156 + br label %if.merge.180 -if.merge.156: ; preds = %if.then.155, %while.body.153 +if.merge.180: ; preds = %if.then.179, %while.body.177 %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.227, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.230, 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.228, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.231, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -3124,18 +3334,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.152 + br label %while.hdr.176 -fv.default: ; preds = %if.merge.156 +fv.default: ; preds = %if.merge.180 br label %fv.merge -fv.case: ; preds = %if.merge.156 +fv.case: ; preds = %if.merge.180 %fv.field = extractvalue { 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.156 +fv.case17: ; preds = %if.merge.180 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3147,43 +3357,43 @@ define internal { ptr, i64 } @struct_to_string____VL__string__Vtable(ptr %0, { p entry: %alloca = alloca { ptr }, align 8 store { ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 20 }, { ptr, i64 } { ptr @str.230, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 20 }, { ptr, i64 } { ptr @str.233, 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 + br label %while.hdr.181 -while.hdr.157: ; preds = %fv.merge, %entry +while.hdr.181: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.158, label %while.exit.159 + br i1 %icmp, label %while.body.182, label %while.exit.183 -while.body.158: ; preds = %while.hdr.157 +while.body.182: ; preds = %while.hdr.181 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.160, label %if.merge.161 + br i1 %icmpN, label %if.then.184, label %if.merge.185 -while.exit.159: ; preds = %while.hdr.157 +while.exit.183: ; preds = %while.hdr.181 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.231, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.234, i64 1 }) ret { ptr, i64 } %callN -if.then.160: ; preds = %while.body.158 +if.then.184: ; preds = %while.body.182 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.232, i64 2 }) + %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 - br label %if.merge.161 + br label %if.merge.185 -if.merge.161: ; preds = %if.then.160, %while.body.158 +if.merge.185: ; preds = %if.then.184, %while.body.182 %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.234, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.237, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.238, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr }, ptr %alloca, align 8 @@ -3200,51 +3410,101 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.157 + br label %while.hdr.181 -fv.default: ; preds = %if.merge.161 +fv.default: ; preds = %if.merge.185 br label %fv.merge -fv.case: ; preds = %if.merge.161 +fv.case: ; preds = %if.merge.185 %fv.field = extractvalue { 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 } +; 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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.239, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.190 + +while.hdr.190: ; preds = %if.merge.194, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.191, label %while.exit.192 + +while.body.191: ; preds = %while.hdr.190 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.193, label %if.merge.194 + +while.exit.192: ; preds = %while.hdr.190 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 1 }) + ret { ptr, i64 } %call + +if.then.193: ; preds = %while.body.191 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.241, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.194 + +if.merge.194: ; preds = %if.then.193, %while.body.191 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.190 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.236, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.242, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.165 + br label %while.hdr.195 -while.hdr.165: ; preds = %if.merge.169, %entry +while.hdr.195: ; preds = %if.merge.199, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.166, label %while.exit.167 + br i1 %icmp, label %while.body.196, label %while.exit.197 -while.body.166: ; preds = %while.hdr.165 +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.168, label %if.merge.169 + br i1 %icmpN, label %if.then.198, label %if.merge.199 -while.exit.167: ; preds = %while.hdr.165 +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.237, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.243, i64 1 }) ret { ptr, i64 } %call -if.then.168: ; preds = %while.body.166 +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.238, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.244, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.169 + br label %if.merge.199 -if.merge.169: ; preds = %if.then.168, %while.body.166 +if.merge.199: ; preds = %if.then.198, %while.body.196 %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 @@ -3262,7 +3522,7 @@ if.merge.169: ; preds = %if.then.168, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.165 + br label %while.hdr.195 } ; Function Attrs: nounwind @@ -3271,35 +3531,35 @@ 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.239, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.245, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.174 + br label %while.hdr.204 -while.hdr.174: ; preds = %if.merge.178, %entry +while.hdr.204: ; preds = %if.merge.208, %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.175, label %while.exit.176 + br i1 %icmp, label %while.body.205, label %while.exit.206 -while.body.175: ; preds = %while.hdr.174 +while.body.205: ; preds = %while.hdr.204 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.177, label %if.merge.178 + br i1 %icmpN, label %if.then.207, label %if.merge.208 -while.exit.176: ; preds = %while.hdr.174 +while.exit.206: ; preds = %while.hdr.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.246, i64 1 }) ret { ptr, i64 } %call -if.then.177: ; preds = %while.body.175 +if.then.207: ; preds = %while.body.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.241, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.247, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.178 + br label %if.merge.208 -if.merge.178: ; preds = %if.then.177, %while.body.175 +if.merge.208: ; preds = %if.then.207, %while.body.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3316,7 +3576,7 @@ if.merge.178: ; preds = %if.then.177, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.174 + br label %while.hdr.204 } ; Function Attrs: nounwind @@ -3325,35 +3585,35 @@ 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.242, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.248, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.179 + br label %while.hdr.209 -while.hdr.179: ; preds = %if.merge.183, %entry +while.hdr.209: ; preds = %if.merge.213, %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.180, label %while.exit.181 + br i1 %icmp, label %while.body.210, label %while.exit.211 -while.body.180: ; preds = %while.hdr.179 +while.body.210: ; preds = %while.hdr.209 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.182, label %if.merge.183 + br i1 %icmpN, label %if.then.212, label %if.merge.213 -while.exit.181: ; preds = %while.hdr.179 +while.exit.211: ; preds = %while.hdr.209 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.243, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.249, i64 1 }) ret { ptr, i64 } %call -if.then.182: ; preds = %while.body.180 +if.then.212: ; preds = %while.body.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.244, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.250, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.183 + br label %if.merge.213 -if.merge.183: ; preds = %if.then.182, %while.body.180 +if.merge.213: ; preds = %if.then.212, %while.body.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3370,95 +3630,11 @@ if.merge.183: ; preds = %if.then.182, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.179 + br label %while.hdr.209 } ; 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.211, label %if.else.212 - -if.then.211: ; preds = %entry - br label %if.merge.213 - -if.else.212: ; 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.247, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.213 - -if.merge.213: ; preds = %if.else.212, %if.then.211 - %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.211 ], [ %callN, %if.else.212 ] - 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.235, label %if.else.236 - -if.then.235: ; preds = %entry - br label %if.merge.237 - -if.else.236: ; 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.250, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.237 - -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] - 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.238, label %if.else.239 - -if.then.238: ; preds = %entry - br label %if.merge.240 - -if.else.239: ; 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.253, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.240 - -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] - 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 @@ -3476,12 +3652,96 @@ if.then.241: ; preds = %entry if.else.242: ; 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.256, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 5 }, { ptr, i64 } %callN) br label %if.merge.243 if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.254, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] + %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] + 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.257, label %if.else.258 + +if.then.257: ; preds = %entry + br label %if.merge.259 + +if.else.258: ; 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.256, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.259 + +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.254, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] + 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.260, label %if.else.261 + +if.then.260: ; preds = %entry + br label %if.merge.262 + +if.else.261: ; 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.259, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.262 + +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.257, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] + 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.263, label %if.else.264 + +if.then.263: ; preds = %entry + br label %if.merge.265 + +if.else.264: ; 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.262, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.261, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.265 + +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.260, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3496,20 +3756,20 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.259, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.265, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.264, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.257, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.263, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } @@ -3523,20 +3783,20 @@ entry: 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.247, label %if.else.248 + br i1 %icmp, label %if.then.269, label %if.else.270 -if.then.247: ; preds = %entry - br label %if.merge.249 +if.then.269: ; preds = %entry + br label %if.merge.271 -if.else.248: ; preds = %entry +if.else.270: ; 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.262, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.261, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.249 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.267, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.271 -if.merge.249: ; preds = %if.else.248, %if.then.247 - %bp = phi { ptr, i64 } [ { ptr @str.260, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] +if.merge.271: ; preds = %if.else.270, %if.then.269 + %bp = phi { ptr, i64 } [ { ptr @str.266, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] ret { ptr, i64 } %bp } @@ -3551,20 +3811,20 @@ entry: 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.250, label %if.else.251 + br i1 %icmp, label %if.then.272, label %if.else.273 -if.then.250: ; preds = %entry - br label %if.merge.252 +if.then.272: ; preds = %entry + br label %if.merge.274 -if.else.251: ; preds = %entry +if.else.273: ; 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.265, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.264, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.252 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.270, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.274 -if.merge.252: ; preds = %if.else.251, %if.then.250 - %bp = phi { ptr, i64 } [ { ptr @str.263, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] +if.merge.274: ; preds = %if.else.273, %if.then.272 + %bp = phi { ptr, i64 } [ { ptr @str.269, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] ret { ptr, i64 } %bp } @@ -3579,20 +3839,20 @@ entry: 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.253, label %if.else.254 + br i1 %icmp, label %if.then.275, label %if.else.276 -if.then.253: ; preds = %entry - br label %if.merge.255 +if.then.275: ; preds = %entry + br label %if.merge.277 -if.else.254: ; preds = %entry +if.else.276: ; 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.268, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.267, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.255 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.274, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.273, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.277 -if.merge.255: ; preds = %if.else.254, %if.then.253 - %bp = phi { ptr, i64 } [ { ptr @str.266, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] +if.merge.277: ; preds = %if.else.276, %if.then.275 + %bp = phi { ptr, i64 } [ { ptr @str.272, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] ret { ptr, i64 } %bp } @@ -3607,20 +3867,20 @@ entry: 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.256, label %if.else.257 + br i1 %icmp, label %if.then.278, label %if.else.279 -if.then.256: ; preds = %entry - br label %if.merge.258 +if.then.278: ; preds = %entry + br label %if.merge.280 -if.else.257: ; preds = %entry +if.else.279: ; 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.271, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.270, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.258 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.277, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.276, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.280 -if.merge.258: ; preds = %if.else.257, %if.then.256 - %bp = phi { ptr, i64 } [ { ptr @str.269, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] +if.merge.280: ; preds = %if.else.279, %if.then.278 + %bp = phi { ptr, i64 } [ { ptr @str.275, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] ret { ptr, i64 } %bp } @@ -3635,20 +3895,20 @@ entry: 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.259, label %if.else.260 + br i1 %icmp, label %if.then.281, label %if.else.282 -if.then.259: ; preds = %entry - br label %if.merge.261 +if.then.281: ; preds = %entry + br label %if.merge.283 -if.else.260: ; preds = %entry +if.else.282: ; 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.274, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.273, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.261 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.279, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.283 -if.merge.261: ; preds = %if.else.260, %if.then.259 - %bp = phi { ptr, i64 } [ { ptr @str.272, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] +if.merge.283: ; preds = %if.else.282, %if.then.281 + %bp = phi { ptr, i64 } [ { ptr @str.278, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] ret { ptr, i64 } %bp } @@ -3663,20 +3923,20 @@ entry: 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.262, label %if.else.263 + br i1 %icmp, label %if.then.284, label %if.else.285 -if.then.262: ; preds = %entry - br label %if.merge.264 +if.then.284: ; preds = %entry + br label %if.merge.286 -if.else.263: ; preds = %entry +if.else.285: ; 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.277, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.276, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.264 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.282, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.286 -if.merge.264: ; preds = %if.else.263, %if.then.262 - %bp = phi { ptr, i64 } [ { ptr @str.275, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] +if.merge.286: ; preds = %if.else.285, %if.then.284 + %bp = phi { ptr, i64 } [ { ptr @str.281, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] ret { ptr, i64 } %bp } @@ -3691,20 +3951,20 @@ entry: 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.265, label %if.else.266 + br i1 %icmp, label %if.then.287, label %if.else.288 -if.then.265: ; preds = %entry - br label %if.merge.267 +if.then.287: ; preds = %entry + br label %if.merge.289 -if.else.266: ; preds = %entry +if.else.288: ; 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.280, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.279, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.267 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.285, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.289 -if.merge.267: ; preds = %if.else.266, %if.then.265 - %bp = phi { ptr, i64 } [ { ptr @str.278, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] +if.merge.289: ; preds = %if.else.288, %if.then.287 + %bp = phi { ptr, i64 } [ { ptr @str.284, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] ret { ptr, i64 } %bp } @@ -3719,20 +3979,20 @@ entry: 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.268, label %if.else.269 + br i1 %icmp, label %if.then.290, label %if.else.291 -if.then.268: ; preds = %entry - br label %if.merge.270 +if.then.290: ; preds = %entry + br label %if.merge.292 -if.else.269: ; preds = %entry +if.else.291: ; 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.283, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.282, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.270 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.289, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.288, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.292 -if.merge.270: ; preds = %if.else.269, %if.then.268 - %bp = phi { ptr, i64 } [ { ptr @str.281, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] +if.merge.292: ; preds = %if.else.291, %if.then.290 + %bp = phi { ptr, i64 } [ { ptr @str.287, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] ret { ptr, i64 } %bp } @@ -3747,20 +4007,20 @@ entry: 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.271, label %if.else.272 + br i1 %icmp, label %if.then.293, label %if.else.294 -if.then.271: ; preds = %entry - br label %if.merge.273 +if.then.293: ; preds = %entry + br label %if.merge.295 -if.else.272: ; preds = %entry +if.else.294: ; 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.286, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.285, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.273 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.292, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.291, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.295 -if.merge.273: ; preds = %if.else.272, %if.then.271 - %bp = phi { ptr, i64 } [ { ptr @str.284, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] +if.merge.295: ; preds = %if.else.294, %if.then.293 + %bp = phi { ptr, i64 } [ { ptr @str.290, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] ret { ptr, i64 } %bp } @@ -3775,20 +4035,20 @@ entry: 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.274, label %if.else.275 + br i1 %icmp, label %if.then.296, label %if.else.297 -if.then.274: ; preds = %entry - br label %if.merge.276 +if.then.296: ; preds = %entry + br label %if.merge.298 -if.else.275: ; preds = %entry +if.else.297: ; 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.289, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.288, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.276 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.295, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.294, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.298 -if.merge.276: ; preds = %if.else.275, %if.then.274 - %bp = phi { ptr, i64 } [ { ptr @str.287, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] +if.merge.298: ; preds = %if.else.297, %if.then.296 + %bp = phi { ptr, i64 } [ { ptr @str.293, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] ret { ptr, i64 } %bp } @@ -3803,20 +4063,20 @@ entry: 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.277, label %if.else.278 + br i1 %icmp, label %if.then.299, label %if.else.300 -if.then.277: ; preds = %entry - br label %if.merge.279 +if.then.299: ; preds = %entry + br label %if.merge.301 -if.else.278: ; preds = %entry +if.else.300: ; 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.292, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.291, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.279 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.298, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.297, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.301 -if.merge.279: ; preds = %if.else.278, %if.then.277 - %bp = phi { ptr, i64 } [ { ptr @str.290, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] +if.merge.301: ; preds = %if.else.300, %if.then.299 + %bp = phi { ptr, i64 } [ { ptr @str.296, i64 4 }, %if.then.299 ], [ %callN, %if.else.300 ] ret { ptr, i64 } %bp } @@ -3831,20 +4091,20 @@ entry: 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.280, label %if.else.281 + br i1 %icmp, label %if.then.302, label %if.else.303 -if.then.280: ; preds = %entry - br label %if.merge.282 +if.then.302: ; preds = %entry + br label %if.merge.304 -if.else.281: ; preds = %entry +if.else.303: ; 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.295, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.294, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.282 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.300, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.304 -if.merge.282: ; preds = %if.else.281, %if.then.280 - %bp = phi { ptr, i64 } [ { ptr @str.293, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] +if.merge.304: ; preds = %if.else.303, %if.then.302 + %bp = phi { ptr, i64 } [ { ptr @str.299, i64 4 }, %if.then.302 ], [ %callN, %if.else.303 ] ret { ptr, i64 } %bp } @@ -3859,20 +4119,20 @@ entry: 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.283, label %if.else.284 + br i1 %icmp, label %if.then.305, label %if.else.306 -if.then.283: ; preds = %entry - br label %if.merge.285 +if.then.305: ; preds = %entry + br label %if.merge.307 -if.else.284: ; preds = %entry +if.else.306: ; 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.298, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.297, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.285 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.303, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.307 -if.merge.285: ; preds = %if.else.284, %if.then.283 - %bp = phi { ptr, i64 } [ { ptr @str.296, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] +if.merge.307: ; preds = %if.else.306, %if.then.305 + %bp = phi { ptr, i64 } [ { ptr @str.302, i64 4 }, %if.then.305 ], [ %callN, %if.else.306 ] ret { ptr, i64 } %bp } @@ -3887,20 +4147,20 @@ entry: 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.286, label %if.else.287 + br i1 %icmp, label %if.then.308, label %if.else.309 -if.then.286: ; preds = %entry - br label %if.merge.288 +if.then.308: ; preds = %entry + br label %if.merge.310 -if.else.287: ; preds = %entry +if.else.309: ; 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.301, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.300, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.288 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.306, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.310 -if.merge.288: ; preds = %if.else.287, %if.then.286 - %bp = phi { ptr, i64 } [ { ptr @str.299, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] +if.merge.310: ; preds = %if.else.309, %if.then.308 + %bp = phi { ptr, i64 } [ { ptr @str.305, i64 4 }, %if.then.308 ], [ %callN, %if.else.309 ] ret { ptr, i64 } %bp } @@ -3915,20 +4175,20 @@ entry: 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.289, label %if.else.290 + br i1 %icmp, label %if.then.311, label %if.else.312 -if.then.289: ; preds = %entry - br label %if.merge.291 +if.then.311: ; preds = %entry + br label %if.merge.313 -if.else.290: ; preds = %entry +if.else.312: ; 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.304, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.303, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.291 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.309, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.313 -if.merge.291: ; preds = %if.else.290, %if.then.289 - %bp = phi { ptr, i64 } [ { ptr @str.302, i64 4 }, %if.then.289 ], [ %callN, %if.else.290 ] +if.merge.313: ; preds = %if.else.312, %if.then.311 + %bp = phi { ptr, i64 } [ { ptr @str.308, i64 4 }, %if.then.311 ], [ %callN, %if.else.312 ] ret { ptr, i64 } %bp } @@ -3943,20 +4203,20 @@ entry: 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.292, label %if.else.293 + br i1 %icmp, label %if.then.314, label %if.else.315 -if.then.292: ; preds = %entry - br label %if.merge.294 +if.then.314: ; preds = %entry + br label %if.merge.316 -if.else.293: ; preds = %entry +if.else.315: ; 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.307, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.306, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.294 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.313, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.312, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.316 -if.merge.294: ; preds = %if.else.293, %if.then.292 - %bp = phi { ptr, i64 } [ { ptr @str.305, i64 4 }, %if.then.292 ], [ %callN, %if.else.293 ] +if.merge.316: ; preds = %if.else.315, %if.then.314 + %bp = phi { ptr, i64 } [ { ptr @str.311, i64 4 }, %if.then.314 ], [ %callN, %if.else.315 ] ret { ptr, i64 } %bp } @@ -3971,20 +4231,20 @@ entry: 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.295, label %if.else.296 + br i1 %icmp, label %if.then.317, label %if.else.318 -if.then.295: ; preds = %entry - br label %if.merge.297 +if.then.317: ; preds = %entry + br label %if.merge.319 -if.else.296: ; preds = %entry +if.else.318: ; 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.310, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.309, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.297 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.316, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.315, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.319 -if.merge.297: ; preds = %if.else.296, %if.then.295 - %bp = phi { ptr, i64 } [ { ptr @str.308, i64 4 }, %if.then.295 ], [ %callN, %if.else.296 ] +if.merge.319: ; preds = %if.else.318, %if.then.317 + %bp = phi { ptr, i64 } [ { ptr @str.314, i64 4 }, %if.then.317 ], [ %callN, %if.else.318 ] ret { ptr, i64 } %bp } @@ -3999,20 +4259,20 @@ entry: 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.298, label %if.else.299 + br i1 %icmp, label %if.then.320, label %if.else.321 -if.then.298: ; preds = %entry - br label %if.merge.300 +if.then.320: ; preds = %entry + br label %if.merge.322 -if.else.299: ; preds = %entry +if.else.321: ; 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.313, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.312, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.300 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.319, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.318, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.322 -if.merge.300: ; preds = %if.else.299, %if.then.298 - %bp = phi { ptr, i64 } [ { ptr @str.311, i64 4 }, %if.then.298 ], [ %callN, %if.else.299 ] +if.merge.322: ; preds = %if.else.321, %if.then.320 + %bp = phi { ptr, i64 } [ { ptr @str.317, i64 4 }, %if.then.320 ], [ %callN, %if.else.321 ] ret { ptr, i64 } %bp } @@ -4027,20 +4287,20 @@ entry: 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.301, label %if.else.302 + br i1 %icmp, label %if.then.323, label %if.else.324 -if.then.301: ; preds = %entry - br label %if.merge.303 +if.then.323: ; preds = %entry + br label %if.merge.325 -if.else.302: ; preds = %entry +if.else.324: ; 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.316, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.315, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.303 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.322, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.321, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.325 -if.merge.303: ; preds = %if.else.302, %if.then.301 - %bp = phi { ptr, i64 } [ { ptr @str.314, i64 4 }, %if.then.301 ], [ %callN, %if.else.302 ] +if.merge.325: ; preds = %if.else.324, %if.then.323 + %bp = phi { ptr, i64 } [ { ptr @str.320, i64 4 }, %if.then.323 ], [ %callN, %if.else.324 ] ret { ptr, i64 } %bp } @@ -4055,23 +4315,21 @@ entry: 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.304, label %if.else.305 + br i1 %icmp, label %if.then.326, label %if.else.327 -if.then.304: ; preds = %entry - br label %if.merge.306 +if.then.326: ; preds = %entry + br label %if.merge.328 -if.else.305: ; preds = %entry +if.else.327: ; 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.319, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.318, i64 21 }, { ptr, i64 } %callN) - br label %if.merge.306 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.325, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.324, i64 21 }, { ptr, i64 } %callN) + br label %if.merge.328 -if.merge.306: ; preds = %if.else.305, %if.then.304 - %bp = phi { ptr, i64 } [ { ptr @str.317, i64 4 }, %if.then.304 ], [ %callN, %if.else.305 ] +if.merge.328: ; preds = %if.else.327, %if.then.326 + %bp = phi { ptr, i64 } [ { ptr @str.323, i64 4 }, %if.then.326 ], [ %callN, %if.else.327 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0414-protocols-generic-struct-protocol-erase.ir b/examples/expected/0414-protocols-generic-struct-protocol-erase.ir index fbe97b5..bf7b626 100644 --- a/examples/expected/0414-protocols-generic-struct-protocol-erase.ir +++ b/examples/expected/0414-protocols-generic-struct-protocol-erase.ir @@ -3,253 +3,254 @@ @__VL__s64__IntCell__vtable = internal constant { ptr } { ptr @__thunk_IntCell_VL__s64_get } @__VL__s64__Combined__s64__s64__vtable = internal constant { ptr } { ptr @__thunk_Combined__s64__s64_VL__s64_get } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [8 x i8] c"IntCell\00" -@tn.str.42 = private constant [9 x i8] c"*IntCell\00" -@tn.str.43 = private constant [2 x i8] c"R\00" -@tn.str.44 = private constant [9 x i8] c"Combined\00" -@tn.str.45 = private constant [8 x i8] c"VL__s64\00" -@tn.str.46 = private constant [18 x i8] c"__VL__s64__Vtable\00" -@tn.str.47 = private constant [3 x i8] c"VL\00" -@tn.str.48 = private constant [5 x i8] c"[]VL\00" -@tn.str.49 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.50 = private constant [5 x i8] c"*s64\00" -@tn.str.51 = private constant [7 x i8] c"**void\00" -@tn.str.52 = private constant [6 x i8] c"[]Any\00" -@tn.str.53 = private constant [5 x i8] c"*Any\00" -@tn.str.54 = private constant [7 x i8] c"[1]Any\00" -@tn.str.55 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.56 = private constant [7 x i8] c"*[]Any\00" -@tn.str.57 = private constant [10 x i8] c"(VL__s64)\00" -@tn.str.58 = private constant [19 x i8] c"Combined__s64__s64\00" -@tn.str.59 = private constant [20 x i8] c"*Combined__s64__s64\00" -@tn.str.60 = private constant [10 x i8] c"**IntCell\00" -@tn.str.61 = private constant [19 x i8] c"*__VL__s64__Vtable\00" -@tn.str.62 = private constant [11 x i8] c"*(VL__s64)\00" -@tn.str.63 = private constant [21 x i8] c"**Combined__s64__s64\00" -@tn.str.64 = private constant [9 x i8] c"*VL__s64\00" -@tn.str.65 = private constant [8 x i8] c"*string\00" -@tn.str.66 = private constant [4 x i8] c"*u8\00" -@tn.str.67 = private constant [6 x i8] c"*bool\00" -@tn.str.68 = private constant [5 x i8] c"*f64\00" -@tn.str.69 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.70 = private constant [11 x i8] c"*Allocator\00" -@tn.str.71 = private constant [9 x i8] c"*Context\00" -@tn.str.72 = private constant [3 x i8] c"*R\00" -@tn.str.73 = private constant [10 x i8] c"*Combined\00" -@tn.str.74 = private constant [4 x i8] c"*VL\00" -@tn.str.75 = private constant [10 x i8] c"*[]string\00" -@tn.str.76 = private constant [6 x i8] c"*[]VL\00" -@tn.str.77 = private constant [6 x i8] c"**GPA\00" -@tn.str.78 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.79 = private constant [8 x i8] c"**Arena\00" -@tn.str.80 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.81 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.82 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.83 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.84 = private constant [6 x i8] c"**s64\00" -@tn.str.85 = private constant [8 x i8] c"***void\00" -@tn.str.86 = private constant [6 x i8] c"**Any\00" -@tn.str.87 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.88 = private constant [8 x i8] c"**[]Any\00" -@tn.str.89 = private constant [11 x i8] c"***IntCell\00" -@tn.str.90 = private constant [20 x i8] c"**__VL__s64__Vtable\00" -@tn.str.91 = private constant [12 x i8] c"**(VL__s64)\00" -@tn.str.92 = private constant [22 x i8] c"***Combined__s64__s64\00" -@tn.str.93 = private constant [10 x i8] c"**VL__s64\00" -@tn.str.94 = private constant [9 x i8] c"**string\00" -@tn.str.95 = private constant [5 x i8] c"**u8\00" -@tn.str.96 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [92 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 8 }, { ptr, i64 } { ptr @tn.str.43, i64 1 }, { ptr, i64 } { ptr @tn.str.44, i64 8 }, { ptr, i64 } { ptr @tn.str.45, i64 7 }, { ptr, i64 } { ptr @tn.str.46, i64 17 }, { ptr, i64 } { ptr @tn.str.47, i64 2 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 12 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 4 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 9 }, { ptr, i64 } { ptr @tn.str.58, i64 18 }, { ptr, i64 } { ptr @tn.str.59, i64 19 }, { ptr, i64 } { ptr @tn.str.60, i64 9 }, { ptr, i64 } { ptr @tn.str.61, i64 18 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 20 }, { ptr, i64 } { ptr @tn.str.64, i64 8 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 3 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 4 }, { ptr, i64 } { ptr @tn.str.69, i64 16 }, { ptr, i64 } { ptr @tn.str.70, i64 10 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 2 }, { ptr, i64 } { ptr @tn.str.73, i64 9 }, { ptr, i64 } { ptr @tn.str.74, i64 3 }, { ptr, i64 } { ptr @tn.str.75, i64 9 }, { ptr, i64 } { ptr @tn.str.76, i64 5 }, { ptr, i64 } { ptr @tn.str.77, i64 5 }, { ptr, i64 } { ptr @tn.str.78, i64 12 }, { ptr, i64 } { ptr @tn.str.79, i64 7 }, { ptr, i64 } { ptr @tn.str.80, i64 6 }, { ptr, i64 } { ptr @tn.str.81, i64 10 }, { ptr, i64 } { ptr @tn.str.82, i64 19 }, { ptr, i64 } { ptr @tn.str.83, i64 13 }, { ptr, i64 } { ptr @tn.str.84, i64 5 }, { ptr, i64 } { ptr @tn.str.85, i64 7 }, { ptr, i64 } { ptr @tn.str.86, i64 5 }, { ptr, i64 } { ptr @tn.str.87, i64 8 }, { ptr, i64 } { ptr @tn.str.88, i64 7 }, { ptr, i64 } { ptr @tn.str.89, i64 10 }, { ptr, i64 } { ptr @tn.str.90, i64 19 }, { ptr, i64 } { ptr @tn.str.91, i64 11 }, { ptr, i64 } { ptr @tn.str.92, i64 21 }, { ptr, i64 } { ptr @tn.str.93, i64 9 }, { ptr, i64 } { ptr @tn.str.94, i64 8 }, { ptr, i64 } { ptr @tn.str.95, i64 4 }, { ptr, i64 } { ptr @tn.str.96, i64 6 }] -@str.97 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.99 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [8 x i8] c"IntCell\00" +@tn.str.44 = private constant [9 x i8] c"*IntCell\00" +@tn.str.45 = private constant [2 x i8] c"R\00" +@tn.str.46 = private constant [9 x i8] c"Combined\00" +@tn.str.47 = private constant [8 x i8] c"VL__s64\00" +@tn.str.48 = private constant [18 x i8] c"__VL__s64__Vtable\00" +@tn.str.49 = private constant [3 x i8] c"VL\00" +@tn.str.50 = private constant [5 x i8] c"[]VL\00" +@tn.str.51 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.52 = private constant [5 x i8] c"*s64\00" +@tn.str.53 = private constant [7 x i8] c"**void\00" +@tn.str.54 = private constant [6 x i8] c"[]Any\00" +@tn.str.55 = private constant [5 x i8] c"*Any\00" +@tn.str.56 = private constant [7 x i8] c"[1]Any\00" +@tn.str.57 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.58 = private constant [7 x i8] c"*[]Any\00" +@tn.str.59 = private constant [10 x i8] c"(VL__s64)\00" +@tn.str.60 = private constant [19 x i8] c"Combined__s64__s64\00" +@tn.str.61 = private constant [20 x i8] c"*Combined__s64__s64\00" +@tn.str.62 = private constant [10 x i8] c"**IntCell\00" +@tn.str.63 = private constant [19 x i8] c"*__VL__s64__Vtable\00" +@tn.str.64 = private constant [11 x i8] c"*(VL__s64)\00" +@tn.str.65 = private constant [21 x i8] c"**Combined__s64__s64\00" +@tn.str.66 = private constant [9 x i8] c"*VL__s64\00" +@tn.str.67 = private constant [8 x i8] c"*string\00" +@tn.str.68 = private constant [4 x i8] c"*u8\00" +@tn.str.69 = private constant [6 x i8] c"*bool\00" +@tn.str.70 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.71 = private constant [5 x i8] c"*f64\00" +@tn.str.72 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.73 = private constant [11 x i8] c"*Allocator\00" +@tn.str.74 = private constant [9 x i8] c"*Context\00" +@tn.str.75 = private constant [3 x i8] c"*R\00" +@tn.str.76 = private constant [10 x i8] c"*Combined\00" +@tn.str.77 = private constant [4 x i8] c"*VL\00" +@tn.str.78 = private constant [10 x i8] c"*[]string\00" +@tn.str.79 = private constant [6 x i8] c"*[]VL\00" +@tn.str.80 = private constant [6 x i8] c"**GPA\00" +@tn.str.81 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.82 = private constant [8 x i8] c"**Arena\00" +@tn.str.83 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.84 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.85 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.86 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.87 = private constant [6 x i8] c"**s64\00" +@tn.str.88 = private constant [8 x i8] c"***void\00" +@tn.str.89 = private constant [6 x i8] c"**Any\00" +@tn.str.90 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.91 = private constant [8 x i8] c"**[]Any\00" +@tn.str.92 = private constant [11 x i8] c"***IntCell\00" +@tn.str.93 = private constant [20 x i8] c"**__VL__s64__Vtable\00" +@tn.str.94 = private constant [12 x i8] c"**(VL__s64)\00" +@tn.str.95 = private constant [22 x i8] c"***Combined__s64__s64\00" +@tn.str.96 = private constant [10 x i8] c"**VL__s64\00" +@tn.str.97 = private constant [9 x i8] c"**string\00" +@tn.str.98 = private constant [5 x i8] c"**u8\00" +@tn.str.99 = private constant [7 x i8] c"**bool\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 7 }, { ptr, i64 } { ptr @tn.str.44, i64 8 }, { ptr, i64 } { ptr @tn.str.45, i64 1 }, { ptr, i64 } { ptr @tn.str.46, i64 8 }, { ptr, i64 } { ptr @tn.str.47, i64 7 }, { ptr, i64 } { ptr @tn.str.48, i64 17 }, { ptr, i64 } { ptr @tn.str.49, i64 2 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 12 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 7 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 9 }, { ptr, i64 } { ptr @tn.str.60, i64 18 }, { ptr, i64 } { ptr @tn.str.61, i64 19 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 18 }, { ptr, i64 } { ptr @tn.str.64, i64 10 }, { ptr, i64 } { ptr @tn.str.65, i64 20 }, { ptr, i64 } { ptr @tn.str.66, i64 8 }, { ptr, i64 } { ptr @tn.str.67, i64 7 }, { ptr, i64 } { ptr @tn.str.68, i64 3 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 7 }, { ptr, i64 } { ptr @tn.str.71, i64 4 }, { ptr, i64 } { ptr @tn.str.72, i64 16 }, { ptr, i64 } { ptr @tn.str.73, i64 10 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 2 }, { ptr, i64 } { ptr @tn.str.76, i64 9 }, { ptr, i64 } { ptr @tn.str.77, i64 3 }, { ptr, i64 } { ptr @tn.str.78, i64 9 }, { ptr, i64 } { ptr @tn.str.79, i64 5 }, { ptr, i64 } { ptr @tn.str.80, i64 5 }, { ptr, i64 } { ptr @tn.str.81, i64 12 }, { ptr, i64 } { ptr @tn.str.82, i64 7 }, { ptr, i64 } { ptr @tn.str.83, i64 6 }, { ptr, i64 } { ptr @tn.str.84, i64 10 }, { ptr, i64 } { ptr @tn.str.85, i64 19 }, { ptr, i64 } { ptr @tn.str.86, i64 13 }, { ptr, i64 } { ptr @tn.str.87, i64 5 }, { ptr, i64 } { ptr @tn.str.88, i64 7 }, { ptr, i64 } { ptr @tn.str.89, i64 5 }, { ptr, i64 } { ptr @tn.str.90, i64 8 }, { ptr, i64 } { ptr @tn.str.91, i64 7 }, { ptr, i64 } { ptr @tn.str.92, i64 10 }, { ptr, i64 } { ptr @tn.str.93, i64 19 }, { ptr, i64 } { ptr @tn.str.94, i64 11 }, { ptr, i64 } { ptr @tn.str.95, i64 21 }, { ptr, i64 } { ptr @tn.str.96, i64 9 }, { ptr, i64 } { ptr @tn.str.97, i64 8 }, { ptr, i64 } { ptr @tn.str.98, i64 4 }, { ptr, i64 } { ptr @tn.str.99, i64 6 }] @str.100 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.101 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.102 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.103 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.104 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.105 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.106 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.107 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.109 = private unnamed_addr constant [5 x i8] c")); \00", 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 [15 x i8] c"result := \22\22; \00", align 1 +@str.105 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.106 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.107 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.108 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.109 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.110 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.112 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.116 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.117 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.118 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.119 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.120 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.121 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.116 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.117 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.118 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.119 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.120 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.121 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.122 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.123 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.124 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.123 = private constant [5 x i8] c"line\00" -@fld.str.124 = private constant [4 x i8] c"col\00" -@fld.str.125 = 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.123, i64 4 }, { ptr, i64 } { ptr @fld.str.124, i64 3 }, { ptr, i64 } { ptr @fld.str.125, i64 4 }] -@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.127 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.131 = private constant [4 x i8] c"ctx\00" -@fld.str.132 = private constant [6 x i8] c"alloc\00" -@fld.str.133 = private constant [8 x i8] c"dealloc\00" -@field_names.134 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.131, i64 3 }, { ptr, i64 } { ptr @fld.str.132, i64 5 }, { ptr, i64 } { ptr @fld.str.133, i64 7 }] -@str.135 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.136 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.138 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.139 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.140 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.141 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.142 = private unnamed_addr constant [4 x i8] c"GPA\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 [12 x i8] c"alloc_count\00" -@field_names.147 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.146, i64 11 }] -@str.148 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.149 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.151 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.153 = private constant [5 x i8] c"next\00" -@fld.str.154 = private constant [4 x i8] c"cap\00" -@field_names.155 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.153, i64 4 }, { ptr, i64 } { ptr @fld.str.154, i64 3 }] -@str.156 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.157 = private unnamed_addr constant [6 x i8] c"Arena\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 [6 x i8] c"first\00" -@fld.str.162 = private constant [10 x i8] c"end_index\00" -@fld.str.163 = private constant [7 x i8] c"parent\00" -@field_names.164 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.161, i64 5 }, { ptr, i64 } { ptr @fld.str.162, i64 9 }, { ptr, i64 } { ptr @fld.str.163, i64 6 }] -@str.165 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.166 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.167 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.168 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.170 = private constant [4 x i8] c"buf\00" -@fld.str.171 = private constant [4 x i8] c"len\00" -@fld.str.172 = private constant [4 x i8] c"pos\00" -@field_names.173 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.170, i64 3 }, { ptr, i64 } { ptr @fld.str.171, i64 3 }, { ptr, i64 } { ptr @fld.str.172, i64 3 }] -@str.174 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.175 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.176 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.177 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.178 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.179 = private constant [7 x i8] c"parent\00" -@fld.str.180 = private constant [12 x i8] c"alloc_count\00" -@fld.str.181 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.182 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.183 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.179, i64 6 }, { ptr, i64 } { ptr @fld.str.180, i64 11 }, { ptr, i64 } { ptr @fld.str.181, i64 13 }, { ptr, i64 } { ptr @fld.str.182, i64 17 }] -@str.184 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.185 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.187 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.188 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.189 = private constant [10 x i8] c"allocator\00" -@fld.str.190 = private constant [5 x i8] c"data\00" -@field_names.191 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.189, i64 9 }, { ptr, i64 } { ptr @fld.str.190, i64 4 }] -@str.192 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.193 = private unnamed_addr constant [8 x i8] c"IntCell\00", align 1 -@str.194 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.195 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.196 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.197 = private constant [2 x i8] c"v\00" -@field_names.198 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.197, i64 1 }] -@str.199 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.200 = private unnamed_addr constant [2 x i8] c"R\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 -@field_names.204 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.205 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.206 = private unnamed_addr constant [9 x i8] c"Combined\00", align 1 -@str.207 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.208 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.209 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.210 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.211 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.212 = private unnamed_addr constant [8 x i8] c"VL__s64\00", align 1 -@str.213 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.214 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.215 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.216 = private constant [4 x i8] c"ctx\00" -@fld.str.217 = private constant [9 x i8] c"__vtable\00" -@field_names.218 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.216, i64 3 }, { ptr, i64 } { ptr @fld.str.217, i64 8 }] -@str.219 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.220 = private unnamed_addr constant [18 x i8] c"__VL__s64__Vtable\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 -@fld.str.224 = private constant [4 x i8] c"get\00" -@field_names.225 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.224, i64 3 }] -@str.226 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.227 = private unnamed_addr constant [3 x i8] c"VL\00", align 1 -@str.228 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.229 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.230 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.231 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.232 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.233 = private unnamed_addr constant [19 x i8] c"Combined__s64__s64\00", align 1 -@str.234 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.235 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.236 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.237 = private constant [8 x i8] c"sources\00" -@fld.str.238 = private constant [6 x i8] c"value\00" -@field_names.239 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.237, i64 7 }, { ptr, i64 } { ptr @fld.str.238, i64 5 }] -@str.240 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.241 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.242 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.243 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.126 = private constant [5 x i8] c"line\00" +@fld.str.127 = private constant [4 x i8] c"col\00" +@fld.str.128 = 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.126, i64 4 }, { ptr, i64 } { ptr @fld.str.127, i64 3 }, { ptr, i64 } { ptr @fld.str.128, i64 4 }] +@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.130 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.134 = private constant [4 x i8] c"ctx\00" +@fld.str.135 = private constant [6 x i8] c"alloc\00" +@fld.str.136 = private constant [8 x i8] c"dealloc\00" +@field_names.137 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 3 }, { ptr, i64 } { ptr @fld.str.135, i64 5 }, { ptr, i64 } { ptr @fld.str.136, i64 7 }] +@str.138 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.139 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.141 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.143 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.144 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.145 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.149 = private constant [12 x i8] c"alloc_count\00" +@field_names.150 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.149, i64 11 }] +@str.151 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.152 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.153 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.154 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.156 = private constant [5 x i8] c"next\00" +@fld.str.157 = private constant [4 x i8] c"cap\00" +@field_names.158 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.156, i64 4 }, { ptr, i64 } { ptr @fld.str.157, i64 3 }] +@str.159 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.160 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.164 = private constant [6 x i8] c"first\00" +@fld.str.165 = private constant [10 x i8] c"end_index\00" +@fld.str.166 = private constant [7 x i8] c"parent\00" +@field_names.167 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.164, i64 5 }, { ptr, i64 } { ptr @fld.str.165, i64 9 }, { ptr, i64 } { ptr @fld.str.166, i64 6 }] +@str.168 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.169 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.170 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.171 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.173 = private constant [4 x i8] c"buf\00" +@fld.str.174 = private constant [4 x i8] c"len\00" +@fld.str.175 = private constant [4 x i8] c"pos\00" +@field_names.176 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.173, i64 3 }, { ptr, i64 } { ptr @fld.str.174, i64 3 }, { ptr, i64 } { ptr @fld.str.175, i64 3 }] +@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.178 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.179 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.180 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.181 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.182 = private constant [7 x i8] c"parent\00" +@fld.str.183 = private constant [12 x i8] c"alloc_count\00" +@fld.str.184 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.185 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.186 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.182, i64 6 }, { ptr, i64 } { ptr @fld.str.183, i64 11 }, { ptr, i64 } { ptr @fld.str.184, i64 13 }, { ptr, i64 } { ptr @fld.str.185, i64 17 }] +@str.187 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.188 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.189 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.190 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.191 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.192 = private constant [10 x i8] c"allocator\00" +@fld.str.193 = private constant [5 x i8] c"data\00" +@field_names.194 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.192, i64 9 }, { ptr, i64 } { ptr @fld.str.193, i64 4 }] +@str.195 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.196 = private unnamed_addr constant [8 x i8] c"IntCell\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.198 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.199 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.200 = private constant [2 x i8] c"v\00" +@field_names.201 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.200, i64 1 }] +@str.202 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.203 = private unnamed_addr constant [2 x i8] c"R\00", align 1 +@str.204 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.205 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.206 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.207 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.208 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.209 = private unnamed_addr constant [9 x i8] c"Combined\00", align 1 +@str.210 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.211 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.212 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.213 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.214 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.215 = private unnamed_addr constant [8 x i8] c"VL__s64\00", align 1 +@str.216 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.217 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.218 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.219 = private constant [4 x i8] c"ctx\00" +@fld.str.220 = private constant [9 x i8] c"__vtable\00" +@field_names.221 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.219, i64 3 }, { ptr, i64 } { ptr @fld.str.220, i64 8 }] +@str.222 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.223 = private unnamed_addr constant [18 x i8] c"__VL__s64__Vtable\00", align 1 +@str.224 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.225 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.226 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.227 = private constant [4 x i8] c"get\00" +@field_names.228 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.227, i64 3 }] +@str.229 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.230 = private unnamed_addr constant [3 x i8] c"VL\00", align 1 +@str.231 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.232 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.233 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.234 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.235 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.236 = private unnamed_addr constant [19 x i8] c"Combined__s64__s64\00", align 1 +@str.237 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.238 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.239 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.240 = private constant [8 x i8] c"sources\00" +@fld.str.241 = private constant [6 x i8] c"value\00" +@field_names.242 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.240, i64 7 }, { ptr, i64 } { ptr @fld.str.241, i64 5 }] +@str.243 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.244 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.245 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.246 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -259,78 +260,84 @@ @str.250 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.251 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.252 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.253 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.254 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.255 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.256 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.257 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.258 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.253 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.254 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.255 = private unnamed_addr constant [3 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 [5 x i8] c"null\00", align 1 -@str.260 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.260 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.261 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.262 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.263 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.263 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.264 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.265 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.266 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.266 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.267 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.268 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.269 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.269 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.270 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.271 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.272 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.272 = private unnamed_addr constant [7 x i8] c"*Arena\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 [19 x i8] c"*TrackingAllocator\00", align 1 +@str.275 = private unnamed_addr constant [6 x i8] c"[*]u8\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 [9 x i8] c"*IntCell\00", align 1 +@str.278 = private unnamed_addr constant [10 x i8] c"*BufAlloc\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 [13 x i8] c"**CAllocator\00", align 1 +@str.281 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\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 [5 x i8] c"*s64\00", align 1 +@str.284 = private unnamed_addr constant [9 x i8] c"*IntCell\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 [7 x i8] c"**void\00", align 1 +@str.287 = private unnamed_addr constant [13 x i8] c"**CAllocator\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 [5 x i8] c"*Any\00", align 1 +@str.290 = private unnamed_addr constant [5 x i8] c"*s64\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 [8 x i8] c"*[1]Any\00", align 1 +@str.293 = private unnamed_addr constant [7 x i8] c"**void\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 [7 x i8] c"*[]Any\00", align 1 +@str.296 = private unnamed_addr constant [5 x i8] c"*Any\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 [20 x i8] c"*Combined__s64__s64\00", align 1 +@str.299 = private unnamed_addr constant [8 x i8] c"*[1]Any\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 [10 x i8] c"**IntCell\00", align 1 +@str.302 = private unnamed_addr constant [7 x i8] c"*[]Any\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 [19 x i8] c"*__VL__s64__Vtable\00", align 1 +@str.305 = private unnamed_addr constant [20 x i8] c"*Combined__s64__s64\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"*tuple\00", align 1 +@str.308 = private unnamed_addr constant [10 x i8] c"**IntCell\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 [21 x i8] c"**Combined__s64__s64\00", align 1 +@str.311 = private unnamed_addr constant [19 x i8] c"*__VL__s64__Vtable\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 [9 x i8] c"*VL__s64\00", align 1 +@str.314 = private unnamed_addr constant [7 x i8] c"*tuple\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.317 = private unnamed_addr constant [21 x i8] c"**Combined__s64__s64\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 [4 x i8] c"*u8\00", align 1 +@str.320 = private unnamed_addr constant [9 x i8] c"*VL__s64\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 [6 x i8] c"*bool\00", align 1 +@str.323 = private unnamed_addr constant [8 x i8] c"*string\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 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -469,38 +476,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -513,50 +525,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -570,19 +710,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -599,15 +739,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -625,16 +765,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -651,17 +791,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -724,39 +864,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.235 + br label %while.hdr.257 -while.hdr.235: ; preds = %if.merge.240, %entry +while.hdr.257: ; preds = %if.merge.262, %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.236, label %while.exit.237 + br i1 %icmp, label %while.body.258, label %while.exit.259 -while.body.236: ; preds = %while.hdr.235 +while.body.258: ; preds = %while.hdr.257 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.238, label %if.else.239 + br i1 %icmpN, label %if.then.260, label %if.else.261 -while.exit.237: ; preds = %while.hdr.235 +while.exit.259: ; preds = %while.hdr.257 ret void -if.then.238: ; preds = %while.body.236 +if.then.260: ; preds = %while.body.258 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.240 + br label %if.merge.262 -if.else.239: ; preds = %while.body.236 +if.else.261: ; preds = %while.body.258 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.240 + br label %if.merge.262 -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi i64 [ %addN, %if.then.238 ], [ %addN, %if.else.239 ] +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi i64 [ %addN, %if.then.260 ], [ %addN, %if.else.261 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -769,37 +909,29 @@ if.merge.240: ; preds = %if.else.239, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.235 + br label %while.hdr.257 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.225, label %if.merge.226 - -if.then.225: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.226: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.227, label %if.merge.228 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.227: ; preds = %if.merge.226 +if.then.58: ; 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.228 + br label %if.merge.59 -if.merge.228: ; preds = %if.then.227, %if.merge.226 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -812,15 +944,15 @@ if.merge.228: ; preds = %if.then.227, %if.me 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.229, label %if.merge.230 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.229: ; preds = %if.merge.228 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.230 + br label %if.merge.61 -if.merge.230: ; preds = %if.then.229, %if.merge.228 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -833,15 +965,15 @@ if.merge.230: ; preds = %if.then.229, %if.me 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.231, label %if.merge.232 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.231: ; preds = %if.merge.230 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.232 + br label %if.merge.63 -if.merge.232: ; preds = %if.then.231, %if.merge.230 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -854,65 +986,116 @@ if.merge.232: ; preds = %if.then.231, %if.me 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.233, label %if.merge.234 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.233: ; preds = %if.merge.232 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.234 + br label %if.merge.65 -if.merge.234: ; preds = %if.then.233, %if.merge.232 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.255, label %if.merge.256 + +if.then.255: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.256: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.241 + br label %while.hdr.263 -while.hdr.241: ; preds = %if.merge.245, %if.merge.234 +while.hdr.263: ; preds = %if.merge.267, %if.merge.256 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.242, label %while.exit.243 + br i1 %icmpN, label %while.body.264, label %while.exit.265 -while.body.242: ; preds = %while.hdr.241 +while.body.264: ; preds = %while.hdr.263 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.244, label %if.merge.245 + br i1 %icmpN, label %if.then.266, label %if.merge.267 -while.exit.243: ; preds = %if.then.244, %while.hdr.241 +while.exit.265: ; preds = %if.then.266, %while.hdr.263 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.244: ; preds = %while.body.242 - br label %while.exit.243 +if.then.266: ; preds = %while.body.264 + br label %while.exit.265 -if.merge.245: ; preds = %while.body.242 +if.merge.267: ; preds = %while.body.264 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.241 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.263 } ; Function Attrs: nounwind @@ -991,7 +1174,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -999,592 +1182,619 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 36, label %match.arm.44 - i64 38, label %match.arm.44 - i64 39, label %match.arm.44 - i64 40, label %match.arm.44 - i64 41, label %match.arm.44 - i64 42, label %match.arm.44 - i64 53, label %match.arm.44 - i64 49, label %match.arm.48 - i64 35, label %match.arm.49 - i64 43, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 37, label %match.arm.43 + i64 39, label %match.arm.43 + i64 40, label %match.arm.43 + i64 41, label %match.arm.43 + i64 42, label %match.arm.43 + i64 43, label %match.arm.43 + i64 54, label %match.arm.43 + i64 35, label %match.arm.47 + i64 50, label %match.arm.47 + i64 36, label %match.arm.48 + i64 44, label %match.arm.48 + i64 48, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 38, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 i64 47, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 37, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 48, label %match.arm.50 - i64 50, label %match.arm.50 - i64 51, label %match.arm.50 - i64 54, label %match.arm.50 - i64 55, label %match.arm.50 - i64 56, label %match.arm.50 - i64 57, label %match.arm.50 - i64 58, label %match.arm.50 - i64 59, label %match.arm.50 - i64 60, label %match.arm.50 - i64 61, label %match.arm.50 - i64 62, label %match.arm.50 - i64 13, label %match.arm.52 + i64 49, label %match.arm.49 + i64 51, label %match.arm.49 + i64 52, label %match.arm.49 + i64 55, label %match.arm.49 + i64 56, label %match.arm.49 + i64 57, label %match.arm.49 + i64 58, label %match.arm.49 + i64 59, label %match.arm.49 + i64 60, label %match.arm.49 + i64 61, label %match.arm.49 + i64 62, label %match.arm.49 + i64 63, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.196, %dispatch.merge.176, %dispatch.merge.168, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.226, %dispatch.merge.206, %dispatch.merge.192, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [94 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %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.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 36, label %dispatch.case.81 - i64 38, label %dispatch.case.82 - i64 39, label %dispatch.case.83 - i64 40, label %dispatch.case.84 - i64 41, label %dispatch.case.85 - i64 42, label %dispatch.case.86 - i64 53, label %dispatch.case.87 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 37, label %dispatch.case.105 + i64 39, label %dispatch.case.106 + i64 40, label %dispatch.case.107 + i64 41, label %dispatch.case.108 + i64 42, label %dispatch.case.109 + i64 43, label %dispatch.case.110 + i64 54, label %dispatch.case.111 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable - -match.arm.48: ; preds = %entry +match.arm.47: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.169 [ - i64 49, label %dispatch.case.170 + switch i64 %ua.raw20, label %dispatch.default.193 [ + i64 35, label %dispatch.case.194 + i64 50, label %dispatch.case.195 ] -match.arm.49: ; preds = %entry, %entry, %entry +match.arm.48: ; preds = %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.177 [ - i64 35, label %dispatch.case.178 - i64 43, label %dispatch.case.179 - i64 47, label %dispatch.case.180 - ] - -match.arm.50: ; preds = %entry, %entry, %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.197 [ - i64 18, label %dispatch.case.198 - i64 22, label %dispatch.case.199 - i64 24, label %dispatch.case.200 - i64 26, label %dispatch.case.201 - i64 28, label %dispatch.case.202 - i64 29, label %dispatch.case.203 - i64 31, label %dispatch.case.204 - i64 33, label %dispatch.case.205 - i64 37, label %dispatch.case.206 - i64 44, label %dispatch.case.207 - i64 45, label %dispatch.case.208 - i64 46, label %dispatch.case.209 + switch i64 %ua.raw24, label %dispatch.default.207 [ + i64 36, label %dispatch.case.208 + i64 44, label %dispatch.case.209 i64 48, label %dispatch.case.210 - i64 50, label %dispatch.case.211 - i64 51, label %dispatch.case.212 - i64 54, label %dispatch.case.213 - i64 55, label %dispatch.case.214 - i64 56, label %dispatch.case.215 - i64 57, label %dispatch.case.216 - i64 58, label %dispatch.case.217 - i64 59, label %dispatch.case.218 - i64 60, label %dispatch.case.219 - i64 61, label %dispatch.case.220 - i64 62, label %dispatch.case.221 ] -match.arm.51: ; No predecessors! +match.arm.49: ; preds = %entry, %entry, %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.227 [ + i64 18, label %dispatch.case.228 + i64 22, label %dispatch.case.229 + i64 24, label %dispatch.case.230 + i64 26, label %dispatch.case.231 + i64 28, label %dispatch.case.232 + i64 29, label %dispatch.case.233 + i64 31, label %dispatch.case.234 + i64 33, label %dispatch.case.235 + i64 38, label %dispatch.case.236 + i64 45, label %dispatch.case.237 + i64 46, label %dispatch.case.238 + i64 47, label %dispatch.case.239 + i64 49, label %dispatch.case.240 + i64 51, label %dispatch.case.241 + i64 52, label %dispatch.case.242 + i64 55, label %dispatch.case.243 + i64 56, label %dispatch.case.244 + i64 57, label %dispatch.case.245 + i64 58, label %dispatch.case.246 + i64 59, label %dispatch.case.247 + i64 60, label %dispatch.case.248 + i64 61, label %dispatch.case.249 + i64 62, label %dispatch.case.250 + i64 63, label %dispatch.case.251 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [92 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [94 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.87, %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %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.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.97, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.100, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { i64 }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__IntCell(ptr %0, { i64 } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load {}, ptr %ua.ptr80, align 1 - %callN = call { ptr, i64 } @struct_to_string__R(ptr %0, {} %ua.load81) + %ua.load81 = load { i64 }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__IntCell(ptr %0, { i64 } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr %ua.load85 = load {}, ptr %ua.ptr84, align 1 - %callN = call { ptr, i64 } @struct_to_string__Combined(ptr %0, {} %ua.load85) + %callN = call { ptr, i64 } @struct_to_string__R(ptr %0, {} %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.84: ; preds = %match.arm.44 +dispatch.case.107: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { ptr, ptr }, ptr %ua.ptr88, align 8 - %callN = call { ptr, i64 } @struct_to_string__VL__s64(ptr %0, { ptr, ptr } %ua.load89) + %ua.load89 = load {}, ptr %ua.ptr88, align 1 + %callN = call { ptr, i64 } @struct_to_string__Combined(ptr %0, {} %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.85: ; preds = %match.arm.44 +dispatch.case.108: ; preds = %match.arm.43 %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr - %ua.load93 = load { ptr }, ptr %ua.ptr92, align 8 - %callN = call { ptr, i64 } @struct_to_string____VL__s64__Vtable(ptr %0, { ptr } %ua.load93) + %ua.load93 = load { ptr, ptr }, ptr %ua.ptr92, align 8 + %callN = call { ptr, i64 } @struct_to_string__VL__s64(ptr %0, { ptr, ptr } %ua.load93) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.86: ; preds = %match.arm.44 +dispatch.case.109: ; preds = %match.arm.43 %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__VL(ptr %0, {} %ua.load97) + %ua.load97 = load { ptr }, ptr %ua.ptr96, align 8 + %callN = call { ptr, i64 } @struct_to_string____VL__s64__Vtable(ptr %0, { ptr } %ua.load97) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.87: ; preds = %match.arm.44 +dispatch.case.110: ; preds = %match.arm.43 %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr100 = inttoptr i64 %ua.raw99 to ptr - %ua.load101 = load { { { ptr, ptr } }, i64 }, ptr %ua.ptr100, align 8 - %callN = call { ptr, i64 } @struct_to_string__Combined__s64__s64(ptr %0, { { { ptr, ptr } }, i64 } %ua.load101) + %ua.load101 = load {}, ptr %ua.ptr100, align 1 + %callN = call { ptr, i64 } @struct_to_string__VL(ptr %0, {} %ua.load101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.168: ; preds = %dispatch.case.170, %dispatch.default.169 +dispatch.case.111: ; preds = %match.arm.43 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr104 = inttoptr i64 %ua.raw103 to ptr + %ua.load105 = load { { { ptr, ptr } }, i64 }, ptr %ua.ptr104, align 8 + %callN = call { ptr, i64 } @struct_to_string__Combined__s64__s64(ptr %0, { { { ptr, ptr } }, i64 } %ua.load105) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.192: ; preds = %dispatch.case.195, %dispatch.case.194, %dispatch.default.193 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.169: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.98, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.168 +dispatch.default.193: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.101, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.192 -dispatch.case.170: ; preds = %match.arm.48 - %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr105 = inttoptr i64 %ua.raw104 to ptr - %ua.load106 = load [1 x { i64, i64 }], ptr %ua.ptr105, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load106) +dispatch.case.194: ; preds = %match.arm.47 + %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr109 = inttoptr i64 %ua.raw108 to ptr + %ua.load110 = load [4 x i64], ptr %ua.ptr109, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load110) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.168 + br label %dispatch.merge.192 -dispatch.merge.176: ; preds = %dispatch.case.180, %dispatch.case.179, %dispatch.case.178, %dispatch.default.177 +dispatch.case.195: ; preds = %match.arm.47 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr113 = inttoptr i64 %ua.raw112 to ptr + %ua.load114 = load [1 x { i64, i64 }], ptr %ua.ptr113, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load114) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.192 + +dispatch.merge.206: ; preds = %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.default.207 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.177: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.99, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.176 +dispatch.default.207: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.102, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.206 -dispatch.case.178: ; preds = %match.arm.49 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr - %ua.load111 = load { ptr, i64 }, ptr %ua.ptr110, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load111) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.176 - -dispatch.case.179: ; preds = %match.arm.49 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr114 = inttoptr i64 %ua.raw113 to ptr - %ua.load115 = load { ptr, i64 }, ptr %ua.ptr114, align 8 - %callN = call { ptr, i64 } @slice_to_string__VL(ptr %0, { ptr, i64 } %ua.load115) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.176 - -dispatch.case.180: ; preds = %match.arm.49 +dispatch.case.208: ; preds = %match.arm.48 %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr118 = inttoptr i64 %ua.raw117 to ptr %ua.load119 = load { ptr, i64 }, ptr %ua.ptr118, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load119) + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.176 + br label %dispatch.merge.206 -dispatch.merge.196: ; preds = %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.case.211, %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.default.197 +dispatch.case.209: ; preds = %match.arm.48 + %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr122 = inttoptr i64 %ua.raw121 to ptr + %ua.load123 = load { ptr, i64 }, ptr %ua.ptr122, align 8 + %callN = call { ptr, i64 } @slice_to_string__VL(ptr %0, { ptr, i64 } %ua.load123) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.206 + +dispatch.case.210: ; preds = %match.arm.48 + %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr126 = inttoptr i64 %ua.raw125 to ptr + %ua.load127 = load { ptr, i64 }, ptr %ua.ptr126, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load127) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.206 + +dispatch.merge.226: ; preds = %dispatch.case.251, %dispatch.case.250, %dispatch.case.249, %dispatch.case.248, %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.default.227 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.197: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.100, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.196 +dispatch.default.227: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.103, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.226 -dispatch.case.198: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw122 to ptr +dispatch.case.228: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw130 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.196 + br label %dispatch.merge.226 -dispatch.case.199: ; preds = %match.arm.50 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp125) +dispatch.case.229: ; preds = %match.arm.49 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.200: ; preds = %match.arm.50 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp128) +dispatch.case.230: ; preds = %match.arm.49 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.201: ; preds = %match.arm.50 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp131) +dispatch.case.231: ; preds = %match.arm.49 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.202: ; preds = %match.arm.50 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp134) +dispatch.case.232: ; preds = %match.arm.49 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.203: ; preds = %match.arm.50 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp137) +dispatch.case.233: ; preds = %match.arm.49 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.204: ; preds = %match.arm.50 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp140) +dispatch.case.234: ; preds = %match.arm.49 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.205: ; preds = %match.arm.50 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp143) +dispatch.case.235: ; preds = %match.arm.49 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.206: ; preds = %match.arm.50 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_IntCell(ptr %0, ptr %iNp146) +dispatch.case.236: ; preds = %match.arm.49 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_IntCell(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.207: ; preds = %match.arm.50 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp149) +dispatch.case.237: ; preds = %match.arm.49 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.208: ; preds = %match.arm.50 - %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 - %iNp152 = inttoptr i64 %ua.raw151 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp152) +dispatch.case.238: ; preds = %match.arm.49 + %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 + %iNp160 = inttoptr i64 %ua.raw159 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp160) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.209: ; preds = %match.arm.50 - %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 - %iNp155 = inttoptr i64 %ua.raw154 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp155) +dispatch.case.239: ; preds = %match.arm.49 + %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 + %iNp163 = inttoptr i64 %ua.raw162 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp163) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.210: ; preds = %match.arm.50 - %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 - %iNp158 = inttoptr i64 %ua.raw157 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp158) +dispatch.case.240: ; preds = %match.arm.49 + %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 + %iNp166 = inttoptr i64 %ua.raw165 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp166) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.211: ; preds = %match.arm.50 - %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 - %iNp161 = inttoptr i64 %ua.raw160 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp161) +dispatch.case.241: ; preds = %match.arm.49 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %iNp169 = inttoptr i64 %ua.raw168 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp169) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.212: ; preds = %match.arm.50 - %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 - %iNp164 = inttoptr i64 %ua.raw163 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp164) +dispatch.case.242: ; preds = %match.arm.49 + %ua.raw171 = extractvalue { i64, i64 } %loadN, 1 + %iNp172 = inttoptr i64 %ua.raw171 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp172) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.213: ; preds = %match.arm.50 - %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 - %iNp167 = inttoptr i64 %ua.raw166 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Combined__s64__s64(ptr %0, ptr %iNp167) +dispatch.case.243: ; preds = %match.arm.49 + %ua.raw174 = extractvalue { i64, i64 } %loadN, 1 + %iNp175 = inttoptr i64 %ua.raw174 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Combined__s64__s64(ptr %0, ptr %iNp175) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.214: ; preds = %match.arm.50 - %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 - %iNp170 = inttoptr i64 %ua.raw169 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_IntCell(ptr %0, ptr %iNp170) +dispatch.case.244: ; preds = %match.arm.49 + %ua.raw177 = extractvalue { i64, i64 } %loadN, 1 + %iNp178 = inttoptr i64 %ua.raw177 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_IntCell(ptr %0, ptr %iNp178) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.215: ; preds = %match.arm.50 - %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 - %iNp173 = inttoptr i64 %ua.raw172 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr___VL__s64__Vtable(ptr %0, ptr %iNp173) +dispatch.case.245: ; preds = %match.arm.49 + %ua.raw180 = extractvalue { i64, i64 } %loadN, 1 + %iNp181 = inttoptr i64 %ua.raw180 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr___VL__s64__Vtable(ptr %0, ptr %iNp181) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.216: ; preds = %match.arm.50 - %ua.raw175 = extractvalue { i64, i64 } %loadN, 1 - %iNp176 = inttoptr i64 %ua.raw175 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_tu_VL__s64(ptr %0, ptr %iNp176) +dispatch.case.246: ; preds = %match.arm.49 + %ua.raw183 = extractvalue { i64, i64 } %loadN, 1 + %iNp184 = inttoptr i64 %ua.raw183 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_tu_VL__s64(ptr %0, ptr %iNp184) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.217: ; preds = %match.arm.50 - %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 - %iNp179 = inttoptr i64 %ua.raw178 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Combined__s64__s64(ptr %0, ptr %iNp179) +dispatch.case.247: ; preds = %match.arm.49 + %ua.raw186 = extractvalue { i64, i64 } %loadN, 1 + %iNp187 = inttoptr i64 %ua.raw186 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Combined__s64__s64(ptr %0, ptr %iNp187) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.218: ; preds = %match.arm.50 - %ua.raw181 = extractvalue { i64, i64 } %loadN, 1 - %iNp182 = inttoptr i64 %ua.raw181 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_VL__s64(ptr %0, ptr %iNp182) +dispatch.case.248: ; preds = %match.arm.49 + %ua.raw189 = extractvalue { i64, i64 } %loadN, 1 + %iNp190 = inttoptr i64 %ua.raw189 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_VL__s64(ptr %0, ptr %iNp190) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.219: ; preds = %match.arm.50 - %ua.raw184 = extractvalue { i64, i64 } %loadN, 1 - %iNp185 = inttoptr i64 %ua.raw184 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp185) +dispatch.case.249: ; preds = %match.arm.49 + %ua.raw192 = extractvalue { i64, i64 } %loadN, 1 + %iNp193 = inttoptr i64 %ua.raw192 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp193) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.220: ; preds = %match.arm.50 - %ua.raw187 = extractvalue { i64, i64 } %loadN, 1 - %iNp188 = inttoptr i64 %ua.raw187 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp188) +dispatch.case.250: ; preds = %match.arm.49 + %ua.raw195 = extractvalue { i64, i64 } %loadN, 1 + %iNp196 = inttoptr i64 %ua.raw195 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp196) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.221: ; preds = %match.arm.50 - %ua.raw190 = extractvalue { i64, i64 } %loadN, 1 - %iNp191 = inttoptr i64 %ua.raw190 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp191) +dispatch.case.251: ; preds = %match.arm.49 + %ua.raw198 = extractvalue { i64, i64 } %loadN, 1 + %iNp199 = inttoptr i64 %ua.raw198 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp199) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 } ; Function Attrs: nounwind @@ -1593,7 +1803,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.101, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.104, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1624,7 +1834,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1642,9 +1852,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1682,14 +1892,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.105, 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 @@ -1697,7 +1907,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, 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 @@ -1707,13 +1917,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.104, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.105, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, 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 @@ -1721,7 +1931,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1733,83 +1943,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, 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.108, 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.109, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1837,18 +1971,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1861,6 +2032,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, 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.115, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, 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.117, 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 @@ -1869,11 +2079,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1932,7 +2142,7 @@ entry: %ba.tmp = alloca { i64 }, align 8 store { i64 } %load, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 36, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 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 @@ -1986,7 +2196,7 @@ entry: define internal void @print__ct_sbc6305862a3a863d__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.116, i64 3 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.119, i64 3 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2001,7 +2211,7 @@ entry: %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.117, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.120, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %ba.val9 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %loadN, 1 @@ -2023,7 +2233,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.118, i64 3 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.121, i64 3 }) ret { ptr, i64 } %call } @@ -2032,35 +2242,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.119, i64 15 }, { ptr, i64 } { ptr @str.120, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.122, i64 15 }, { ptr, i64 } { ptr @str.123, 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.88 + br label %while.hdr.112 -while.hdr.88: ; preds = %fv.merge, %entry +while.hdr.112: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.89, label %while.exit.90 + br i1 %icmp, label %while.body.113, label %while.exit.114 -while.body.89: ; preds = %while.hdr.88 +while.body.113: ; preds = %while.hdr.112 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.91, label %if.merge.92 + br i1 %icmpN, label %if.then.115, label %if.merge.116 -while.exit.90: ; preds = %while.hdr.88 +while.exit.114: ; preds = %while.hdr.112 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 1 }) ret { ptr, i64 } %callN -if.then.91: ; preds = %while.body.89 +if.then.115: ; preds = %while.body.113 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.92 + br label %if.merge.116 -if.merge.92: ; preds = %if.then.91, %while.body.89 +if.merge.116: ; preds = %if.then.115, %while.body.113 %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 @@ -2068,7 +2278,7 @@ if.merge.92: ; preds = %if.then.91, %while. %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.126, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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 @@ -2088,12 +2298,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.88 + br label %while.hdr.112 -fv.default: ; preds = %if.merge.92 +fv.default: ; preds = %if.merge.116 br label %fv.merge -fv.case: ; preds = %if.merge.92 +fv.case: ; preds = %if.merge.116 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2101,19 +2311,19 @@ fv.case: ; preds = %if.merge.92 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.92 +fv.case17: ; preds = %if.merge.116 %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.92 +fv.case20: ; preds = %if.merge.116 %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.92 +fv.case24: ; preds = %if.merge.116 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2127,43 +2337,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.127, i64 9 }, { ptr, i64 } { ptr @str.128, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.130, i64 9 }, { ptr, i64 } { ptr @str.131, 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.93 + br label %while.hdr.117 -while.hdr.93: ; preds = %fv.merge, %entry +while.hdr.117: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.94, label %while.exit.95 + br i1 %icmp, label %while.body.118, label %while.exit.119 -while.body.94: ; preds = %while.hdr.93 +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.96, label %if.merge.97 + br i1 %icmpN, label %if.then.120, label %if.merge.121 -while.exit.95: ; preds = %while.hdr.93 +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.129, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) ret { ptr, i64 } %callN -if.then.96: ; preds = %while.body.94 +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.130, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.97 + br label %if.merge.121 -if.merge.97: ; preds = %if.then.96, %while.body.94 +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 [3 x { ptr, i64 }], ptr @field_names.134, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.137, 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.135, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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 @@ -2182,24 +2392,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.93 + br label %while.hdr.117 -fv.default: ; preds = %if.merge.97 +fv.default: ; preds = %if.merge.121 br label %fv.merge -fv.case: ; preds = %if.merge.97 +fv.case: ; preds = %if.merge.121 %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.97 +fv.case17: ; preds = %if.merge.121 %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.97 +fv.case21: ; preds = %if.merge.121 %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 @@ -2211,43 +2421,43 @@ 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.136, i64 10 }, { ptr, i64 } { ptr @str.137, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.139, i64 10 }, { ptr, i64 } { ptr @str.140, 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.98 + br label %while.hdr.122 -while.hdr.98: ; preds = %if.merge.102, %entry +while.hdr.122: ; preds = %if.merge.126, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.99, label %while.exit.100 + br i1 %icmp, label %while.body.123, label %while.exit.124 -while.body.99: ; preds = %while.hdr.98 +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.101, label %if.merge.102 + br i1 %icmpN, label %if.then.125, label %if.merge.126 -while.exit.100: ; preds = %while.hdr.98 +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.138, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, i64 1 }) ret { ptr, i64 } %callN -if.then.101: ; preds = %while.body.99 +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.139, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.102 + br label %if.merge.126 -if.merge.102: ; preds = %if.then.101, %while.body.99 +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 [0 x { ptr, i64 }], ptr @field_names.140, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.143, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2258,7 +2468,7 @@ if.merge.102: ; preds = %if.then.101, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.98 + br label %while.hdr.122 } ; Function Attrs: nounwind @@ -2266,43 +2476,43 @@ 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.142, i64 3 }, { ptr, i64 } { ptr @str.143, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.145, i64 3 }, { ptr, i64 } { ptr @str.146, 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.103 + br label %while.hdr.127 -while.hdr.103: ; preds = %fv.merge, %entry +while.hdr.127: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.104, label %while.exit.105 + br i1 %icmp, label %while.body.128, label %while.exit.129 -while.body.104: ; preds = %while.hdr.103 +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.106, label %if.merge.107 + br i1 %icmpN, label %if.then.130, label %if.merge.131 -while.exit.105: ; preds = %while.hdr.103 +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.144, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 1 }) ret { ptr, i64 } %callN -if.then.106: ; preds = %while.body.104 +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.145, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.107 + br label %if.merge.131 -if.merge.107: ; preds = %if.then.106, %while.body.104 +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 [1 x { ptr, i64 }], ptr @field_names.147, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.150, 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.148, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, 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 @@ -2319,12 +2529,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.103 + br label %while.hdr.127 -fv.default: ; preds = %if.merge.107 +fv.default: ; preds = %if.merge.131 br label %fv.merge -fv.case: ; preds = %if.merge.107 +fv.case: ; preds = %if.merge.131 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2335,43 +2545,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.149, i64 10 }, { ptr, i64 } { ptr @str.150, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.152, i64 10 }, { ptr, i64 } { ptr @str.153, 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.108 + br label %while.hdr.132 -while.hdr.108: ; preds = %fv.merge, %entry +while.hdr.132: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.109, label %while.exit.110 + br i1 %icmp, label %while.body.133, label %while.exit.134 -while.body.109: ; preds = %while.hdr.108 +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.111, label %if.merge.112 + br i1 %icmpN, label %if.then.135, label %if.merge.136 -while.exit.110: ; preds = %while.hdr.108 +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.151, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 1 }) ret { ptr, i64 } %callN -if.then.111: ; preds = %while.body.109 +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.152, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.112 + br label %if.merge.136 -if.merge.112: ; preds = %if.then.111, %while.body.109 +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 [2 x { ptr, i64 }], ptr @field_names.155, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.158, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, 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 @@ -2389,18 +2599,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.108 + br label %while.hdr.132 -fv.default: ; preds = %if.merge.112 +fv.default: ; preds = %if.merge.136 br label %fv.merge -fv.case: ; preds = %if.merge.112 +fv.case: ; preds = %if.merge.136 %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.112 +fv.case17: ; preds = %if.merge.136 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2411,43 +2621,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.157, i64 5 }, { ptr, i64 } { ptr @str.158, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 5 }, { ptr, i64 } { ptr @str.161, 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.113 + br label %while.hdr.137 -while.hdr.113: ; preds = %fv.merge, %entry +while.hdr.137: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.114, label %while.exit.115 + br i1 %icmp, label %while.body.138, label %while.exit.139 -while.body.114: ; preds = %while.hdr.113 +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.116, label %if.merge.117 + br i1 %icmpN, label %if.then.140, label %if.merge.141 -while.exit.115: ; preds = %while.hdr.113 +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.159, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 1 }) ret { ptr, i64 } %callN -if.then.116: ; preds = %while.body.114 +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.160, i64 2 }) + %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 - br label %if.merge.117 + br label %if.merge.141 -if.merge.117: ; preds = %if.then.116, %while.body.114 +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 [3 x { ptr, i64 }], ptr @field_names.164, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.167, 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.165, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, 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 @@ -2466,23 +2676,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.113 + br label %while.hdr.137 -fv.default: ; preds = %if.merge.117 +fv.default: ; preds = %if.merge.141 br label %fv.merge -fv.case: ; preds = %if.merge.117 +fv.case: ; preds = %if.merge.141 %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.117 +fv.case17: ; preds = %if.merge.141 %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.117 +fv.case20: ; preds = %if.merge.141 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2496,43 +2706,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.166, i64 8 }, { ptr, i64 } { ptr @str.167, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.169, i64 8 }, { ptr, i64 } { ptr @str.170, 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.118 + br label %while.hdr.142 -while.hdr.118: ; preds = %fv.merge, %entry +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.119, label %while.exit.120 + br i1 %icmp, label %while.body.143, label %while.exit.144 -while.body.119: ; preds = %while.hdr.118 +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.121, label %if.merge.122 + br i1 %icmpN, label %if.then.145, label %if.merge.146 -while.exit.120: ; preds = %while.hdr.118 +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.168, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.171, i64 1 }) ret { ptr, i64 } %callN -if.then.121: ; preds = %while.body.119 +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.169, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.122 + br label %if.merge.146 -if.merge.122: ; preds = %if.then.121, %while.body.119 +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.173, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.176, 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.174, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, 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 @@ -2551,23 +2761,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.118 + br label %while.hdr.142 -fv.default: ; preds = %if.merge.122 +fv.default: ; preds = %if.merge.146 br label %fv.merge -fv.case: ; preds = %if.merge.122 +fv.case: ; preds = %if.merge.146 %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.122 +fv.case17: ; preds = %if.merge.146 %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.122 +fv.case20: ; preds = %if.merge.146 %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 @@ -2578,43 +2788,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.175, i64 17 }, { ptr, i64 } { ptr @str.176, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.178, i64 17 }, { ptr, i64 } { ptr @str.179, 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.123 + br label %while.hdr.147 -while.hdr.123: ; preds = %fv.merge, %entry +while.hdr.147: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.124, label %while.exit.125 + br i1 %icmp, label %while.body.148, label %while.exit.149 -while.body.124: ; preds = %while.hdr.123 +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.126, label %if.merge.127 + br i1 %icmpN, label %if.then.150, label %if.merge.151 -while.exit.125: ; preds = %while.hdr.123 +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.177, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.180, i64 1 }) ret { ptr, i64 } %callN -if.then.126: ; preds = %while.body.124 +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.178, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.127 + br label %if.merge.151 -if.merge.127: ; preds = %if.then.126, %while.body.124 +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 [4 x { ptr, i64 }], ptr @field_names.183, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.186, 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.184, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, 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 @@ -2634,12 +2844,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.123 + br label %while.hdr.147 -fv.default: ; preds = %if.merge.127 +fv.default: ; preds = %if.merge.151 br label %fv.merge -fv.case: ; preds = %if.merge.127 +fv.case: ; preds = %if.merge.151 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2647,17 +2857,17 @@ fv.case: ; preds = %if.merge.127 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.127 +fv.case17: ; preds = %if.merge.151 %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.127 +fv.case20: ; preds = %if.merge.151 %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.127 +fv.case23: ; preds = %if.merge.151 %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 @@ -2668,43 +2878,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.185, i64 7 }, { ptr, i64 } { ptr @str.186, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 7 }, { ptr, i64 } { ptr @str.189, 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.128 + br label %while.hdr.152 -while.hdr.128: ; preds = %fv.merge, %entry +while.hdr.152: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.129, label %while.exit.130 + br i1 %icmp, label %while.body.153, label %while.exit.154 -while.body.129: ; preds = %while.hdr.128 +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.131, label %if.merge.132 + br i1 %icmpN, label %if.then.155, label %if.merge.156 -while.exit.130: ; preds = %while.hdr.128 +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.187, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 1 }) ret { ptr, i64 } %callN -if.then.131: ; preds = %while.body.129 +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.188, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.132 + br label %if.merge.156 -if.merge.132: ; preds = %if.then.131, %while.body.129 +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 [2 x { ptr, i64 }], ptr @field_names.191, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.194, 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.192, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, 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 @@ -2722,12 +2932,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.128 + br label %while.hdr.152 -fv.default: ; preds = %if.merge.132 +fv.default: ; preds = %if.merge.156 br label %fv.merge -fv.case: ; preds = %if.merge.132 +fv.case: ; preds = %if.merge.156 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2735,7 +2945,7 @@ fv.case: ; preds = %if.merge.132 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.132 +fv.case17: ; preds = %if.merge.156 %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 @@ -2747,43 +2957,43 @@ define internal { ptr, i64 } @struct_to_string__IntCell(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.193, i64 7 }, { ptr, i64 } { ptr @str.194, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 7 }, { ptr, i64 } { ptr @str.197, 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.133 + br label %while.hdr.157 -while.hdr.133: ; preds = %fv.merge, %entry +while.hdr.157: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.134, label %while.exit.135 + br i1 %icmp, label %while.body.158, label %while.exit.159 -while.body.134: ; preds = %while.hdr.133 +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.136, label %if.merge.137 + br i1 %icmpN, label %if.then.160, label %if.merge.161 -while.exit.135: ; preds = %while.hdr.133 +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.195, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 1 }) ret { ptr, i64 } %callN -if.then.136: ; preds = %while.body.134 +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.196, i64 2 }) + %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 - br label %if.merge.137 + br label %if.merge.161 -if.merge.137: ; preds = %if.then.136, %while.body.134 +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 [1 x { ptr, i64 }], ptr @field_names.198, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.201, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, 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 @@ -2800,12 +3010,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.133 + br label %while.hdr.157 -fv.default: ; preds = %if.merge.137 +fv.default: ; preds = %if.merge.161 br label %fv.merge -fv.case: ; preds = %if.merge.137 +fv.case: ; preds = %if.merge.161 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2816,43 +3026,43 @@ define internal { ptr, i64 } @struct_to_string__R(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.200, i64 1 }, { ptr, i64 } { ptr @str.201, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 1 }, { ptr, i64 } { ptr @str.204, 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.138 + br label %while.hdr.162 -while.hdr.138: ; preds = %if.merge.142, %entry +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.139, label %while.exit.140 + br i1 %icmp, label %while.body.163, label %while.exit.164 -while.body.139: ; preds = %while.hdr.138 +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.141, label %if.merge.142 + br i1 %icmpN, label %if.then.165, label %if.merge.166 -while.exit.140: ; preds = %while.hdr.138 +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.202, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.205, i64 1 }) ret { ptr, i64 } %callN -if.then.141: ; preds = %while.body.139 +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.203, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.206, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.142 + br label %if.merge.166 -if.merge.142: ; preds = %if.then.141, %while.body.139 +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.204, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.207, 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.205, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2863,7 +3073,7 @@ if.merge.142: ; preds = %if.then.141, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.162 } ; Function Attrs: nounwind @@ -2871,43 +3081,43 @@ define internal { ptr, i64 } @struct_to_string__Combined(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.206, i64 8 }, { ptr, i64 } { ptr @str.207, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 8 }, { ptr, i64 } { ptr @str.210, 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.143 + br label %while.hdr.167 -while.hdr.143: ; preds = %if.merge.147, %entry +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.144, label %while.exit.145 + br i1 %icmp, label %while.body.168, label %while.exit.169 -while.body.144: ; preds = %while.hdr.143 +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.146, label %if.merge.147 + br i1 %icmpN, label %if.then.170, label %if.merge.171 -while.exit.145: ; preds = %while.hdr.143 +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.208, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.211, i64 1 }) ret { ptr, i64 } %callN -if.then.146: ; preds = %while.body.144 +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.209, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.212, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.147 + br label %if.merge.171 -if.merge.147: ; preds = %if.then.146, %while.body.144 +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.210, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.213, 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.211, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.214, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2918,7 +3128,7 @@ if.merge.147: ; preds = %if.then.146, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.167 } ; Function Attrs: nounwind @@ -2926,43 +3136,43 @@ define internal { ptr, i64 } @struct_to_string__VL__s64(ptr %0, { ptr, ptr } %1) entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 7 }, { ptr, i64 } { ptr @str.213, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 7 }, { ptr, i64 } { ptr @str.216, 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.148 + br label %while.hdr.172 -while.hdr.148: ; preds = %fv.merge, %entry +while.hdr.172: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.149, label %while.exit.150 + br i1 %icmp, label %while.body.173, label %while.exit.174 -while.body.149: ; preds = %while.hdr.148 +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.151, label %if.merge.152 + br i1 %icmpN, label %if.then.175, label %if.merge.176 -while.exit.150: ; preds = %while.hdr.148 +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.214, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.217, i64 1 }) ret { ptr, i64 } %callN -if.then.151: ; preds = %while.body.149 +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.215, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.218, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.152 + br label %if.merge.176 -if.merge.152: ; preds = %if.then.151, %while.body.149 +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 [2 x { ptr, i64 }], ptr @field_names.218, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.221, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.222, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -2980,18 +3190,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.148 + br label %while.hdr.172 -fv.default: ; preds = %if.merge.152 +fv.default: ; preds = %if.merge.176 br label %fv.merge -fv.case: ; preds = %if.merge.152 +fv.case: ; preds = %if.merge.176 %fv.field = extractvalue { 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.152 +fv.case17: ; preds = %if.merge.176 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3003,43 +3213,43 @@ define internal { ptr, i64 } @struct_to_string____VL__s64__Vtable(ptr %0, { ptr entry: %alloca = alloca { ptr }, align 8 store { ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 17 }, { ptr, i64 } { ptr @str.221, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 17 }, { ptr, i64 } { ptr @str.224, 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.153 + br label %while.hdr.177 -while.hdr.153: ; preds = %fv.merge, %entry +while.hdr.177: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.154, label %while.exit.155 + br i1 %icmp, label %while.body.178, label %while.exit.179 -while.body.154: ; preds = %while.hdr.153 +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.156, label %if.merge.157 + br i1 %icmpN, label %if.then.180, label %if.merge.181 -while.exit.155: ; preds = %while.hdr.153 +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.222, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.225, i64 1 }) ret { ptr, i64 } %callN -if.then.156: ; preds = %while.body.154 +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.223, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.226, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.157 + br label %if.merge.181 -if.merge.157: ; preds = %if.then.156, %while.body.154 +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 [1 x { ptr, i64 }], ptr @field_names.225, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.228, 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.226, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr }, ptr %alloca, align 8 @@ -3056,12 +3266,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.153 + br label %while.hdr.177 -fv.default: ; preds = %if.merge.157 +fv.default: ; preds = %if.merge.181 br label %fv.merge -fv.case: ; preds = %if.merge.157 +fv.case: ; preds = %if.merge.181 %fv.field = extractvalue { ptr } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1 @@ -3073,43 +3283,43 @@ define internal { ptr, i64 } @struct_to_string__VL(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.227, i64 2 }, { ptr, i64 } { ptr @str.228, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 2 }, { ptr, i64 } { ptr @str.231, 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.158 + br label %while.hdr.182 -while.hdr.158: ; preds = %if.merge.162, %entry +while.hdr.182: ; preds = %if.merge.186, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.159, label %while.exit.160 + br i1 %icmp, label %while.body.183, label %while.exit.184 -while.body.159: ; preds = %while.hdr.158 +while.body.183: ; preds = %while.hdr.182 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.161, label %if.merge.162 + br i1 %icmpN, label %if.then.185, label %if.merge.186 -while.exit.160: ; preds = %while.hdr.158 +while.exit.184: ; preds = %while.hdr.182 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.229, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.232, i64 1 }) ret { ptr, i64 } %callN -if.then.161: ; preds = %while.body.159 +if.then.185: ; preds = %while.body.183 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.230, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.162 + br label %if.merge.186 -if.merge.162: ; preds = %if.then.161, %while.body.159 +if.merge.186: ; preds = %if.then.185, %while.body.183 %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.231, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 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.232, i64 2 }) + %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 %alloca, align 1 @@ -3120,7 +3330,7 @@ if.merge.162: ; preds = %if.then.161, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.158 + br label %while.hdr.182 } ; Function Attrs: nounwind @@ -3128,43 +3338,43 @@ define internal { ptr, i64 } @struct_to_string__Combined__s64__s64(ptr %0, { { { entry: %alloca = alloca { { { ptr, ptr } }, i64 }, align 8 store { { { ptr, ptr } }, i64 } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 18 }, { ptr, i64 } { ptr @str.234, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 18 }, { ptr, i64 } { ptr @str.237, 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.163 + br label %while.hdr.187 -while.hdr.163: ; preds = %fv.merge, %entry +while.hdr.187: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.164, label %while.exit.165 + br i1 %icmp, label %while.body.188, label %while.exit.189 -while.body.164: ; preds = %while.hdr.163 +while.body.188: ; preds = %while.hdr.187 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.166, label %if.merge.167 + br i1 %icmpN, label %if.then.190, label %if.merge.191 -while.exit.165: ; preds = %while.hdr.163 +while.exit.189: ; preds = %while.hdr.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.235, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.238, i64 1 }) ret { ptr, i64 } %callN -if.then.166: ; preds = %while.body.164 +if.then.190: ; preds = %while.body.188 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.239, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.167 + br label %if.merge.191 -if.merge.167: ; preds = %if.then.166, %while.body.164 +if.merge.191: ; preds = %if.then.190, %while.body.188 %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.239, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.242, 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.240, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.243, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { { ptr, ptr } }, i64 }, ptr %alloca, align 8 @@ -3182,58 +3392,108 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.163 + br label %while.hdr.187 -fv.default: ; preds = %if.merge.167 +fv.default: ; preds = %if.merge.191 br label %fv.merge -fv.case: ; preds = %if.merge.167 +fv.case: ; preds = %if.merge.191 %fv.field = extractvalue { { { ptr, ptr } }, i64 } %loadN, 0 %ba.tmp = alloca { { ptr, ptr } }, align 8 store { { ptr, ptr } } %fv.field, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val = insertvalue { i64, i64 } { i64 52, i64 undef }, i64 %ba.p2i, 1 + %fv.val = insertvalue { i64, i64 } { i64 53, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.167 +fv.case17: ; preds = %if.merge.191 %fv.field18 = extractvalue { { { ptr, 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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.244, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.196 + +while.hdr.196: ; preds = %if.merge.200, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.197, label %while.exit.198 + +while.body.197: ; preds = %while.hdr.196 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.199, label %if.merge.200 + +while.exit.198: ; preds = %while.hdr.196 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.245, i64 1 }) + ret { ptr, i64 } %call + +if.then.199: ; preds = %while.body.197 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.246, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.200 + +if.merge.200: ; preds = %if.then.199, %while.body.197 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.196 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.241, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.247, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.171 + br label %while.hdr.201 -while.hdr.171: ; preds = %if.merge.175, %entry +while.hdr.201: ; preds = %if.merge.205, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.172, label %while.exit.173 + br i1 %icmp, label %while.body.202, label %while.exit.203 -while.body.172: ; preds = %while.hdr.171 +while.body.202: ; preds = %while.hdr.201 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.174, label %if.merge.175 + br i1 %icmpN, label %if.then.204, label %if.merge.205 -while.exit.173: ; preds = %while.hdr.171 +while.exit.203: ; preds = %while.hdr.201 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.242, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 1 }) ret { ptr, i64 } %call -if.then.174: ; preds = %while.body.172 +if.then.204: ; preds = %while.body.202 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.243, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.249, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.175 + br label %if.merge.205 -if.merge.175: ; preds = %if.then.174, %while.body.172 +if.merge.205: ; preds = %if.then.204, %while.body.202 %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 @@ -3251,7 +3511,7 @@ if.merge.175: ; preds = %if.then.174, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.171 + br label %while.hdr.201 } ; Function Attrs: nounwind @@ -3260,35 +3520,35 @@ 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.244, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.250, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.181 + br label %while.hdr.211 -while.hdr.181: ; preds = %if.merge.185, %entry +while.hdr.211: ; preds = %if.merge.215, %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.182, label %while.exit.183 + br i1 %icmp, label %while.body.212, label %while.exit.213 -while.body.182: ; preds = %while.hdr.181 +while.body.212: ; preds = %while.hdr.211 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.184, label %if.merge.185 + br i1 %icmpN, label %if.then.214, label %if.merge.215 -while.exit.183: ; preds = %while.hdr.181 +while.exit.213: ; preds = %while.hdr.211 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.245, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 1 }) ret { ptr, i64 } %call -if.then.184: ; preds = %while.body.182 +if.then.214: ; preds = %while.body.212 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.246, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.252, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.185 + br label %if.merge.215 -if.merge.185: ; preds = %if.then.184, %while.body.182 +if.merge.215: ; preds = %if.then.214, %while.body.212 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3305,7 +3565,7 @@ if.merge.185: ; preds = %if.then.184, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.181 + br label %while.hdr.211 } ; Function Attrs: nounwind @@ -3314,35 +3574,35 @@ 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.247, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.253, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.186 + br label %while.hdr.216 -while.hdr.186: ; preds = %if.merge.190, %entry +while.hdr.216: ; preds = %if.merge.220, %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.187, label %while.exit.188 + br i1 %icmp, label %while.body.217, label %while.exit.218 -while.body.187: ; preds = %while.hdr.186 +while.body.217: ; preds = %while.hdr.216 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.189, label %if.merge.190 + br i1 %icmpN, label %if.then.219, label %if.merge.220 -while.exit.188: ; preds = %while.hdr.186 +while.exit.218: ; preds = %while.hdr.216 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.254, i64 1 }) ret { ptr, i64 } %call -if.then.189: ; preds = %while.body.187 +if.then.219: ; preds = %while.body.217 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.249, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.255, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.190 + br label %if.merge.220 -if.merge.190: ; preds = %if.then.189, %while.body.187 +if.merge.220: ; preds = %if.then.219, %while.body.217 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3352,14 +3612,14 @@ if.merge.190: ; preds = %if.then.189, %while %ba.tmp = alloca {}, align 8 store {} %ig.val, ptr %ba.tmp, align 1 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 43, 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.186 + br label %while.hdr.216 } ; Function Attrs: nounwind @@ -3368,35 +3628,35 @@ 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.250, i64 1 }, ptr %allocaN, 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.191 + br label %while.hdr.221 -while.hdr.191: ; preds = %if.merge.195, %entry +while.hdr.221: ; preds = %if.merge.225, %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.192, label %while.exit.193 + br i1 %icmp, label %while.body.222, label %while.exit.223 -while.body.192: ; preds = %while.hdr.191 +while.body.222: ; preds = %while.hdr.221 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.194, label %if.merge.195 + br i1 %icmpN, label %if.then.224, label %if.merge.225 -while.exit.193: ; preds = %while.hdr.191 +while.exit.223: ; preds = %while.hdr.221 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.257, i64 1 }) ret { ptr, i64 } %call -if.then.194: ; preds = %while.body.192 +if.then.224: ; preds = %while.body.222 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.252, i64 2 }) + %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.195 + br label %if.merge.225 -if.merge.195: ; preds = %if.then.194, %while.body.192 +if.merge.225: ; preds = %if.then.224, %while.body.222 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3413,95 +3673,11 @@ if.merge.195: ; preds = %if.then.194, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.191 + br label %while.hdr.221 } ; 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.222, label %if.else.223 - -if.then.222: ; preds = %entry - br label %if.merge.224 - -if.else.223: ; 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.255, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.224 - -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.253, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] - 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.246, label %if.else.247 - -if.then.246: ; preds = %entry - br label %if.merge.248 - -if.else.247: ; 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.258, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.248 - -if.merge.248: ; preds = %if.else.247, %if.then.246 - %bp = phi { ptr, i64 } [ { ptr @str.256, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] - 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.249, label %if.else.250 - -if.then.249: ; preds = %entry - br label %if.merge.251 - -if.else.250: ; 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.261, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.251 - -if.merge.251: ; preds = %if.else.250, %if.then.249 - %bp = phi { ptr, i64 } [ { ptr @str.259, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] - 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 @@ -3519,12 +3695,96 @@ if.then.252: ; preds = %entry if.else.253: ; 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.264, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.263, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.261, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 5 }, { ptr, i64 } %callN) br label %if.merge.254 if.merge.254: ; preds = %if.else.253, %if.then.252 - %bp = phi { ptr, i64 } [ { ptr @str.262, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] + %bp = phi { ptr, i64 } [ { ptr @str.259, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] + 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.268, label %if.else.269 + +if.then.268: ; preds = %entry + br label %if.merge.270 + +if.else.269: ; 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.264, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.263, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.270 + +if.merge.270: ; preds = %if.else.269, %if.then.268 + %bp = phi { ptr, i64 } [ { ptr @str.262, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] + 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.271, label %if.else.272 + +if.then.271: ; preds = %entry + br label %if.merge.273 + +if.else.272: ; 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.267, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.273 + +if.merge.273: ; preds = %if.else.272, %if.then.271 + %bp = phi { ptr, i64 } [ { ptr @str.265, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] + 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.274, label %if.else.275 + +if.then.274: ; preds = %entry + br label %if.merge.276 + +if.else.275: ; 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.270, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.269, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.276 + +if.merge.276: ; preds = %if.else.275, %if.then.274 + %bp = phi { ptr, i64 } [ { ptr @str.268, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] ret { ptr, i64 } %bp } @@ -3539,20 +3799,20 @@ entry: 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.255, label %if.else.256 + br i1 %icmp, label %if.then.277, label %if.else.278 -if.then.255: ; preds = %entry - br label %if.merge.257 +if.then.277: ; preds = %entry + br label %if.merge.279 -if.else.256: ; preds = %entry +if.else.278: ; 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.267, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.257 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.279 -if.merge.257: ; preds = %if.else.256, %if.then.255 - %bp = phi { ptr, i64 } [ { ptr @str.265, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] +if.merge.279: ; preds = %if.else.278, %if.then.277 + %bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] ret { ptr, i64 } %bp } @@ -3566,20 +3826,20 @@ entry: 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.258, label %if.else.259 + br i1 %icmp, label %if.then.280, label %if.else.281 -if.then.258: ; preds = %entry - br label %if.merge.260 +if.then.280: ; preds = %entry + br label %if.merge.282 -if.else.259: ; preds = %entry +if.else.281: ; 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.270, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.269, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.260 + %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 5 }, { ptr, i64 } %callN) + br label %if.merge.282 -if.merge.260: ; preds = %if.else.259, %if.then.258 - %bp = phi { ptr, i64 } [ { ptr @str.268, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] +if.merge.282: ; preds = %if.else.281, %if.then.280 + %bp = phi { ptr, i64 } [ { ptr @str.274, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] ret { ptr, i64 } %bp } @@ -3594,20 +3854,20 @@ entry: 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.261, label %if.else.262 + br i1 %icmp, label %if.then.283, label %if.else.284 -if.then.261: ; preds = %entry - br label %if.merge.263 +if.then.283: ; preds = %entry + br label %if.merge.285 -if.else.262: ; preds = %entry +if.else.284: ; 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 9 }, { ptr, i64 } %callN) - br label %if.merge.263 + %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 9 }, { ptr, i64 } %callN) + br label %if.merge.285 -if.merge.263: ; preds = %if.else.262, %if.then.261 - %bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] +if.merge.285: ; preds = %if.else.284, %if.then.283 + %bp = phi { ptr, i64 } [ { ptr @str.277, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] ret { ptr, i64 } %bp } @@ -3622,20 +3882,20 @@ entry: 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 + br i1 %icmp, label %if.then.286, label %if.else.287 -if.then.264: ; preds = %entry - br label %if.merge.266 +if.then.286: ; preds = %entry + br label %if.merge.288 -if.else.265: ; preds = %entry +if.else.287: ; 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 18 }, { ptr, i64 } %callN) - br label %if.merge.266 + %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 18 }, { ptr, i64 } %callN) + br label %if.merge.288 -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 ] +if.merge.288: ; preds = %if.else.287, %if.then.286 + %bp = phi { ptr, i64 } [ { ptr @str.280, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] ret { ptr, i64 } %bp } @@ -3650,20 +3910,20 @@ entry: 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 + br i1 %icmp, label %if.then.289, label %if.else.290 -if.then.267: ; preds = %entry - br label %if.merge.269 +if.then.289: ; preds = %entry + br label %if.merge.291 -if.else.268: ; preds = %entry +if.else.290: ; 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 8 }, { ptr, i64 } %callN) - br label %if.merge.269 + %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 8 }, { ptr, i64 } %callN) + br label %if.merge.291 -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 ] +if.merge.291: ; preds = %if.else.290, %if.then.289 + %bp = phi { ptr, i64 } [ { ptr @str.283, i64 4 }, %if.then.289 ], [ %callN, %if.else.290 ] ret { ptr, i64 } %bp } @@ -3678,20 +3938,20 @@ entry: 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 + br i1 %icmp, label %if.then.292, label %if.else.293 -if.then.270: ; preds = %entry - br label %if.merge.272 +if.then.292: ; preds = %entry + br label %if.merge.294 -if.else.271: ; preds = %entry +if.else.293: ; 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 12 }, { ptr, i64 } %callN) - br label %if.merge.272 + %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 12 }, { ptr, i64 } %callN) + br label %if.merge.294 -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 ] +if.merge.294: ; preds = %if.else.293, %if.then.292 + %bp = phi { ptr, i64 } [ { ptr @str.286, i64 4 }, %if.then.292 ], [ %callN, %if.else.293 ] ret { ptr, i64 } %bp } @@ -3706,20 +3966,20 @@ entry: 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 + br i1 %icmp, label %if.then.295, label %if.else.296 -if.then.273: ; preds = %entry - br label %if.merge.275 +if.then.295: ; preds = %entry + br label %if.merge.297 -if.else.274: ; preds = %entry +if.else.296: ; 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 4 }, { ptr, i64 } %callN) - br label %if.merge.275 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.297 -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 ] +if.merge.297: ; preds = %if.else.296, %if.then.295 + %bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.295 ], [ %callN, %if.else.296 ] ret { ptr, i64 } %bp } @@ -3734,20 +3994,20 @@ entry: 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.276, label %if.else.277 + br i1 %icmp, label %if.then.298, label %if.else.299 -if.then.276: ; preds = %entry - br label %if.merge.278 +if.then.298: ; preds = %entry + br label %if.merge.300 -if.else.277: ; preds = %entry +if.else.299: ; 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 6 }, { ptr, i64 } %callN) - br label %if.merge.278 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.300 -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 ] +if.merge.300: ; preds = %if.else.299, %if.then.298 + %bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.298 ], [ %callN, %if.else.299 ] ret { ptr, i64 } %bp } @@ -3762,20 +4022,20 @@ entry: 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 + br i1 %icmp, label %if.then.301, label %if.else.302 -if.then.279: ; preds = %entry - br label %if.merge.281 +if.then.301: ; preds = %entry + br label %if.merge.303 -if.else.280: ; preds = %entry +if.else.302: ; 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 4 }, { ptr, i64 } %callN) - br label %if.merge.281 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.303 -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 ] +if.merge.303: ; preds = %if.else.302, %if.then.301 + %bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.301 ], [ %callN, %if.else.302 ] ret { ptr, i64 } %bp } @@ -3790,20 +4050,20 @@ entry: 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 + br i1 %icmp, label %if.then.304, label %if.else.305 -if.then.282: ; preds = %entry - br label %if.merge.284 +if.then.304: ; preds = %entry + br label %if.merge.306 -if.else.283: ; preds = %entry +if.else.305: ; 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 7 }, { ptr, i64 } %callN) - br label %if.merge.284 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.306 -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 ] +if.merge.306: ; preds = %if.else.305, %if.then.304 + %bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.304 ], [ %callN, %if.else.305 ] ret { ptr, i64 } %bp } @@ -3818,20 +4078,20 @@ entry: 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 + br i1 %icmp, label %if.then.307, label %if.else.308 -if.then.285: ; preds = %entry - br label %if.merge.287 +if.then.307: ; preds = %entry + br label %if.merge.309 -if.else.286: ; preds = %entry +if.else.308: ; 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 6 }, { ptr, i64 } %callN) - br label %if.merge.287 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.309 -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 ] +if.merge.309: ; preds = %if.else.308, %if.then.307 + %bp = phi { ptr, i64 } [ { ptr @str.301, i64 4 }, %if.then.307 ], [ %callN, %if.else.308 ] ret { ptr, i64 } %bp } @@ -3846,20 +4106,20 @@ entry: 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 + br i1 %icmp, label %if.then.310, label %if.else.311 -if.then.288: ; preds = %entry - br label %if.merge.290 +if.then.310: ; preds = %entry + br label %if.merge.312 -if.else.289: ; preds = %entry +if.else.311: ; 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 19 }, { ptr, i64 } %callN) - br label %if.merge.290 + %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 19 }, { ptr, i64 } %callN) + br label %if.merge.312 -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 ] +if.merge.312: ; preds = %if.else.311, %if.then.310 + %bp = phi { ptr, i64 } [ { ptr @str.304, i64 4 }, %if.then.310 ], [ %callN, %if.else.311 ] ret { ptr, i64 } %bp } @@ -3874,20 +4134,20 @@ entry: 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 + br i1 %icmp, label %if.then.313, label %if.else.314 -if.then.291: ; preds = %entry - br label %if.merge.293 +if.then.313: ; preds = %entry + br label %if.merge.315 -if.else.292: ; preds = %entry +if.else.314: ; 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 9 }, { ptr, i64 } %callN) - br label %if.merge.293 + %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 9 }, { ptr, i64 } %callN) + br label %if.merge.315 -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 ] +if.merge.315: ; preds = %if.else.314, %if.then.313 + %bp = phi { ptr, i64 } [ { ptr @str.307, i64 4 }, %if.then.313 ], [ %callN, %if.else.314 ] ret { ptr, i64 } %bp } @@ -3902,20 +4162,20 @@ entry: 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 + br i1 %icmp, label %if.then.316, label %if.else.317 -if.then.294: ; preds = %entry - br label %if.merge.296 +if.then.316: ; preds = %entry + br label %if.merge.318 -if.else.295: ; preds = %entry +if.else.317: ; 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 18 }, { ptr, i64 } %callN) - br label %if.merge.296 + %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 18 }, { ptr, i64 } %callN) + br label %if.merge.318 -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 ] +if.merge.318: ; preds = %if.else.317, %if.then.316 + %bp = phi { ptr, i64 } [ { ptr @str.310, i64 4 }, %if.then.316 ], [ %callN, %if.else.317 ] ret { ptr, i64 } %bp } @@ -3930,20 +4190,20 @@ entry: 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 + br i1 %icmp, label %if.then.319, label %if.else.320 -if.then.297: ; preds = %entry - br label %if.merge.299 +if.then.319: ; preds = %entry + br label %if.merge.321 -if.else.298: ; preds = %entry +if.else.320: ; 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 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.321 -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 ] +if.merge.321: ; preds = %if.else.320, %if.then.319 + %bp = phi { ptr, i64 } [ { ptr @str.313, i64 4 }, %if.then.319 ], [ %callN, %if.else.320 ] ret { ptr, i64 } %bp } @@ -3958,20 +4218,20 @@ entry: 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 + br i1 %icmp, label %if.then.322, label %if.else.323 -if.then.300: ; preds = %entry - br label %if.merge.302 +if.then.322: ; preds = %entry + br label %if.merge.324 -if.else.301: ; preds = %entry +if.else.323: ; 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 20 }, { ptr, i64 } %callN) - br label %if.merge.302 + %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 20 }, { ptr, i64 } %callN) + br label %if.merge.324 -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 ] +if.merge.324: ; preds = %if.else.323, %if.then.322 + %bp = phi { ptr, i64 } [ { ptr @str.316, i64 4 }, %if.then.322 ], [ %callN, %if.else.323 ] ret { ptr, i64 } %bp } @@ -3986,20 +4246,20 @@ entry: 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 + br i1 %icmp, label %if.then.325, label %if.else.326 -if.then.303: ; preds = %entry - br label %if.merge.305 +if.then.325: ; preds = %entry + br label %if.merge.327 -if.else.304: ; preds = %entry +if.else.326: ; 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 8 }, { ptr, i64 } %callN) - br label %if.merge.305 + %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 8 }, { ptr, i64 } %callN) + br label %if.merge.327 -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 ] +if.merge.327: ; preds = %if.else.326, %if.then.325 + %bp = phi { ptr, i64 } [ { ptr @str.319, i64 4 }, %if.then.325 ], [ %callN, %if.else.326 ] ret { ptr, i64 } %bp } @@ -4014,20 +4274,20 @@ entry: 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 + br i1 %icmp, label %if.then.328, label %if.else.329 -if.then.306: ; preds = %entry - br label %if.merge.308 +if.then.328: ; preds = %entry + br label %if.merge.330 -if.else.307: ; preds = %entry +if.else.329: ; 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 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.330 -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 ] +if.merge.330: ; preds = %if.else.329, %if.then.328 + %bp = phi { ptr, i64 } [ { ptr @str.322, i64 4 }, %if.then.328 ], [ %callN, %if.else.329 ] ret { ptr, i64 } %bp } @@ -4042,20 +4302,20 @@ entry: 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 + br i1 %icmp, label %if.then.331, label %if.else.332 -if.then.309: ; preds = %entry - br label %if.merge.311 +if.then.331: ; preds = %entry + br label %if.merge.333 -if.else.310: ; preds = %entry +if.else.332: ; 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 3 }, { ptr, i64 } %callN) - br label %if.merge.311 + %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.333 -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 ] +if.merge.333: ; preds = %if.else.332, %if.then.331 + %bp = phi { ptr, i64 } [ { ptr @str.325, i64 4 }, %if.then.331 ], [ %callN, %if.else.332 ] ret { ptr, i64 } %bp } @@ -4070,23 +4330,21 @@ entry: 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 + br i1 %icmp, label %if.then.334, label %if.else.335 -if.then.312: ; preds = %entry - br label %if.merge.314 +if.then.334: ; preds = %entry + br label %if.merge.336 -if.else.313: ; preds = %entry +if.else.335: ; 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 5 }, { ptr, i64 } %callN) - br label %if.merge.314 + %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.336 -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 ] +if.merge.336: ; preds = %if.else.335, %if.then.334 + %bp = phi { ptr, i64 } [ { ptr @str.328, i64 4 }, %if.then.334 ], [ %callN, %if.else.335 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0416-protocols-auto-type-erasure.ir b/examples/expected/0416-protocols-auto-type-erasure.ir index acad6cc..2bfdc4b 100644 --- a/examples/expected/0416-protocols-auto-type-erasure.ir +++ b/examples/expected/0416-protocols-auto-type-erasure.ir @@ -5,401 +5,408 @@ @__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 } @__Counter__SimpleCounter__vtable = internal constant { ptr, ptr } { ptr @__thunk_SimpleCounter_Counter_inc, ptr @__thunk_SimpleCounter_Counter_get } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.35 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.36 = private unnamed_addr constant [6 x i8] c"false\00", align 1 @str.37 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.38 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.38 = private unnamed_addr constant [5 x i8] c"true\00", align 1 +@str.39 = private unnamed_addr constant [6 x i8] c"false\00", align 1 +@str.40 = private unnamed_addr constant [2 x i8] c"0\00", align 1 +@str.41 = private unnamed_addr constant [4 x i8] c"\00", align 1 +@str.42 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@__sx_type_is_unsigned = private constant [102 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, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false] @tn.str = private constant [13 x i8] c"\00" -@tn.str.40 = private constant [5 x i8] c"bool\00" -@tn.str.41 = private constant [3 x i8] c"s8\00" -@tn.str.42 = private constant [4 x i8] c"s16\00" -@tn.str.43 = private constant [4 x i8] c"s32\00" -@tn.str.44 = private constant [4 x i8] c"s64\00" -@tn.str.45 = private constant [3 x i8] c"u8\00" -@tn.str.46 = private constant [4 x i8] c"u16\00" -@tn.str.47 = private constant [4 x i8] c"u32\00" -@tn.str.48 = private constant [4 x i8] c"u64\00" -@tn.str.49 = private constant [4 x i8] c"f32\00" -@tn.str.50 = private constant [4 x i8] c"f64\00" -@tn.str.51 = private constant [7 x i8] c"string\00" -@tn.str.52 = private constant [4 x i8] c"Any\00" -@tn.str.53 = private constant [9 x i8] c"noreturn\00" -@tn.str.54 = private constant [6 x i8] c"isize\00" -@tn.str.55 = private constant [6 x i8] c"usize\00" -@tn.str.56 = private constant [5 x i8] c"void\00" -@tn.str.57 = private constant [6 x i8] c"*void\00" -@tn.str.58 = private constant [16 x i8] c"Source_Location\00" -@tn.str.59 = private constant [10 x i8] c"Allocator\00" -@tn.str.60 = private constant [11 x i8] c"CAllocator\00" -@tn.str.61 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.62 = private constant [4 x i8] c"GPA\00" -@tn.str.63 = private constant [5 x i8] c"*GPA\00" -@tn.str.64 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.65 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.66 = private constant [6 x i8] c"Arena\00" -@tn.str.67 = private constant [7 x i8] c"*Arena\00" -@tn.str.68 = private constant [6 x i8] c"[*]u8\00" -@tn.str.69 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.70 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.71 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.72 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.73 = private constant [8 x i8] c"Context\00" -@tn.str.74 = private constant [9 x i8] c"[]string\00" -@tn.str.75 = private constant [16 x i8] c"OperatingSystem\00" -@tn.str.76 = private constant [13 x i8] c"Architecture\00" -@tn.str.77 = private constant [13 x i8] c"BuildOptions\00" -@tn.str.78 = private constant [11 x i8] c"() -> bool\00" -@tn.str.79 = private constant [6 x i8] c"Point\00" -@tn.str.80 = private constant [8 x i8] c"Counter\00" -@tn.str.81 = private constant [18 x i8] c"__Counter__Vtable\00" -@tn.str.82 = private constant [9 x i8] c"Summable\00" -@tn.str.83 = private constant [19 x i8] c"__Summable__Vtable\00" -@tn.str.84 = private constant [14 x i8] c"SimpleCounter\00" -@tn.str.85 = private constant [15 x i8] c"*SimpleCounter\00" -@tn.str.86 = private constant [7 x i8] c"*Point\00" -@tn.str.87 = private constant [6 x i8] c"Adder\00" -@tn.str.88 = private constant [12 x i8] c"Accumulator\00" -@tn.str.89 = private constant [13 x i8] c"*Accumulator\00" -@tn.str.90 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.91 = private constant [5 x i8] c"*s64\00" -@tn.str.92 = private constant [7 x i8] c"**void\00" -@tn.str.93 = private constant [8 x i8] c"*string\00" -@tn.str.94 = private constant [6 x i8] c"[]Any\00" -@tn.str.95 = private constant [5 x i8] c"*Any\00" -@tn.str.96 = private constant [7 x i8] c"*[]Any\00" -@tn.str.97 = private constant [4 x i8] c"*u8\00" -@tn.str.98 = private constant [6 x i8] c"*bool\00" -@tn.str.99 = private constant [9 x i8] c"*Counter\00" -@tn.str.100 = private constant [16 x i8] c"**SimpleCounter\00" -@tn.str.101 = private constant [5 x i8] c"*s32\00" -@tn.str.102 = private constant [19 x i8] c"*__Counter__Vtable\00" -@tn.str.103 = private constant [7 x i8] c"[1]Any\00" -@tn.str.104 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.105 = private constant [7 x i8] c"*Adder\00" -@tn.str.106 = private constant [14 x i8] c"**Accumulator\00" -@tn.str.107 = private constant [5 x i8] c"*f64\00" -@tn.str.108 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.109 = private constant [11 x i8] c"*Allocator\00" -@tn.str.110 = private constant [9 x i8] c"*Context\00" -@tn.str.111 = private constant [14 x i8] c"*BuildOptions\00" -@tn.str.112 = private constant [10 x i8] c"*Summable\00" -@tn.str.113 = private constant [20 x i8] c"*__Summable__Vtable\00" -@tn.str.114 = private constant [17 x i8] c"*OperatingSystem\00" -@tn.str.115 = private constant [14 x i8] c"*Architecture\00" -@tn.str.116 = private constant [10 x i8] c"*[]string\00" -@tn.str.117 = private constant [6 x i8] c"**GPA\00" -@tn.str.118 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.119 = private constant [8 x i8] c"**Arena\00" -@tn.str.120 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.121 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.122 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.123 = private constant [8 x i8] c"**Point\00" -@tn.str.124 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.125 = private constant [6 x i8] c"**s64\00" -@tn.str.126 = private constant [8 x i8] c"***void\00" -@tn.str.127 = private constant [9 x i8] c"**string\00" -@tn.str.128 = private constant [6 x i8] c"**Any\00" -@tn.str.129 = private constant [8 x i8] c"**[]Any\00" -@tn.str.130 = private constant [5 x i8] c"**u8\00" -@tn.str.131 = private constant [7 x i8] c"**bool\00" -@tn.str.132 = private constant [10 x i8] c"**Counter\00" -@tn.str.133 = private constant [17 x i8] c"***SimpleCounter\00" -@tn.str.134 = private constant [6 x i8] c"**s32\00" -@tn.str.135 = private constant [20 x i8] c"**__Counter__Vtable\00" -@tn.str.136 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.137 = private constant [8 x i8] c"**Adder\00" -@tn.str.138 = private constant [15 x i8] c"***Accumulator\00" -@__sx_type_names = private constant [100 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.40, i64 4 }, { ptr, i64 } { ptr @tn.str.41, i64 2 }, { ptr, i64 } { ptr @tn.str.42, i64 3 }, { ptr, i64 } { ptr @tn.str.43, i64 3 }, { ptr, i64 } { ptr @tn.str.44, i64 3 }, { ptr, i64 } { ptr @tn.str.45, i64 2 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 3 }, { ptr, i64 } { ptr @tn.str.48, i64 3 }, { ptr, i64 } { ptr @tn.str.49, i64 3 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 8 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 5 }, { ptr, i64 } { ptr @tn.str.56, i64 4 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 15 }, { ptr, i64 } { ptr @tn.str.59, i64 9 }, { ptr, i64 } { ptr @tn.str.60, i64 10 }, { ptr, i64 } { ptr @tn.str.61, i64 11 }, { ptr, i64 } { ptr @tn.str.62, i64 3 }, { ptr, i64 } { ptr @tn.str.63, i64 4 }, { ptr, i64 } { ptr @tn.str.64, i64 10 }, { ptr, i64 } { ptr @tn.str.65, i64 11 }, { ptr, i64 } { ptr @tn.str.66, i64 5 }, { ptr, i64 } { ptr @tn.str.67, i64 6 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 9 }, { ptr, i64 } { ptr @tn.str.71, i64 17 }, { ptr, i64 } { ptr @tn.str.72, i64 18 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 15 }, { ptr, i64 } { ptr @tn.str.76, i64 12 }, { ptr, i64 } { ptr @tn.str.77, i64 12 }, { ptr, i64 } { ptr @tn.str.78, i64 10 }, { ptr, i64 } { ptr @tn.str.79, i64 5 }, { ptr, i64 } { ptr @tn.str.80, i64 7 }, { ptr, i64 } { ptr @tn.str.81, i64 17 }, { ptr, i64 } { ptr @tn.str.82, i64 8 }, { ptr, i64 } { ptr @tn.str.83, i64 18 }, { ptr, i64 } { ptr @tn.str.84, i64 13 }, { ptr, i64 } { ptr @tn.str.85, i64 14 }, { ptr, i64 } { ptr @tn.str.86, i64 6 }, { ptr, i64 } { ptr @tn.str.87, i64 5 }, { ptr, i64 } { ptr @tn.str.88, i64 11 }, { ptr, i64 } { ptr @tn.str.89, i64 12 }, { ptr, i64 } { ptr @tn.str.90, i64 12 }, { ptr, i64 } { ptr @tn.str.91, i64 4 }, { ptr, i64 } { ptr @tn.str.92, i64 6 }, { ptr, i64 } { ptr @tn.str.93, i64 7 }, { ptr, i64 } { ptr @tn.str.94, i64 5 }, { ptr, i64 } { ptr @tn.str.95, i64 4 }, { ptr, i64 } { ptr @tn.str.96, i64 6 }, { ptr, i64 } { ptr @tn.str.97, i64 3 }, { ptr, i64 } { ptr @tn.str.98, i64 5 }, { ptr, i64 } { ptr @tn.str.99, i64 8 }, { ptr, i64 } { ptr @tn.str.100, i64 15 }, { ptr, i64 } { ptr @tn.str.101, i64 4 }, { ptr, i64 } { ptr @tn.str.102, i64 18 }, { ptr, i64 } { ptr @tn.str.103, i64 6 }, { ptr, i64 } { ptr @tn.str.104, i64 7 }, { ptr, i64 } { ptr @tn.str.105, i64 6 }, { ptr, i64 } { ptr @tn.str.106, i64 13 }, { ptr, i64 } { ptr @tn.str.107, i64 4 }, { ptr, i64 } { ptr @tn.str.108, i64 16 }, { ptr, i64 } { ptr @tn.str.109, i64 10 }, { ptr, i64 } { ptr @tn.str.110, i64 8 }, { ptr, i64 } { ptr @tn.str.111, i64 13 }, { ptr, i64 } { ptr @tn.str.112, i64 9 }, { ptr, i64 } { ptr @tn.str.113, i64 19 }, { ptr, i64 } { ptr @tn.str.114, i64 16 }, { ptr, i64 } { ptr @tn.str.115, i64 13 }, { ptr, i64 } { ptr @tn.str.116, i64 9 }, { ptr, i64 } { ptr @tn.str.117, i64 5 }, { ptr, i64 } { ptr @tn.str.118, i64 12 }, { ptr, i64 } { ptr @tn.str.119, i64 7 }, { ptr, i64 } { ptr @tn.str.120, i64 6 }, { ptr, i64 } { ptr @tn.str.121, i64 10 }, { ptr, i64 } { ptr @tn.str.122, i64 19 }, { ptr, i64 } { ptr @tn.str.123, i64 7 }, { ptr, i64 } { ptr @tn.str.124, i64 13 }, { ptr, i64 } { ptr @tn.str.125, i64 5 }, { ptr, i64 } { ptr @tn.str.126, i64 7 }, { ptr, i64 } { ptr @tn.str.127, i64 8 }, { ptr, i64 } { ptr @tn.str.128, i64 5 }, { ptr, i64 } { ptr @tn.str.129, i64 7 }, { ptr, i64 } { ptr @tn.str.130, i64 4 }, { ptr, i64 } { ptr @tn.str.131, i64 6 }, { ptr, i64 } { ptr @tn.str.132, i64 9 }, { ptr, i64 } { ptr @tn.str.133, i64 16 }, { ptr, i64 } { ptr @tn.str.134, i64 5 }, { ptr, i64 } { ptr @tn.str.135, i64 19 }, { ptr, i64 } { ptr @tn.str.136, i64 8 }, { ptr, i64 } { ptr @tn.str.137, i64 7 }, { ptr, i64 } { ptr @tn.str.138, i64 14 }] -@str.139 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.140 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.141 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.142 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.144 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.145 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.146 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.147 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.148 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.149 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 +@tn.str.43 = private constant [5 x i8] c"bool\00" +@tn.str.44 = private constant [3 x i8] c"s8\00" +@tn.str.45 = private constant [4 x i8] c"s16\00" +@tn.str.46 = private constant [4 x i8] c"s32\00" +@tn.str.47 = private constant [4 x i8] c"s64\00" +@tn.str.48 = private constant [3 x i8] c"u8\00" +@tn.str.49 = private constant [4 x i8] c"u16\00" +@tn.str.50 = private constant [4 x i8] c"u32\00" +@tn.str.51 = private constant [4 x i8] c"u64\00" +@tn.str.52 = private constant [4 x i8] c"f32\00" +@tn.str.53 = private constant [4 x i8] c"f64\00" +@tn.str.54 = private constant [7 x i8] c"string\00" +@tn.str.55 = private constant [4 x i8] c"Any\00" +@tn.str.56 = private constant [9 x i8] c"noreturn\00" +@tn.str.57 = private constant [6 x i8] c"isize\00" +@tn.str.58 = private constant [6 x i8] c"usize\00" +@tn.str.59 = private constant [5 x i8] c"void\00" +@tn.str.60 = private constant [6 x i8] c"*void\00" +@tn.str.61 = private constant [16 x i8] c"Source_Location\00" +@tn.str.62 = private constant [10 x i8] c"Allocator\00" +@tn.str.63 = private constant [11 x i8] c"CAllocator\00" +@tn.str.64 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.65 = private constant [4 x i8] c"GPA\00" +@tn.str.66 = private constant [5 x i8] c"*GPA\00" +@tn.str.67 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.68 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.69 = private constant [6 x i8] c"Arena\00" +@tn.str.70 = private constant [7 x i8] c"*Arena\00" +@tn.str.71 = private constant [6 x i8] c"[*]u8\00" +@tn.str.72 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.73 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.74 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.75 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.76 = private constant [8 x i8] c"Context\00" +@tn.str.77 = private constant [7 x i8] c"[4]s64\00" +@tn.str.78 = private constant [9 x i8] c"[]string\00" +@tn.str.79 = private constant [16 x i8] c"OperatingSystem\00" +@tn.str.80 = private constant [13 x i8] c"Architecture\00" +@tn.str.81 = private constant [13 x i8] c"BuildOptions\00" +@tn.str.82 = private constant [11 x i8] c"() -> bool\00" +@tn.str.83 = private constant [6 x i8] c"Point\00" +@tn.str.84 = private constant [8 x i8] c"Counter\00" +@tn.str.85 = private constant [18 x i8] c"__Counter__Vtable\00" +@tn.str.86 = private constant [9 x i8] c"Summable\00" +@tn.str.87 = private constant [19 x i8] c"__Summable__Vtable\00" +@tn.str.88 = private constant [14 x i8] c"SimpleCounter\00" +@tn.str.89 = private constant [15 x i8] c"*SimpleCounter\00" +@tn.str.90 = private constant [7 x i8] c"*Point\00" +@tn.str.91 = private constant [6 x i8] c"Adder\00" +@tn.str.92 = private constant [12 x i8] c"Accumulator\00" +@tn.str.93 = private constant [13 x i8] c"*Accumulator\00" +@tn.str.94 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.95 = private constant [5 x i8] c"*s64\00" +@tn.str.96 = private constant [7 x i8] c"**void\00" +@tn.str.97 = private constant [8 x i8] c"*string\00" +@tn.str.98 = private constant [6 x i8] c"[]Any\00" +@tn.str.99 = private constant [5 x i8] c"*Any\00" +@tn.str.100 = private constant [7 x i8] c"*[]Any\00" +@tn.str.101 = private constant [4 x i8] c"*u8\00" +@tn.str.102 = private constant [6 x i8] c"*bool\00" +@tn.str.103 = private constant [9 x i8] c"*Counter\00" +@tn.str.104 = private constant [16 x i8] c"**SimpleCounter\00" +@tn.str.105 = private constant [5 x i8] c"*s32\00" +@tn.str.106 = private constant [19 x i8] c"*__Counter__Vtable\00" +@tn.str.107 = private constant [7 x i8] c"[1]Any\00" +@tn.str.108 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.109 = private constant [7 x i8] c"*Adder\00" +@tn.str.110 = private constant [14 x i8] c"**Accumulator\00" +@tn.str.111 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.112 = private constant [5 x i8] c"*f64\00" +@tn.str.113 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.114 = private constant [11 x i8] c"*Allocator\00" +@tn.str.115 = private constant [9 x i8] c"*Context\00" +@tn.str.116 = private constant [14 x i8] c"*BuildOptions\00" +@tn.str.117 = private constant [10 x i8] c"*Summable\00" +@tn.str.118 = private constant [20 x i8] c"*__Summable__Vtable\00" +@tn.str.119 = private constant [17 x i8] c"*OperatingSystem\00" +@tn.str.120 = private constant [14 x i8] c"*Architecture\00" +@tn.str.121 = private constant [10 x i8] c"*[]string\00" +@tn.str.122 = private constant [6 x i8] c"**GPA\00" +@tn.str.123 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.124 = private constant [8 x i8] c"**Arena\00" +@tn.str.125 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.126 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.127 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.128 = private constant [8 x i8] c"**Point\00" +@tn.str.129 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.130 = private constant [6 x i8] c"**s64\00" +@tn.str.131 = private constant [8 x i8] c"***void\00" +@tn.str.132 = private constant [9 x i8] c"**string\00" +@tn.str.133 = private constant [6 x i8] c"**Any\00" +@tn.str.134 = private constant [8 x i8] c"**[]Any\00" +@tn.str.135 = private constant [5 x i8] c"**u8\00" +@tn.str.136 = private constant [7 x i8] c"**bool\00" +@tn.str.137 = private constant [10 x i8] c"**Counter\00" +@tn.str.138 = private constant [17 x i8] c"***SimpleCounter\00" +@tn.str.139 = private constant [6 x i8] c"**s32\00" +@tn.str.140 = private constant [20 x i8] c"**__Counter__Vtable\00" +@tn.str.141 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.142 = private constant [8 x i8] c"**Adder\00" +@tn.str.143 = private constant [15 x i8] c"***Accumulator\00" +@__sx_type_names = private constant [102 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.43, i64 4 }, { ptr, i64 } { ptr @tn.str.44, i64 2 }, { ptr, i64 } { ptr @tn.str.45, i64 3 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 3 }, { ptr, i64 } { ptr @tn.str.48, i64 2 }, { ptr, i64 } { ptr @tn.str.49, i64 3 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 3 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 3 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 3 }, { ptr, i64 } { ptr @tn.str.56, i64 8 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 5 }, { ptr, i64 } { ptr @tn.str.59, i64 4 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 15 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 11 }, { ptr, i64 } { ptr @tn.str.65, i64 3 }, { ptr, i64 } { ptr @tn.str.66, i64 4 }, { ptr, i64 } { ptr @tn.str.67, i64 10 }, { ptr, i64 } { ptr @tn.str.68, i64 11 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 6 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 9 }, { ptr, i64 } { ptr @tn.str.74, i64 17 }, { ptr, i64 } { ptr @tn.str.75, i64 18 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }, { ptr, i64 } { ptr @tn.str.78, i64 8 }, { ptr, i64 } { ptr @tn.str.79, i64 15 }, { ptr, i64 } { ptr @tn.str.80, i64 12 }, { ptr, i64 } { ptr @tn.str.81, i64 12 }, { ptr, i64 } { ptr @tn.str.82, i64 10 }, { ptr, i64 } { ptr @tn.str.83, i64 5 }, { ptr, i64 } { ptr @tn.str.84, i64 7 }, { ptr, i64 } { ptr @tn.str.85, i64 17 }, { ptr, i64 } { ptr @tn.str.86, i64 8 }, { ptr, i64 } { ptr @tn.str.87, i64 18 }, { ptr, i64 } { ptr @tn.str.88, i64 13 }, { ptr, i64 } { ptr @tn.str.89, i64 14 }, { ptr, i64 } { ptr @tn.str.90, i64 6 }, { ptr, i64 } { ptr @tn.str.91, i64 5 }, { ptr, i64 } { ptr @tn.str.92, i64 11 }, { ptr, i64 } { ptr @tn.str.93, i64 12 }, { ptr, i64 } { ptr @tn.str.94, i64 12 }, { ptr, i64 } { ptr @tn.str.95, i64 4 }, { ptr, i64 } { ptr @tn.str.96, i64 6 }, { ptr, i64 } { ptr @tn.str.97, i64 7 }, { ptr, i64 } { ptr @tn.str.98, i64 5 }, { ptr, i64 } { ptr @tn.str.99, i64 4 }, { ptr, i64 } { ptr @tn.str.100, i64 6 }, { ptr, i64 } { ptr @tn.str.101, i64 3 }, { ptr, i64 } { ptr @tn.str.102, i64 5 }, { ptr, i64 } { ptr @tn.str.103, i64 8 }, { ptr, i64 } { ptr @tn.str.104, i64 15 }, { ptr, i64 } { ptr @tn.str.105, i64 4 }, { ptr, i64 } { ptr @tn.str.106, i64 18 }, { ptr, i64 } { ptr @tn.str.107, i64 6 }, { ptr, i64 } { ptr @tn.str.108, i64 7 }, { ptr, i64 } { ptr @tn.str.109, i64 6 }, { ptr, i64 } { ptr @tn.str.110, i64 13 }, { ptr, i64 } { ptr @tn.str.111, i64 7 }, { ptr, i64 } { ptr @tn.str.112, i64 4 }, { ptr, i64 } { ptr @tn.str.113, i64 16 }, { ptr, i64 } { ptr @tn.str.114, i64 10 }, { ptr, i64 } { ptr @tn.str.115, i64 8 }, { ptr, i64 } { ptr @tn.str.116, i64 13 }, { ptr, i64 } { ptr @tn.str.117, i64 9 }, { ptr, i64 } { ptr @tn.str.118, i64 19 }, { ptr, i64 } { ptr @tn.str.119, i64 16 }, { ptr, i64 } { ptr @tn.str.120, i64 13 }, { ptr, i64 } { ptr @tn.str.121, i64 9 }, { ptr, i64 } { ptr @tn.str.122, i64 5 }, { ptr, i64 } { ptr @tn.str.123, i64 12 }, { ptr, i64 } { ptr @tn.str.124, i64 7 }, { ptr, i64 } { ptr @tn.str.125, i64 6 }, { ptr, i64 } { ptr @tn.str.126, i64 10 }, { ptr, i64 } { ptr @tn.str.127, i64 19 }, { ptr, i64 } { ptr @tn.str.128, i64 7 }, { ptr, i64 } { ptr @tn.str.129, i64 13 }, { ptr, i64 } { ptr @tn.str.130, i64 5 }, { ptr, i64 } { ptr @tn.str.131, i64 7 }, { ptr, i64 } { ptr @tn.str.132, i64 8 }, { ptr, i64 } { ptr @tn.str.133, i64 5 }, { ptr, i64 } { ptr @tn.str.134, i64 7 }, { ptr, i64 } { ptr @tn.str.135, i64 4 }, { ptr, i64 } { ptr @tn.str.136, i64 6 }, { ptr, i64 } { ptr @tn.str.137, i64 9 }, { ptr, i64 } { ptr @tn.str.138, i64 16 }, { ptr, i64 } { ptr @tn.str.139, i64 5 }, { ptr, i64 } { ptr @tn.str.140, i64 19 }, { ptr, i64 } { ptr @tn.str.141, i64 8 }, { ptr, i64 } { ptr @tn.str.142, i64 7 }, { ptr, i64 } { ptr @tn.str.143, i64 14 }] +@str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.145 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.146 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.147 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.148 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.149 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.150 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.151 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.152 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.153 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.154 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.155 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.156 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.158 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.159 = private unnamed_addr constant [27 x i8] c"=== Auto Type Erasure ===\0A\00", align 1 -@str.160 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.161 = private unnamed_addr constant [27 x i8] c"=== Auto Type Erasure ===\0A\00", align 1 -@str.162 = private unnamed_addr constant [9 x i8] c"AE1: {}\0A\00", align 1 -@str.163 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.164 = private unnamed_addr constant [9 x i8] c"AE1: {}\0A\00", align 1 -@str.165 = private unnamed_addr constant [9 x i8] c"AE2: {}\0A\00", align 1 -@str.166 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.167 = private unnamed_addr constant [9 x i8] c"AE2: {}\0A\00", align 1 -@str.168 = private unnamed_addr constant [9 x i8] c"AE3: {}\0A\00", align 1 -@str.169 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.170 = private unnamed_addr constant [9 x i8] c"AE3: {}\0A\00", align 1 -@str.171 = private unnamed_addr constant [9 x i8] c"AE4: {}\0A\00", align 1 -@str.172 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.173 = private unnamed_addr constant [9 x i8] c"AE4: {}\0A\00", align 1 -@str.174 = private unnamed_addr constant [9 x i8] c"AE5: {}\0A\00", align 1 -@str.175 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.176 = private unnamed_addr constant [9 x i8] c"AE5: {}\0A\00", align 1 -@str.177 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.153 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.154 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 +@str.155 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.156 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.157 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.158 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.159 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.160 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.161 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.162 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.163 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.164 = private unnamed_addr constant [27 x i8] c"=== Auto Type Erasure ===\0A\00", align 1 +@str.165 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.166 = private unnamed_addr constant [27 x i8] c"=== Auto Type Erasure ===\0A\00", align 1 +@str.167 = private unnamed_addr constant [9 x i8] c"AE1: {}\0A\00", align 1 +@str.168 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.169 = private unnamed_addr constant [9 x i8] c"AE1: {}\0A\00", align 1 +@str.170 = private unnamed_addr constant [9 x i8] c"AE2: {}\0A\00", align 1 +@str.171 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.172 = private unnamed_addr constant [9 x i8] c"AE2: {}\0A\00", align 1 +@str.173 = private unnamed_addr constant [9 x i8] c"AE3: {}\0A\00", align 1 +@str.174 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.175 = private unnamed_addr constant [9 x i8] c"AE3: {}\0A\00", align 1 +@str.176 = private unnamed_addr constant [9 x i8] c"AE4: {}\0A\00", align 1 +@str.177 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.178 = private unnamed_addr constant [9 x i8] c"AE4: {}\0A\00", align 1 +@str.179 = private unnamed_addr constant [9 x i8] c"AE5: {}\0A\00", align 1 +@str.180 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.181 = private unnamed_addr constant [9 x i8] c"AE5: {}\0A\00", align 1 +@str.182 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.183 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.181 = private constant [5 x i8] c"line\00" -@fld.str.182 = private constant [4 x i8] c"col\00" -@fld.str.183 = 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.181, i64 4 }, { ptr, i64 } { ptr @fld.str.182, i64 3 }, { ptr, i64 } { ptr @fld.str.183, i64 4 }] -@str.184 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.185 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.187 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.188 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.189 = private constant [4 x i8] c"ctx\00" -@fld.str.190 = private constant [6 x i8] c"alloc\00" -@fld.str.191 = private constant [8 x i8] c"dealloc\00" -@field_names.192 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.189, i64 3 }, { ptr, i64 } { ptr @fld.str.190, i64 5 }, { ptr, i64 } { ptr @fld.str.191, i64 7 }] -@str.193 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.194 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.195 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.196 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.197 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.198 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.199 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.200 = private unnamed_addr constant [4 x i8] c"GPA\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 [12 x i8] c"alloc_count\00" -@field_names.205 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.204, i64 11 }] -@str.206 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.207 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.208 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.209 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.210 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.211 = private constant [5 x i8] c"next\00" -@fld.str.212 = private constant [4 x i8] c"cap\00" -@field_names.213 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.211, i64 4 }, { ptr, i64 } { ptr @fld.str.212, i64 3 }] -@str.214 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.215 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.216 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.217 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.218 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.219 = private constant [6 x i8] c"first\00" -@fld.str.220 = private constant [10 x i8] c"end_index\00" -@fld.str.221 = private constant [7 x i8] c"parent\00" -@field_names.222 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.219, i64 5 }, { ptr, i64 } { ptr @fld.str.220, i64 9 }, { ptr, i64 } { ptr @fld.str.221, i64 6 }] -@str.223 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.224 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.225 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.226 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.227 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.228 = private constant [4 x i8] c"buf\00" -@fld.str.229 = private constant [4 x i8] c"len\00" -@fld.str.230 = private constant [4 x i8] c"pos\00" -@field_names.231 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.228, i64 3 }, { ptr, i64 } { ptr @fld.str.229, i64 3 }, { ptr, i64 } { ptr @fld.str.230, i64 3 }] -@str.232 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.233 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.234 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.235 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.236 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.237 = private constant [7 x i8] c"parent\00" -@fld.str.238 = private constant [12 x i8] c"alloc_count\00" -@fld.str.239 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.240 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.241 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.237, i64 6 }, { ptr, i64 } { ptr @fld.str.238, i64 11 }, { ptr, i64 } { ptr @fld.str.239, i64 13 }, { ptr, i64 } { ptr @fld.str.240, i64 17 }] -@str.242 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.243 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.244 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.245 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.246 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.247 = private constant [10 x i8] c"allocator\00" -@fld.str.248 = private constant [5 x i8] c"data\00" -@field_names.249 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.247, i64 9 }, { ptr, i64 } { ptr @fld.str.248, i64 4 }] -@str.250 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.251 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 -@str.252 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.253 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.254 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.255 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.256 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.257 = private unnamed_addr constant [6 x i8] c"Point\00", align 1 -@str.258 = private unnamed_addr constant [2 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 [3 x i8] c", \00", align 1 -@fld.str.261 = private constant [2 x i8] c"x\00" -@fld.str.262 = private constant [2 x i8] c"y\00" -@field_names.263 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.261, i64 1 }, { ptr, i64 } { ptr @fld.str.262, i64 1 }] -@str.264 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.265 = private unnamed_addr constant [8 x i8] c"Counter\00", align 1 -@str.266 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.267 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.268 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.269 = private constant [4 x i8] c"ctx\00" -@fld.str.270 = private constant [9 x i8] c"__vtable\00" -@field_names.271 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.269, i64 3 }, { ptr, i64 } { ptr @fld.str.270, i64 8 }] -@str.272 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.273 = private unnamed_addr constant [18 x i8] c"__Counter__Vtable\00", align 1 -@str.274 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.275 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.276 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.277 = private constant [4 x i8] c"inc\00" -@fld.str.278 = private constant [4 x i8] c"get\00" -@field_names.279 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.277, i64 3 }, { ptr, i64 } { ptr @fld.str.278, i64 3 }] -@str.280 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.281 = private unnamed_addr constant [9 x i8] c"Summable\00", align 1 -@str.282 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.283 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.284 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.285 = private constant [4 x i8] c"ctx\00" -@fld.str.286 = private constant [9 x i8] c"__vtable\00" -@field_names.287 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.285, i64 3 }, { ptr, i64 } { ptr @fld.str.286, i64 8 }] -@str.288 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.289 = private unnamed_addr constant [19 x i8] c"__Summable__Vtable\00", align 1 -@str.290 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.291 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.292 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.293 = private constant [4 x i8] c"sum\00" -@field_names.294 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.293, i64 3 }] -@str.295 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.296 = private unnamed_addr constant [14 x i8] c"SimpleCounter\00", align 1 -@str.297 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.298 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.299 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.300 = private constant [4 x i8] c"val\00" -@field_names.301 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.300, i64 3 }] -@str.302 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.303 = private unnamed_addr constant [6 x i8] c"Adder\00", align 1 -@str.304 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.305 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.306 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.307 = private constant [4 x i8] c"ctx\00" -@fld.str.308 = private constant [4 x i8] c"add\00" -@fld.str.309 = private constant [6 x i8] c"value\00" -@field_names.310 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.307, i64 3 }, { ptr, i64 } { ptr @fld.str.308, i64 3 }, { ptr, i64 } { ptr @fld.str.309, i64 5 }] -@str.311 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.312 = private unnamed_addr constant [12 x i8] c"Accumulator\00", align 1 -@str.313 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.314 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.315 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.316 = private constant [6 x i8] c"total\00" -@field_names.317 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.316, i64 5 }] -@str.318 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.319 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.320 = private constant [6 x i8] c"macos\00" -@fld.str.321 = private constant [6 x i8] c"linux\00" -@fld.str.322 = private constant [8 x i8] c"windows\00" -@fld.str.323 = private constant [5 x i8] c"wasm\00" -@fld.str.324 = private constant [4 x i8] c"ios\00" -@fld.str.325 = private constant [8 x i8] c"android\00" -@fld.str.326 = private constant [8 x i8] c"unknown\00" -@field_names.327 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.320, i64 5 }, { ptr, i64 } { ptr @fld.str.321, i64 5 }, { ptr, i64 } { ptr @fld.str.322, i64 7 }, { ptr, i64 } { ptr @fld.str.323, i64 4 }, { ptr, i64 } { ptr @fld.str.324, i64 3 }, { ptr, i64 } { ptr @fld.str.325, i64 7 }, { ptr, i64 } { ptr @fld.str.326, i64 7 }] -@str.328 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.329 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.330 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.331 = private constant [8 x i8] c"aarch64\00" -@fld.str.332 = private constant [7 x i8] c"x86_64\00" -@fld.str.333 = private constant [7 x i8] c"wasm32\00" -@fld.str.334 = private constant [7 x i8] c"wasm64\00" -@fld.str.335 = private constant [8 x i8] c"unknown\00" -@field_names.336 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.331, i64 7 }, { ptr, i64 } { ptr @fld.str.332, i64 6 }, { ptr, i64 } { ptr @fld.str.333, i64 6 }, { ptr, i64 } { ptr @fld.str.334, i64 6 }, { ptr, i64 } { ptr @fld.str.335, i64 7 }] -@str.337 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.338 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.339 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.340 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.341 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.342 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.343 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.344 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.345 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.346 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.347 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.348 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.349 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.350 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.351 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.352 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.353 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.354 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.355 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 -@str.356 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.357 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.358 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 -@str.359 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.360 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.361 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 -@str.362 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.363 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.364 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 -@str.365 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.366 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.367 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 -@str.368 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.369 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.370 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 -@str.371 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.372 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.373 = private unnamed_addr constant [15 x i8] c"*SimpleCounter\00", align 1 -@str.374 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.375 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.376 = private unnamed_addr constant [7 x i8] c"*Point\00", align 1 -@str.377 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.378 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.379 = private unnamed_addr constant [13 x i8] c"*Accumulator\00", align 1 -@str.380 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.381 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.382 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 -@str.383 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.384 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.385 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 -@str.386 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.387 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.388 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 -@str.389 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.390 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.391 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 -@str.392 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.393 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.394 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 -@str.395 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.396 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.397 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 -@str.398 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.399 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.400 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 -@str.401 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.402 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.403 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 -@str.404 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.405 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.406 = private unnamed_addr constant [9 x i8] c"*Counter\00", align 1 -@str.407 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.408 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.409 = private unnamed_addr constant [16 x i8] c"**SimpleCounter\00", align 1 -@str.410 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.411 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.412 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 -@str.413 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.414 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.415 = private unnamed_addr constant [19 x i8] c"*__Counter__Vtable\00", align 1 -@str.416 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.417 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.418 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 -@str.419 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.420 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.421 = private unnamed_addr constant [7 x i8] c"*Adder\00", align 1 -@str.422 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.423 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.424 = private unnamed_addr constant [14 x i8] c"**Accumulator\00", align 1 -@str.425 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@fld.str.186 = private constant [5 x i8] c"line\00" +@fld.str.187 = private constant [4 x i8] c"col\00" +@fld.str.188 = 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.186, i64 4 }, { ptr, i64 } { ptr @fld.str.187, i64 3 }, { ptr, i64 } { ptr @fld.str.188, i64 4 }] +@str.189 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.190 = private unnamed_addr constant [10 x i8] c"Allocator\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 [4 x i8] c"ctx\00" +@fld.str.195 = private constant [6 x i8] c"alloc\00" +@fld.str.196 = private constant [8 x i8] c"dealloc\00" +@field_names.197 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.194, i64 3 }, { ptr, i64 } { ptr @fld.str.195, i64 5 }, { ptr, i64 } { ptr @fld.str.196, i64 7 }] +@str.198 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.199 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.201 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.203 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.204 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.205 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.206 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.207 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.208 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.209 = private constant [12 x i8] c"alloc_count\00" +@field_names.210 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.209, i64 11 }] +@str.211 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.212 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.213 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.214 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.215 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.216 = private constant [5 x i8] c"next\00" +@fld.str.217 = private constant [4 x i8] c"cap\00" +@field_names.218 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.216, i64 4 }, { ptr, i64 } { ptr @fld.str.217, i64 3 }] +@str.219 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.220 = private unnamed_addr constant [6 x i8] c"Arena\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 +@fld.str.224 = private constant [6 x i8] c"first\00" +@fld.str.225 = private constant [10 x i8] c"end_index\00" +@fld.str.226 = private constant [7 x i8] c"parent\00" +@field_names.227 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.224, i64 5 }, { ptr, i64 } { ptr @fld.str.225, i64 9 }, { ptr, i64 } { ptr @fld.str.226, i64 6 }] +@str.228 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.229 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.230 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.231 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.232 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.233 = private constant [4 x i8] c"buf\00" +@fld.str.234 = private constant [4 x i8] c"len\00" +@fld.str.235 = private constant [4 x i8] c"pos\00" +@field_names.236 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.233, i64 3 }, { ptr, i64 } { ptr @fld.str.234, i64 3 }, { ptr, i64 } { ptr @fld.str.235, i64 3 }] +@str.237 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.238 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.239 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.240 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.241 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.242 = private constant [7 x i8] c"parent\00" +@fld.str.243 = private constant [12 x i8] c"alloc_count\00" +@fld.str.244 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.245 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.246 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.242, i64 6 }, { ptr, i64 } { ptr @fld.str.243, i64 11 }, { ptr, i64 } { ptr @fld.str.244, i64 13 }, { ptr, i64 } { ptr @fld.str.245, i64 17 }] +@str.247 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.248 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.249 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.250 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.251 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.252 = private constant [10 x i8] c"allocator\00" +@fld.str.253 = private constant [5 x i8] c"data\00" +@field_names.254 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.252, i64 9 }, { ptr, i64 } { ptr @fld.str.253, i64 4 }] +@str.255 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.256 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 +@str.257 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.258 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.259 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.260 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.261 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.262 = private unnamed_addr constant [6 x i8] c"Point\00", align 1 +@str.263 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.264 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.265 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.266 = private constant [2 x i8] c"x\00" +@fld.str.267 = private constant [2 x i8] c"y\00" +@field_names.268 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.266, i64 1 }, { ptr, i64 } { ptr @fld.str.267, i64 1 }] +@str.269 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.270 = private unnamed_addr constant [8 x i8] c"Counter\00", align 1 +@str.271 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.272 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.273 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.274 = private constant [4 x i8] c"ctx\00" +@fld.str.275 = private constant [9 x i8] c"__vtable\00" +@field_names.276 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.274, i64 3 }, { ptr, i64 } { ptr @fld.str.275, i64 8 }] +@str.277 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.278 = private unnamed_addr constant [18 x i8] c"__Counter__Vtable\00", align 1 +@str.279 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.280 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.281 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.282 = private constant [4 x i8] c"inc\00" +@fld.str.283 = private constant [4 x i8] c"get\00" +@field_names.284 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.282, i64 3 }, { ptr, i64 } { ptr @fld.str.283, i64 3 }] +@str.285 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.286 = private unnamed_addr constant [9 x i8] c"Summable\00", align 1 +@str.287 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.288 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.289 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.290 = private constant [4 x i8] c"ctx\00" +@fld.str.291 = private constant [9 x i8] c"__vtable\00" +@field_names.292 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.290, i64 3 }, { ptr, i64 } { ptr @fld.str.291, i64 8 }] +@str.293 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.294 = private unnamed_addr constant [19 x i8] c"__Summable__Vtable\00", align 1 +@str.295 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.296 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.297 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.298 = private constant [4 x i8] c"sum\00" +@field_names.299 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.298, i64 3 }] +@str.300 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.301 = private unnamed_addr constant [14 x i8] c"SimpleCounter\00", align 1 +@str.302 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.303 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.304 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.305 = private constant [4 x i8] c"val\00" +@field_names.306 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.305, i64 3 }] +@str.307 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.308 = private unnamed_addr constant [6 x i8] c"Adder\00", align 1 +@str.309 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.310 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.311 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.312 = private constant [4 x i8] c"ctx\00" +@fld.str.313 = private constant [4 x i8] c"add\00" +@fld.str.314 = private constant [6 x i8] c"value\00" +@field_names.315 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.312, i64 3 }, { ptr, i64 } { ptr @fld.str.313, i64 3 }, { ptr, i64 } { ptr @fld.str.314, i64 5 }] +@str.316 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.317 = private unnamed_addr constant [12 x i8] c"Accumulator\00", align 1 +@str.318 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.319 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.320 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.321 = private constant [6 x i8] c"total\00" +@field_names.322 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.321, i64 5 }] +@str.323 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.324 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.325 = private constant [6 x i8] c"macos\00" +@fld.str.326 = private constant [6 x i8] c"linux\00" +@fld.str.327 = private constant [8 x i8] c"windows\00" +@fld.str.328 = private constant [5 x i8] c"wasm\00" +@fld.str.329 = private constant [4 x i8] c"ios\00" +@fld.str.330 = private constant [8 x i8] c"android\00" +@fld.str.331 = private constant [8 x i8] c"unknown\00" +@field_names.332 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.325, i64 5 }, { ptr, i64 } { ptr @fld.str.326, i64 5 }, { ptr, i64 } { ptr @fld.str.327, i64 7 }, { ptr, i64 } { ptr @fld.str.328, i64 4 }, { ptr, i64 } { ptr @fld.str.329, i64 3 }, { ptr, i64 } { ptr @fld.str.330, i64 7 }, { ptr, i64 } { ptr @fld.str.331, i64 7 }] +@str.333 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.334 = private unnamed_addr constant [2 x i8] c")\00", align 1 +@str.335 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.336 = private constant [8 x i8] c"aarch64\00" +@fld.str.337 = private constant [7 x i8] c"x86_64\00" +@fld.str.338 = private constant [7 x i8] c"wasm32\00" +@fld.str.339 = private constant [7 x i8] c"wasm64\00" +@fld.str.340 = private constant [8 x i8] c"unknown\00" +@field_names.341 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.336, i64 7 }, { ptr, i64 } { ptr @fld.str.337, i64 6 }, { ptr, i64 } { ptr @fld.str.338, i64 6 }, { ptr, i64 } { ptr @fld.str.339, i64 6 }, { ptr, i64 } { ptr @fld.str.340, i64 7 }] +@str.342 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.343 = private unnamed_addr constant [2 x i8] c")\00", align 1 +@str.344 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.345 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.346 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.347 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.348 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.349 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.350 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.351 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.352 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.353 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.354 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.355 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.356 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.357 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 +@str.358 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.359 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.360 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 +@str.361 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.362 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.363 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.364 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.365 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.366 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.367 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.368 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.369 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.370 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.371 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.372 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.373 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.374 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.375 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.376 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.377 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.378 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.379 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.380 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.381 = private unnamed_addr constant [15 x i8] c"*SimpleCounter\00", align 1 +@str.382 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.383 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.384 = private unnamed_addr constant [7 x i8] c"*Point\00", align 1 +@str.385 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.386 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.387 = private unnamed_addr constant [13 x i8] c"*Accumulator\00", align 1 +@str.388 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.389 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.390 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.391 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.392 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.393 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.394 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.395 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.396 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.397 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.398 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.399 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.400 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.401 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.402 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.403 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.404 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.405 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.406 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.407 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.408 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.409 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.410 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.411 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.412 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.413 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.414 = private unnamed_addr constant [9 x i8] c"*Counter\00", align 1 +@str.415 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.416 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.417 = private unnamed_addr constant [16 x i8] c"**SimpleCounter\00", align 1 +@str.418 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.419 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.420 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.421 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.422 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.423 = private unnamed_addr constant [19 x i8] c"*__Counter__Vtable\00", align 1 +@str.424 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.425 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.426 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.427 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.428 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.429 = private unnamed_addr constant [7 x i8] c"*Adder\00", align 1 +@str.430 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.431 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.432 = private unnamed_addr constant [14 x i8] c"**Accumulator\00", align 1 +@str.433 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -538,38 +545,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -582,50 +594,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.37, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.35, i64 4 }, %if.then.54 ], [ { ptr @str.36, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.38, i64 4 }, %if.then.78 ], [ { ptr @str.39, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -639,19 +779,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -668,15 +808,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -694,16 +834,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -720,17 +860,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -793,39 +933,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.251 + br label %while.hdr.273 -while.hdr.251: ; preds = %if.merge.256, %entry +while.hdr.273: ; preds = %if.merge.278, %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.252, label %while.exit.253 + br i1 %icmp, label %while.body.274, label %while.exit.275 -while.body.252: ; preds = %while.hdr.251 +while.body.274: ; preds = %while.hdr.273 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.254, label %if.else.255 + br i1 %icmpN, label %if.then.276, label %if.else.277 -while.exit.253: ; preds = %while.hdr.251 +while.exit.275: ; preds = %while.hdr.273 ret void -if.then.254: ; preds = %while.body.252 +if.then.276: ; preds = %while.body.274 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.256 + br label %if.merge.278 -if.else.255: ; preds = %while.body.252 +if.else.277: ; preds = %while.body.274 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.256 + br label %if.merge.278 -if.merge.256: ; preds = %if.else.255, %if.then.254 - %bp = phi i64 [ %addN, %if.then.254 ], [ %addN, %if.else.255 ] +if.merge.278: ; preds = %if.else.277, %if.then.276 + %bp = phi i64 [ %addN, %if.then.276 ], [ %addN, %if.else.277 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -838,37 +978,29 @@ if.merge.256: ; preds = %if.else.255, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.251 + br label %while.hdr.273 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.241, label %if.merge.242 - -if.then.241: ; preds = %entry - ret { ptr, i64 } { ptr @str.37, i64 1 } - -if.merge.242: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.243, label %if.merge.244 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.243: ; preds = %if.merge.242 +if.then.58: ; 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.244 + br label %if.merge.59 -if.merge.244: ; preds = %if.then.243, %if.merge.242 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -881,15 +1013,15 @@ if.merge.244: ; preds = %if.then.243, %if.me 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.245, label %if.merge.246 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.245: ; preds = %if.merge.244 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.246 + br label %if.merge.61 -if.merge.246: ; preds = %if.then.245, %if.merge.244 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -902,15 +1034,15 @@ if.merge.246: ; preds = %if.then.245, %if.me 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.247, label %if.merge.248 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.247: ; preds = %if.merge.246 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.248 + br label %if.merge.63 -if.merge.248: ; preds = %if.then.247, %if.merge.246 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -923,65 +1055,116 @@ if.merge.248: ; preds = %if.then.247, %if.me 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.249, label %if.merge.250 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.249: ; preds = %if.merge.248 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.250 + br label %if.merge.65 -if.merge.250: ; preds = %if.then.249, %if.merge.248 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.271, label %if.merge.272 + +if.then.271: ; preds = %entry + ret { ptr, i64 } { ptr @str.40, i64 1 } + +if.merge.272: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.257 + br label %while.hdr.279 -while.hdr.257: ; preds = %if.merge.261, %if.merge.250 +while.hdr.279: ; preds = %if.merge.283, %if.merge.272 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.258, label %while.exit.259 + br i1 %icmpN, label %while.body.280, label %while.exit.281 -while.body.258: ; preds = %while.hdr.257 +while.body.280: ; preds = %while.hdr.279 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.260, label %if.merge.261 + br i1 %icmpN, label %if.then.282, label %if.merge.283 -while.exit.259: ; preds = %if.then.260, %while.hdr.257 +while.exit.281: ; preds = %if.then.282, %while.hdr.279 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.260: ; preds = %while.body.258 - br label %while.exit.259 +if.then.282: ; preds = %while.body.280 + br label %while.exit.281 -if.merge.261: ; preds = %while.body.258 +if.merge.283: ; preds = %while.body.280 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.257 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.279 } ; Function Attrs: nounwind @@ -1060,7 +1243,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.38, i64 3 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.41, 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 @@ -1068,650 +1251,677 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 39, label %match.arm.43 + i64 41, label %match.arm.43 + i64 42, label %match.arm.43 + i64 43, label %match.arm.43 + i64 44, label %match.arm.43 + i64 45, label %match.arm.43 + i64 46, label %match.arm.43 + i64 49, label %match.arm.43 + i64 50, label %match.arm.43 + i64 37, label %match.arm.44 i64 38, label %match.arm.44 - i64 40, label %match.arm.44 - i64 41, label %match.arm.44 - i64 42, label %match.arm.44 - i64 43, label %match.arm.44 - i64 44, label %match.arm.44 - i64 45, label %match.arm.44 - i64 48, label %match.arm.44 - i64 49, label %match.arm.44 - i64 36, label %match.arm.45 - i64 37, label %match.arm.45 - i64 64, label %match.arm.48 - i64 35, label %match.arm.49 + i64 35, label %match.arm.47 + i64 65, label %match.arm.47 + i64 36, label %match.arm.48 + i64 56, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 51, label %match.arm.49 + i64 52, label %match.arm.49 + i64 53, label %match.arm.49 + i64 54, label %match.arm.49 i64 55, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 50, label %match.arm.50 - i64 51, label %match.arm.50 - i64 52, label %match.arm.50 - i64 53, label %match.arm.50 - i64 54, label %match.arm.50 - i64 56, label %match.arm.50 - i64 57, label %match.arm.50 - i64 58, label %match.arm.50 - i64 59, label %match.arm.50 - i64 60, label %match.arm.50 - i64 61, label %match.arm.50 - i64 62, label %match.arm.50 - i64 63, label %match.arm.50 - i64 65, label %match.arm.50 - i64 66, label %match.arm.50 - i64 67, label %match.arm.50 - i64 13, label %match.arm.52 + i64 57, label %match.arm.49 + i64 58, label %match.arm.49 + i64 59, label %match.arm.49 + i64 60, label %match.arm.49 + i64 61, label %match.arm.49 + i64 62, label %match.arm.49 + i64 63, label %match.arm.49 + i64 64, label %match.arm.49 + i64 66, label %match.arm.49 + i64 67, label %match.arm.49 + i64 68, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.210, %dispatch.merge.196, %dispatch.merge.188, %dispatch.merge.180, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.240, %dispatch.merge.226, %dispatch.merge.212, %dispatch.merge.204, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.39, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.42, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [102 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %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.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 38, label %dispatch.case.81 - i64 40, label %dispatch.case.82 - i64 41, label %dispatch.case.83 - i64 42, label %dispatch.case.84 - i64 43, label %dispatch.case.85 - i64 44, label %dispatch.case.86 - i64 45, label %dispatch.case.87 - i64 48, label %dispatch.case.88 - i64 49, label %dispatch.case.89 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 39, label %dispatch.case.105 + i64 41, label %dispatch.case.106 + i64 42, label %dispatch.case.107 + i64 43, label %dispatch.case.108 + i64 44, label %dispatch.case.109 + i64 45, label %dispatch.case.110 + i64 46, label %dispatch.case.111 + i64 49, label %dispatch.case.112 + i64 50, label %dispatch.case.113 ] -match.arm.45: ; preds = %entry, %entry +match.arm.44: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.181 [ - i64 36, label %dispatch.case.182 - i64 37, label %dispatch.case.183 + switch i64 %ua.raw20, label %dispatch.default.205 [ + i64 37, label %dispatch.case.206 + i64 38, label %dispatch.case.207 ] +match.arm.45: ; No predecessors! + unreachable + match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.213 [ + i64 35, label %dispatch.case.214 + i64 65, label %dispatch.case.215 + ] + +match.arm.48: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.227 [ + i64 36, label %dispatch.case.228 + i64 56, label %dispatch.case.229 + ] + +match.arm.49: ; preds = %entry, %entry, %entry, %entry, %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw32, label %dispatch.default.241 [ + i64 18, label %dispatch.case.242 + i64 22, label %dispatch.case.243 + i64 24, label %dispatch.case.244 + i64 26, label %dispatch.case.245 + i64 28, label %dispatch.case.246 + i64 29, label %dispatch.case.247 + i64 31, label %dispatch.case.248 + i64 33, label %dispatch.case.249 + i64 47, label %dispatch.case.250 + i64 48, label %dispatch.case.251 + i64 51, label %dispatch.case.252 + i64 52, label %dispatch.case.253 + i64 53, label %dispatch.case.254 + i64 54, label %dispatch.case.255 + i64 55, label %dispatch.case.256 + i64 57, label %dispatch.case.257 + i64 58, label %dispatch.case.258 + i64 59, label %dispatch.case.259 + i64 60, label %dispatch.case.260 + i64 61, label %dispatch.case.261 + i64 62, label %dispatch.case.262 + i64 63, label %dispatch.case.263 + i64 64, label %dispatch.case.264 + i64 66, label %dispatch.case.265 + i64 67, label %dispatch.case.266 + i64 68, label %dispatch.case.267 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.189 [ - i64 64, label %dispatch.case.190 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.197 [ - i64 35, label %dispatch.case.198 - i64 55, label %dispatch.case.199 - ] - -match.arm.50: ; preds = %entry, %entry, %entry, %entry, %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.raw34 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.211 [ - i64 18, label %dispatch.case.212 - i64 22, label %dispatch.case.213 - i64 24, label %dispatch.case.214 - i64 26, label %dispatch.case.215 - i64 28, label %dispatch.case.216 - i64 29, label %dispatch.case.217 - i64 31, label %dispatch.case.218 - i64 33, label %dispatch.case.219 - i64 46, label %dispatch.case.220 - i64 47, label %dispatch.case.221 - i64 50, label %dispatch.case.222 - i64 51, label %dispatch.case.223 - i64 52, label %dispatch.case.224 - i64 53, label %dispatch.case.225 - i64 54, label %dispatch.case.226 - i64 56, label %dispatch.case.227 - i64 57, label %dispatch.case.228 - i64 58, label %dispatch.case.229 - i64 59, label %dispatch.case.230 - i64 60, label %dispatch.case.231 - i64 61, label %dispatch.case.232 - i64 62, label %dispatch.case.233 - i64 63, label %dispatch.case.234 - i64 65, label %dispatch.case.235 - i64 66, label %dispatch.case.236 - i64 67, label %dispatch.case.237 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [100 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [102 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.89, %dispatch.case.88, %dispatch.case.87, %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %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.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.139, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.144, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load {}, ptr %ua.ptr80, align 1 - %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { i32, i32 }, ptr %ua.ptr84, align 4 - %callN = call { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %ua.load85) + %ua.load85 = load {}, ptr %ua.ptr84, align 1 + %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { ptr, ptr }, ptr %ua.ptr88, align 8 - %callN = call { ptr, i64 } @struct_to_string__Counter(ptr %0, { ptr, ptr } %ua.load89) + %ua.load89 = load { i32, i32 }, ptr %ua.ptr88, align 4 + %callN = call { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.84: ; preds = %match.arm.44 +dispatch.case.107: ; preds = %match.arm.43 %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr %ua.load93 = load { ptr, ptr }, ptr %ua.ptr92, align 8 - %callN = call { ptr, i64 } @struct_to_string____Counter__Vtable(ptr %0, { ptr, ptr } %ua.load93) + %callN = call { ptr, i64 } @struct_to_string__Counter(ptr %0, { ptr, ptr } %ua.load93) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.85: ; preds = %match.arm.44 +dispatch.case.108: ; preds = %match.arm.43 %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr96 = inttoptr i64 %ua.raw95 to ptr %ua.load97 = load { ptr, ptr }, ptr %ua.ptr96, align 8 - %callN = call { ptr, i64 } @struct_to_string__Summable(ptr %0, { ptr, ptr } %ua.load97) + %callN = call { ptr, i64 } @struct_to_string____Counter__Vtable(ptr %0, { ptr, ptr } %ua.load97) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.86: ; preds = %match.arm.44 +dispatch.case.109: ; preds = %match.arm.43 %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr100 = inttoptr i64 %ua.raw99 to ptr - %ua.load101 = load { ptr }, ptr %ua.ptr100, align 8 - %callN = call { ptr, i64 } @struct_to_string____Summable__Vtable(ptr %0, { ptr } %ua.load101) + %ua.load101 = load { ptr, ptr }, ptr %ua.ptr100, align 8 + %callN = call { ptr, i64 } @struct_to_string__Summable(ptr %0, { ptr, ptr } %ua.load101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.87: ; preds = %match.arm.44 +dispatch.case.110: ; preds = %match.arm.43 %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr104 = inttoptr i64 %ua.raw103 to ptr - %ua.load105 = load { i32 }, ptr %ua.ptr104, align 4 - %callN = call { ptr, i64 } @struct_to_string__SimpleCounter(ptr %0, { i32 } %ua.load105) + %ua.load105 = load { ptr }, ptr %ua.ptr104, align 8 + %callN = call { ptr, i64 } @struct_to_string____Summable__Vtable(ptr %0, { ptr } %ua.load105) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.88: ; preds = %match.arm.44 +dispatch.case.111: ; preds = %match.arm.43 %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr108 = inttoptr i64 %ua.raw107 to ptr - %ua.load109 = load { ptr, ptr, ptr }, ptr %ua.ptr108, align 8 - %callN = call { ptr, i64 } @struct_to_string__Adder(ptr %0, { ptr, ptr, ptr } %ua.load109) + %ua.load109 = load { i32 }, ptr %ua.ptr108, align 4 + %callN = call { ptr, i64 } @struct_to_string__SimpleCounter(ptr %0, { i32 } %ua.load109) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.89: ; preds = %match.arm.44 +dispatch.case.112: ; preds = %match.arm.43 %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr112 = inttoptr i64 %ua.raw111 to ptr - %ua.load113 = load { i32 }, ptr %ua.ptr112, align 4 - %callN = call { ptr, i64 } @struct_to_string__Accumulator(ptr %0, { i32 } %ua.load113) + %ua.load113 = load { ptr, ptr, ptr }, ptr %ua.ptr112, align 8 + %callN = call { ptr, i64 } @struct_to_string__Adder(ptr %0, { ptr, ptr, ptr } %ua.load113) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.180: ; preds = %dispatch.case.183, %dispatch.case.182, %dispatch.default.181 +dispatch.case.113: ; preds = %match.arm.43 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr116 = inttoptr i64 %ua.raw115 to ptr + %ua.load117 = load { i32 }, ptr %ua.ptr116, align 4 + %callN = call { ptr, i64 } @struct_to_string__Accumulator(ptr %0, { i32 } %ua.load117) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.204: ; preds = %dispatch.case.207, %dispatch.case.206, %dispatch.default.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.181: ; preds = %match.arm.45 - store { ptr, i64 } { ptr @str.140, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.180 +dispatch.default.205: ; preds = %match.arm.44 + store { ptr, i64 } { ptr @str.145, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.204 -dispatch.case.182: ; preds = %match.arm.45 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw116) +dispatch.case.206: ; preds = %match.arm.44 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.204 -dispatch.case.183: ; preds = %match.arm.45 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw118) +dispatch.case.207: ; preds = %match.arm.44 + %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw122) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.204 -dispatch.merge.188: ; preds = %dispatch.case.190, %dispatch.default.189 +dispatch.merge.212: ; preds = %dispatch.case.215, %dispatch.case.214, %dispatch.default.213 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.189: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.141, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.188 +dispatch.default.213: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.146, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.212 -dispatch.case.190: ; preds = %match.arm.48 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr122 = inttoptr i64 %ua.raw121 to ptr - %ua.load123 = load [1 x { i64, i64 }], ptr %ua.ptr122, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load123) +dispatch.case.214: ; preds = %match.arm.47 + %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr126 = inttoptr i64 %ua.raw125 to ptr + %ua.load127 = load [4 x i64], ptr %ua.ptr126, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.188 + br label %dispatch.merge.212 -dispatch.merge.196: ; preds = %dispatch.case.199, %dispatch.case.198, %dispatch.default.197 +dispatch.case.215: ; preds = %match.arm.47 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr130 = inttoptr i64 %ua.raw129 to ptr + %ua.load131 = load [1 x { i64, i64 }], ptr %ua.ptr130, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load131) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.212 + +dispatch.merge.226: ; preds = %dispatch.case.229, %dispatch.case.228, %dispatch.default.227 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.197: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.142, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.196 +dispatch.default.227: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.147, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.226 -dispatch.case.198: ; preds = %match.arm.49 - %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__string(ptr %0, { ptr, i64 } %ua.load128) +dispatch.case.228: ; preds = %match.arm.48 + %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr135 = inttoptr i64 %ua.raw134 to ptr + %ua.load136 = load { ptr, i64 }, ptr %ua.ptr135, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.case.199: ; preds = %match.arm.49 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr131 = inttoptr i64 %ua.raw130 to ptr - %ua.load132 = load { ptr, i64 }, ptr %ua.ptr131, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load132) +dispatch.case.229: ; preds = %match.arm.48 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr139 = inttoptr i64 %ua.raw138 to ptr + %ua.load140 = load { ptr, i64 }, ptr %ua.ptr139, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.196 + br label %dispatch.merge.226 -dispatch.merge.210: ; preds = %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.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.default.211 +dispatch.merge.240: ; preds = %dispatch.case.267, %dispatch.case.266, %dispatch.case.265, %dispatch.case.264, %dispatch.case.263, %dispatch.case.262, %dispatch.case.261, %dispatch.case.260, %dispatch.case.259, %dispatch.case.258, %dispatch.case.257, %dispatch.case.256, %dispatch.case.255, %dispatch.case.254, %dispatch.case.253, %dispatch.case.252, %dispatch.case.251, %dispatch.case.250, %dispatch.case.249, %dispatch.case.248, %dispatch.case.247, %dispatch.case.246, %dispatch.case.245, %dispatch.case.244, %dispatch.case.243, %dispatch.case.242, %dispatch.default.241 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.211: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.143, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.210 +dispatch.default.241: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.148, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.240 -dispatch.case.212: ; preds = %match.arm.50 - %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw135 to ptr +dispatch.case.242: ; preds = %match.arm.49 + %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw143 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.210 + br label %dispatch.merge.240 -dispatch.case.213: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp138) +dispatch.case.243: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.214: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp141) +dispatch.case.244: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.215: ; preds = %match.arm.50 - %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 - %iNp144 = inttoptr i64 %ua.raw143 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp144) +dispatch.case.245: ; preds = %match.arm.49 + %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 + %iNp152 = inttoptr i64 %ua.raw151 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp152) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.216: ; preds = %match.arm.50 - %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 - %iNp147 = inttoptr i64 %ua.raw146 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp147) +dispatch.case.246: ; preds = %match.arm.49 + %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 + %iNp155 = inttoptr i64 %ua.raw154 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp155) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.217: ; preds = %match.arm.50 - %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 - %iNp150 = inttoptr i64 %ua.raw149 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp150) +dispatch.case.247: ; preds = %match.arm.49 + %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 + %iNp158 = inttoptr i64 %ua.raw157 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp158) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.218: ; preds = %match.arm.50 - %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 - %iNp153 = inttoptr i64 %ua.raw152 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp153) +dispatch.case.248: ; preds = %match.arm.49 + %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 + %iNp161 = inttoptr i64 %ua.raw160 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp161) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.219: ; preds = %match.arm.50 - %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 - %iNp156 = inttoptr i64 %ua.raw155 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp156) +dispatch.case.249: ; preds = %match.arm.49 + %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 + %iNp164 = inttoptr i64 %ua.raw163 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp164) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.220: ; preds = %match.arm.50 - %ua.raw158 = extractvalue { i64, i64 } %loadN, 1 - %iNp159 = inttoptr i64 %ua.raw158 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SimpleCounter(ptr %0, ptr %iNp159) +dispatch.case.250: ; preds = %match.arm.49 + %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 + %iNp167 = inttoptr i64 %ua.raw166 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SimpleCounter(ptr %0, ptr %iNp167) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.221: ; preds = %match.arm.50 - %ua.raw161 = extractvalue { i64, i64 } %loadN, 1 - %iNp162 = inttoptr i64 %ua.raw161 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Point(ptr %0, ptr %iNp162) +dispatch.case.251: ; preds = %match.arm.49 + %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 + %iNp170 = inttoptr i64 %ua.raw169 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Point(ptr %0, ptr %iNp170) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.222: ; preds = %match.arm.50 - %ua.raw164 = extractvalue { i64, i64 } %loadN, 1 - %iNp165 = inttoptr i64 %ua.raw164 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Accumulator(ptr %0, ptr %iNp165) +dispatch.case.252: ; preds = %match.arm.49 + %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 + %iNp173 = inttoptr i64 %ua.raw172 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Accumulator(ptr %0, ptr %iNp173) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.223: ; preds = %match.arm.50 - %ua.raw167 = extractvalue { i64, i64 } %loadN, 1 - %iNp168 = inttoptr i64 %ua.raw167 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp168) +dispatch.case.253: ; preds = %match.arm.49 + %ua.raw175 = extractvalue { i64, i64 } %loadN, 1 + %iNp176 = inttoptr i64 %ua.raw175 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp176) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.224: ; preds = %match.arm.50 - %ua.raw170 = extractvalue { i64, i64 } %loadN, 1 - %iNp171 = inttoptr i64 %ua.raw170 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp171) +dispatch.case.254: ; preds = %match.arm.49 + %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 + %iNp179 = inttoptr i64 %ua.raw178 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp179) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.225: ; preds = %match.arm.50 - %ua.raw173 = extractvalue { i64, i64 } %loadN, 1 - %iNp174 = inttoptr i64 %ua.raw173 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp174) +dispatch.case.255: ; preds = %match.arm.49 + %ua.raw181 = extractvalue { i64, i64 } %loadN, 1 + %iNp182 = inttoptr i64 %ua.raw181 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp182) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.226: ; preds = %match.arm.50 - %ua.raw176 = extractvalue { i64, i64 } %loadN, 1 - %iNp177 = inttoptr i64 %ua.raw176 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp177) +dispatch.case.256: ; preds = %match.arm.49 + %ua.raw184 = extractvalue { i64, i64 } %loadN, 1 + %iNp185 = inttoptr i64 %ua.raw184 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp185) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.227: ; preds = %match.arm.50 - %ua.raw179 = extractvalue { i64, i64 } %loadN, 1 - %iNp180 = inttoptr i64 %ua.raw179 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp180) +dispatch.case.257: ; preds = %match.arm.49 + %ua.raw187 = extractvalue { i64, i64 } %loadN, 1 + %iNp188 = inttoptr i64 %ua.raw187 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp188) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.228: ; preds = %match.arm.50 - %ua.raw182 = extractvalue { i64, i64 } %loadN, 1 - %iNp183 = inttoptr i64 %ua.raw182 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp183) +dispatch.case.258: ; preds = %match.arm.49 + %ua.raw190 = extractvalue { i64, i64 } %loadN, 1 + %iNp191 = inttoptr i64 %ua.raw190 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp191) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.229: ; preds = %match.arm.50 - %ua.raw185 = extractvalue { i64, i64 } %loadN, 1 - %iNp186 = inttoptr i64 %ua.raw185 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp186) +dispatch.case.259: ; preds = %match.arm.49 + %ua.raw193 = extractvalue { i64, i64 } %loadN, 1 + %iNp194 = inttoptr i64 %ua.raw193 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp194) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.230: ; preds = %match.arm.50 - %ua.raw188 = extractvalue { i64, i64 } %loadN, 1 - %iNp189 = inttoptr i64 %ua.raw188 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp189) +dispatch.case.260: ; preds = %match.arm.49 + %ua.raw196 = extractvalue { i64, i64 } %loadN, 1 + %iNp197 = inttoptr i64 %ua.raw196 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp197) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.231: ; preds = %match.arm.50 - %ua.raw191 = extractvalue { i64, i64 } %loadN, 1 - %iNp192 = inttoptr i64 %ua.raw191 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Counter(ptr %0, ptr %iNp192) +dispatch.case.261: ; preds = %match.arm.49 + %ua.raw199 = extractvalue { i64, i64 } %loadN, 1 + %iNp200 = inttoptr i64 %ua.raw199 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Counter(ptr %0, ptr %iNp200) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.232: ; preds = %match.arm.50 - %ua.raw194 = extractvalue { i64, i64 } %loadN, 1 - %iNp195 = inttoptr i64 %ua.raw194 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_SimpleCounter(ptr %0, ptr %iNp195) +dispatch.case.262: ; preds = %match.arm.49 + %ua.raw202 = extractvalue { i64, i64 } %loadN, 1 + %iNp203 = inttoptr i64 %ua.raw202 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_SimpleCounter(ptr %0, ptr %iNp203) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.233: ; preds = %match.arm.50 - %ua.raw197 = extractvalue { i64, i64 } %loadN, 1 - %iNp198 = inttoptr i64 %ua.raw197 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp198) +dispatch.case.263: ; preds = %match.arm.49 + %ua.raw205 = extractvalue { i64, i64 } %loadN, 1 + %iNp206 = inttoptr i64 %ua.raw205 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp206) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.234: ; preds = %match.arm.50 - %ua.raw200 = extractvalue { i64, i64 } %loadN, 1 - %iNp201 = inttoptr i64 %ua.raw200 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr___Counter__Vtable(ptr %0, ptr %iNp201) +dispatch.case.264: ; preds = %match.arm.49 + %ua.raw208 = extractvalue { i64, i64 } %loadN, 1 + %iNp209 = inttoptr i64 %ua.raw208 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr___Counter__Vtable(ptr %0, ptr %iNp209) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.235: ; preds = %match.arm.50 - %ua.raw203 = extractvalue { i64, i64 } %loadN, 1 - %iNp204 = inttoptr i64 %ua.raw203 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp204) +dispatch.case.265: ; preds = %match.arm.49 + %ua.raw211 = extractvalue { i64, i64 } %loadN, 1 + %iNp212 = inttoptr i64 %ua.raw211 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp212) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.236: ; preds = %match.arm.50 - %ua.raw206 = extractvalue { i64, i64 } %loadN, 1 - %iNp207 = inttoptr i64 %ua.raw206 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Adder(ptr %0, ptr %iNp207) +dispatch.case.266: ; preds = %match.arm.49 + %ua.raw214 = extractvalue { i64, i64 } %loadN, 1 + %iNp215 = inttoptr i64 %ua.raw214 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Adder(ptr %0, ptr %iNp215) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 -dispatch.case.237: ; preds = %match.arm.50 - %ua.raw209 = extractvalue { i64, i64 } %loadN, 1 - %iNp210 = inttoptr i64 %ua.raw209 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Accumulator(ptr %0, ptr %iNp210) +dispatch.case.267: ; preds = %match.arm.49 + %ua.raw217 = extractvalue { i64, i64 } %loadN, 1 + %iNp218 = inttoptr i64 %ua.raw217 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Accumulator(ptr %0, ptr %iNp218) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.210 + br label %dispatch.merge.240 } ; Function Attrs: nounwind @@ -1720,7 +1930,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.144, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.149, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1751,7 +1961,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1769,9 +1979,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1809,14 +2019,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.145, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, 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 @@ -1824,99 +2034,99 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, 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.147, i64 4 }) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.13 - -if.merge.13: ; preds = %if.then.12, %if.then.9 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, 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.149, 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.11 - -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, 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.151, 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.152, i64 4 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.13 + +if.merge.13: ; preds = %if.then.12, %if.then.9 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, 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.154, 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.11 + +if.then.23: ; preds = %if.else.10 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, 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.156, 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.152, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, 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.26 + br label %if.merge.25 -if.else.25: ; preds = %if.else.10 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 + br label %if.merge.25 -if.merge.26: ; preds = %if.else.25, %if.then.24 +if.merge.25: ; preds = %if.else.24, %if.then.23 br label %if.merge.11 -if.then.27: ; preds = %if.else.4 +if.then.26: ; preds = %if.else.4 %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.30, label %if.else.31 + br i1 %icmpN, label %if.then.29, label %if.else.30 -if.else.28: ; preds = %if.else.4 +if.else.27: ; preds = %if.else.4 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.29 + br label %if.merge.28 -if.merge.29: ; preds = %if.merge.32, %if.else.28 +if.merge.28: ; preds = %if.merge.31, %if.else.27 br label %if.merge.5 -if.then.30: ; preds = %if.then.27 +if.then.29: ; preds = %if.then.26 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1925,20 +2135,20 @@ if.then.30: ; preds = %if.then.27 %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.33, label %if.else.34 + br i1 %icmpN, label %if.then.32, label %if.else.33 -if.else.31: ; preds = %if.then.27 +if.else.30: ; preds = %if.then.26 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.32 + br label %if.merge.31 -if.merge.32: ; preds = %if.merge.35, %if.else.31 - br label %if.merge.29 +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 -if.then.33: ; preds = %if.then.30 +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 36 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, 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 @@ -1946,7 +2156,7 @@ if.then.33: ; preds = %if.then.30 %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.154, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, 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 @@ -1957,27 +2167,27 @@ if.then.33: ; preds = %if.then.30 %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.155, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.160, 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.35 + br label %if.merge.34 -if.else.34: ; preds = %if.then.30 +if.else.33: ; preds = %if.then.29 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 -if.then.36: ; preds = %while.exit.2 +if.then.35: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 36 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, 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 @@ -1985,7 +2195,7 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, 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 @@ -1996,11 +2206,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -2192,34 +2402,40 @@ declare ptr @cstring.22(ptr, i64) #0 declare ptr @int_to_string.23(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @bool_to_string.24(ptr, i1) #0 +declare ptr @uint_to_string.24(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @float_to_string.25(ptr, double) #0 +declare ptr @bool_to_string.25(ptr, i1) #0 ; Function Attrs: nounwind -declare void @hex_group.26(ptr, ptr, i64, i64) #0 +declare ptr @float_to_string.26(ptr, double) #0 ; Function Attrs: nounwind -declare ptr @int_to_hex_string.27(ptr, i64) #0 +declare void @hex_group.27(ptr, ptr, i64, i64) #0 ; Function Attrs: nounwind -declare ptr @concat.28(ptr, ptr, ptr) #0 +declare [4 x i64] @decompose_u16x4.28(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @substr.29(ptr, ptr, i64, i64) #0 +declare ptr @int_to_hex_string.29(ptr, i64) #0 ; Function Attrs: nounwind -declare ptr @xml_escape.30(ptr, ptr) #0 +declare ptr @concat.30(ptr, ptr, ptr) #0 ; Function Attrs: nounwind -declare ptr @path_join.31(ptr, ptr) #0 +declare ptr @substr.31(ptr, ptr, i64, i64) #0 ; Function Attrs: nounwind -declare ptr @any_to_string.32(ptr, [2 x i64]) #0 +declare ptr @xml_escape.32(ptr, ptr) #0 ; Function Attrs: nounwind -declare ptr @build_format.33(ptr, ptr) #0 +declare ptr @path_join.33(ptr, ptr) #0 + +; Function Attrs: nounwind +declare ptr @any_to_string.34(ptr, [2 x i64]) #0 + +; Function Attrs: nounwind +declare ptr @build_format.35(ptr, ptr) #0 ; Function Attrs: nounwind declare ptr @cwd_greet(ptr) #0 @@ -2234,7 +2450,7 @@ declare i32 @add(ptr, i32, i32) #0 declare i32 @mul(ptr, i32, i32) #0 ; Function Attrs: nounwind -declare i32 @add.34(ptr, i32, i32) #0 +declare i32 @add.36(ptr, i32, i32) #0 ; Function Attrs: nounwind define internal void @SimpleCounter.inc(ptr %0, ptr %1) #0 { @@ -2396,14 +2612,14 @@ entry: define internal void @print__ct_sb446f8dda4e4d2e__pack(ptr %0) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.159, i64 26 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.164, i64 26 }, 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.160, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.165, i64 0 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 26) @@ -2419,7 +2635,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.161, i64 26 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.166, i64 26 }) ret { ptr, i64 } %call } @@ -2467,7 +2683,7 @@ entry: define internal void @print__ct_sbdf493528d053170__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.162, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.167, i64 8 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2483,7 +2699,7 @@ entry: %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.163, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.168, 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 5) @@ -2511,7 +2727,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.164, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.169, i64 8 }) ret { ptr, i64 } %call } @@ -2533,7 +2749,7 @@ entry: define internal void @print__ct_s35bfc3f99c7ed027__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.165, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.170, i64 8 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2549,7 +2765,7 @@ entry: %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.166, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.171, 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 5) @@ -2577,7 +2793,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.167, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.172, i64 8 }) ret { ptr, i64 } %call } @@ -2611,7 +2827,7 @@ entry: define internal void @print__ct_s9619ba29713d8564__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.168, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.173, i64 8 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2627,7 +2843,7 @@ entry: %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.169, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.174, 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 5) @@ -2655,7 +2871,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_3(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.170, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.175, i64 8 }) ret { ptr, i64 } %call } @@ -2683,7 +2899,7 @@ entry: define internal void @print__ct_s299c24782c1d67ee__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.171, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.176, i64 8 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2699,7 +2915,7 @@ entry: %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.172, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.177, 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 5) @@ -2727,7 +2943,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_4(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.173, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.178, i64 8 }) ret { ptr, i64 } %call } @@ -2747,7 +2963,7 @@ entry: define internal void @print__ct_sf40ed4735476a9ee__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.174, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.179, i64 8 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2763,7 +2979,7 @@ entry: %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.175, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.180, 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 5) @@ -2791,7 +3007,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_5(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.176, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.181, i64 8 }) ret { ptr, i64 } %call } @@ -2800,35 +3016,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.177, i64 15 }, { ptr, i64 } { ptr @str.178, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 15 }, { ptr, i64 } { ptr @str.183, 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.90 + br label %while.hdr.114 -while.hdr.90: ; preds = %fv.merge, %entry +while.hdr.114: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.91, label %while.exit.92 + br i1 %icmp, label %while.body.115, label %while.exit.116 -while.body.91: ; preds = %while.hdr.90 +while.body.115: ; preds = %while.hdr.114 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.93, label %if.merge.94 + br i1 %icmpN, label %if.then.117, label %if.merge.118 -while.exit.92: ; preds = %while.hdr.90 +while.exit.116: ; preds = %while.hdr.114 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) ret { ptr, i64 } %callN -if.then.93: ; preds = %while.body.91 +if.then.117: ; preds = %while.body.115 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.94 + br label %if.merge.118 -if.merge.94: ; preds = %if.then.93, %while.body.91 +if.merge.118: ; preds = %if.then.117, %while.body.115 %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 @@ -2836,7 +3052,7 @@ if.merge.94: ; preds = %if.then.93, %while. %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.184, i64 2 }) + %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 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -2856,12 +3072,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.90 + br label %while.hdr.114 -fv.default: ; preds = %if.merge.94 +fv.default: ; preds = %if.merge.118 br label %fv.merge -fv.case: ; preds = %if.merge.94 +fv.case: ; preds = %if.merge.118 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2869,19 +3085,19 @@ fv.case: ; preds = %if.merge.94 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.94 +fv.case17: ; preds = %if.merge.118 %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.94 +fv.case20: ; preds = %if.merge.118 %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.94 +fv.case24: ; preds = %if.merge.118 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2895,43 +3111,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.185, i64 9 }, { ptr, i64 } { ptr @str.186, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 9 }, { 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.95 + br label %while.hdr.119 -while.hdr.95: ; preds = %fv.merge, %entry +while.hdr.119: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.96, label %while.exit.97 + br i1 %icmp, label %while.body.120, label %while.exit.121 -while.body.96: ; preds = %while.hdr.95 +while.body.120: ; preds = %while.hdr.119 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.98, label %if.merge.99 + br i1 %icmpN, label %if.then.122, label %if.merge.123 -while.exit.97: ; preds = %while.hdr.95 +while.exit.121: ; preds = %while.hdr.119 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %callN -if.then.98: ; preds = %while.body.96 +if.then.122: ; preds = %while.body.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 2 }) + %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.99 + br label %if.merge.123 -if.merge.99: ; preds = %if.then.98, %while.body.96 +if.merge.123: ; preds = %if.then.122, %while.body.120 %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.192, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.197, 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.193, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, 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 @@ -2950,24 +3166,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.95 + br label %while.hdr.119 -fv.default: ; preds = %if.merge.99 +fv.default: ; preds = %if.merge.123 br label %fv.merge -fv.case: ; preds = %if.merge.99 +fv.case: ; preds = %if.merge.123 %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.99 +fv.case17: ; preds = %if.merge.123 %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.99 +fv.case21: ; preds = %if.merge.123 %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 @@ -2979,43 +3195,43 @@ 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.194, i64 10 }, { ptr, i64 } { ptr @str.195, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 10 }, { ptr, i64 } { ptr @str.200, 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.100 + br label %while.hdr.124 -while.hdr.100: ; preds = %if.merge.104, %entry +while.hdr.124: ; preds = %if.merge.128, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.101, label %while.exit.102 + br i1 %icmp, label %while.body.125, label %while.exit.126 -while.body.101: ; preds = %while.hdr.100 +while.body.125: ; preds = %while.hdr.124 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.103, label %if.merge.104 + br i1 %icmpN, label %if.then.127, label %if.merge.128 -while.exit.102: ; preds = %while.hdr.100 +while.exit.126: ; preds = %while.hdr.124 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) ret { ptr, i64 } %callN -if.then.103: ; preds = %while.body.101 +if.then.127: ; preds = %while.body.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.104 + br label %if.merge.128 -if.merge.104: ; preds = %if.then.103, %while.body.101 +if.merge.128: ; preds = %if.then.127, %while.body.125 %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.198, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.203, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.204, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -3026,7 +3242,7 @@ if.merge.104: ; preds = %if.then.103, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.100 + br label %while.hdr.124 } ; Function Attrs: nounwind @@ -3034,43 +3250,43 @@ 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.200, i64 3 }, { ptr, i64 } { ptr @str.201, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 3 }, { ptr, i64 } { ptr @str.206, 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.105 + br label %while.hdr.129 -while.hdr.105: ; preds = %fv.merge, %entry +while.hdr.129: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.106, label %while.exit.107 + br i1 %icmp, label %while.body.130, label %while.exit.131 -while.body.106: ; preds = %while.hdr.105 +while.body.130: ; preds = %while.hdr.129 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.108, label %if.merge.109 + br i1 %icmpN, label %if.then.132, label %if.merge.133 -while.exit.107: ; preds = %while.hdr.105 +while.exit.131: ; preds = %while.hdr.129 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.207, i64 1 }) ret { ptr, i64 } %callN -if.then.108: ; preds = %while.body.106 +if.then.132: ; preds = %while.body.130 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.109 + br label %if.merge.133 -if.merge.109: ; preds = %if.then.108, %while.body.106 +if.merge.133: ; preds = %if.then.132, %while.body.130 %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.205, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.210, 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.206, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i64 }, ptr %alloca, align 8 @@ -3087,12 +3303,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.105 + br label %while.hdr.129 -fv.default: ; preds = %if.merge.109 +fv.default: ; preds = %if.merge.133 br label %fv.merge -fv.case: ; preds = %if.merge.109 +fv.case: ; preds = %if.merge.133 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -3103,43 +3319,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.207, i64 10 }, { ptr, i64 } { ptr @str.208, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 10 }, { ptr, i64 } { ptr @str.213, 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.110 + br label %while.hdr.134 -while.hdr.110: ; preds = %fv.merge, %entry +while.hdr.134: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.111, label %while.exit.112 + br i1 %icmp, label %while.body.135, label %while.exit.136 -while.body.111: ; preds = %while.hdr.110 +while.body.135: ; preds = %while.hdr.134 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.113, label %if.merge.114 + br i1 %icmpN, label %if.then.137, label %if.merge.138 -while.exit.112: ; preds = %while.hdr.110 +while.exit.136: ; preds = %while.hdr.134 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.214, i64 1 }) ret { ptr, i64 } %callN -if.then.113: ; preds = %while.body.111 +if.then.137: ; preds = %while.body.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.210, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.215, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.114 + br label %if.merge.138 -if.merge.114: ; preds = %if.then.113, %while.body.111 +if.merge.138: ; preds = %if.then.137, %while.body.135 %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.213, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 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.214, i64 2 }) + %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, i64 }, ptr %alloca, align 8 @@ -3157,18 +3373,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.110 + br label %while.hdr.134 -fv.default: ; preds = %if.merge.114 +fv.default: ; preds = %if.merge.138 br label %fv.merge -fv.case: ; preds = %if.merge.114 +fv.case: ; preds = %if.merge.138 %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.114 +fv.case17: ; preds = %if.merge.138 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -3179,43 +3395,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.215, i64 5 }, { ptr, i64 } { ptr @str.216, i64 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.115 + br label %while.hdr.139 -while.hdr.115: ; preds = %fv.merge, %entry +while.hdr.139: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.116, label %while.exit.117 + br i1 %icmp, label %while.body.140, label %while.exit.141 -while.body.116: ; preds = %while.hdr.115 +while.body.140: ; preds = %while.hdr.139 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.118, label %if.merge.119 + br i1 %icmpN, label %if.then.142, label %if.merge.143 -while.exit.117: ; preds = %while.hdr.115 +while.exit.141: ; preds = %while.hdr.139 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.217, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.222, i64 1 }) ret { ptr, i64 } %callN -if.then.118: ; preds = %while.body.116 +if.then.142: ; preds = %while.body.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.218, i64 2 }) + %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.119 + br label %if.merge.143 -if.merge.119: ; preds = %if.then.118, %while.body.116 +if.merge.143: ; preds = %if.then.142, %while.body.140 %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.222, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.227, 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.223, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, 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 @@ -3234,23 +3450,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.115 + br label %while.hdr.139 -fv.default: ; preds = %if.merge.119 +fv.default: ; preds = %if.merge.143 br label %fv.merge -fv.case: ; preds = %if.merge.119 +fv.case: ; preds = %if.merge.143 %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.119 +fv.case17: ; preds = %if.merge.143 %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.119 +fv.case20: ; preds = %if.merge.143 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -3264,43 +3480,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.224, i64 8 }, { ptr, i64 } { ptr @str.225, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 8 }, { ptr, i64 } { ptr @str.230, 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.120 + br label %while.hdr.144 -while.hdr.120: ; preds = %fv.merge, %entry +while.hdr.144: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.121, label %while.exit.122 + br i1 %icmp, label %while.body.145, label %while.exit.146 -while.body.121: ; preds = %while.hdr.120 +while.body.145: ; preds = %while.hdr.144 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.123, label %if.merge.124 + br i1 %icmpN, label %if.then.147, label %if.merge.148 -while.exit.122: ; preds = %while.hdr.120 +while.exit.146: ; preds = %while.hdr.144 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.226, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.231, i64 1 }) ret { ptr, i64 } %callN -if.then.123: ; preds = %while.body.121 +if.then.147: ; preds = %while.body.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.232, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.124 + br label %if.merge.148 -if.merge.124: ; preds = %if.then.123, %while.body.121 +if.merge.148: ; preds = %if.then.147, %while.body.145 %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.231, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.236, 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.232, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.237, 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 @@ -3319,23 +3535,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.120 + br label %while.hdr.144 -fv.default: ; preds = %if.merge.124 +fv.default: ; preds = %if.merge.148 br label %fv.merge -fv.case: ; preds = %if.merge.124 +fv.case: ; preds = %if.merge.148 %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.124 +fv.case17: ; preds = %if.merge.148 %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.124 +fv.case20: ; preds = %if.merge.148 %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 @@ -3346,43 +3562,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.233, i64 17 }, { ptr, i64 } { ptr @str.234, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 17 }, { ptr, i64 } { ptr @str.239, 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.125 + br label %while.hdr.149 -while.hdr.125: ; preds = %fv.merge, %entry +while.hdr.149: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.126, label %while.exit.127 + br i1 %icmp, label %while.body.150, label %while.exit.151 -while.body.126: ; preds = %while.hdr.125 +while.body.150: ; preds = %while.hdr.149 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.128, label %if.merge.129 + br i1 %icmpN, label %if.then.152, label %if.merge.153 -while.exit.127: ; preds = %while.hdr.125 +while.exit.151: ; preds = %while.hdr.149 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.235, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 1 }) ret { ptr, i64 } %callN -if.then.128: ; preds = %while.body.126 +if.then.152: ; preds = %while.body.150 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.241, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.129 + br label %if.merge.153 -if.merge.129: ; preds = %if.then.128, %while.body.126 +if.merge.153: ; preds = %if.then.152, %while.body.150 %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.241, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.246, 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.242, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.247, 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 @@ -3402,12 +3618,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.125 + br label %while.hdr.149 -fv.default: ; preds = %if.merge.129 +fv.default: ; preds = %if.merge.153 br label %fv.merge -fv.case: ; preds = %if.merge.129 +fv.case: ; preds = %if.merge.153 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3415,17 +3631,17 @@ fv.case: ; preds = %if.merge.129 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.129 +fv.case17: ; preds = %if.merge.153 %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.129 +fv.case20: ; preds = %if.merge.153 %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.129 +fv.case23: ; preds = %if.merge.153 %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 @@ -3436,43 +3652,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.243, i64 7 }, { ptr, i64 } { ptr @str.244, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 7 }, { ptr, i64 } { ptr @str.249, 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.130 + br label %while.hdr.154 -while.hdr.130: ; preds = %fv.merge, %entry +while.hdr.154: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.131, label %while.exit.132 + br i1 %icmp, label %while.body.155, label %while.exit.156 -while.body.131: ; preds = %while.hdr.130 +while.body.155: ; preds = %while.hdr.154 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.133, label %if.merge.134 + br i1 %icmpN, label %if.then.157, label %if.merge.158 -while.exit.132: ; preds = %while.hdr.130 +while.exit.156: ; preds = %while.hdr.154 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.245, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.250, i64 1 }) ret { ptr, i64 } %callN -if.then.133: ; preds = %while.body.131 +if.then.157: ; preds = %while.body.155 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.246, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.134 + br label %if.merge.158 -if.merge.134: ; preds = %if.then.133, %while.body.131 +if.merge.158: ; preds = %if.then.157, %while.body.155 %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.249, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.254, 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.250, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.255, 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 @@ -3490,12 +3706,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.130 + br label %while.hdr.154 -fv.default: ; preds = %if.merge.134 +fv.default: ; preds = %if.merge.158 br label %fv.merge -fv.case: ; preds = %if.merge.134 +fv.case: ; preds = %if.merge.158 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3503,7 +3719,7 @@ fv.case: ; preds = %if.merge.134 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.134 +fv.case17: ; preds = %if.merge.158 %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 @@ -3515,43 +3731,43 @@ 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.251, i64 12 }, { ptr, i64 } { ptr @str.252, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 12 }, { ptr, i64 } { ptr @str.257, 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.135 + br label %while.hdr.159 -while.hdr.135: ; preds = %if.merge.139, %entry +while.hdr.159: ; preds = %if.merge.163, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.136, label %while.exit.137 + br i1 %icmp, label %while.body.160, label %while.exit.161 -while.body.136: ; preds = %while.hdr.135 +while.body.160: ; preds = %while.hdr.159 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.138, label %if.merge.139 + br i1 %icmpN, label %if.then.162, label %if.merge.163 -while.exit.137: ; preds = %while.hdr.135 +while.exit.161: ; preds = %while.hdr.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.253, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.258, i64 1 }) ret { ptr, i64 } %callN -if.then.138: ; preds = %while.body.136 +if.then.162: ; preds = %while.body.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.254, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.259, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.139 + br label %if.merge.163 -if.merge.139: ; preds = %if.then.138, %while.body.136 +if.merge.163: ; preds = %if.then.162, %while.body.160 %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.255, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.260, 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.256, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -3562,7 +3778,7 @@ if.merge.139: ; preds = %if.then.138, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.159 } ; Function Attrs: nounwind @@ -3570,43 +3786,43 @@ define internal { ptr, i64 } @struct_to_string__Point(ptr %0, { i32, i32 } %1) # entry: %alloca = alloca { i32, i32 }, align 8 store { i32, i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, i64 5 }, { ptr, i64 } { ptr @str.258, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.262, i64 5 }, { ptr, i64 } { ptr @str.263, 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.140 + br label %while.hdr.164 -while.hdr.140: ; preds = %fv.merge, %entry +while.hdr.164: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.141, label %while.exit.142 + br i1 %icmp, label %while.body.165, label %while.exit.166 -while.body.141: ; preds = %while.hdr.140 +while.body.165: ; preds = %while.hdr.164 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.143, label %if.merge.144 + br i1 %icmpN, label %if.then.167, label %if.merge.168 -while.exit.142: ; preds = %while.hdr.140 +while.exit.166: ; preds = %while.hdr.164 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.259, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.264, i64 1 }) ret { ptr, i64 } %callN -if.then.143: ; preds = %while.body.141 +if.then.167: ; preds = %while.body.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.260, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.265, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.144 + br label %if.merge.168 -if.merge.144: ; preds = %if.then.143, %while.body.141 +if.merge.168: ; preds = %if.then.167, %while.body.165 %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.263, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.268, 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.264, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.269, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32, i32 }, ptr %alloca, align 4 @@ -3624,18 +3840,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.140 + br label %while.hdr.164 -fv.default: ; preds = %if.merge.144 +fv.default: ; preds = %if.merge.168 br label %fv.merge -fv.case: ; preds = %if.merge.144 +fv.case: ; preds = %if.merge.168 %fv.field = extractvalue { i32, i32 } %loadN, 0 %sN = sext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.144 +fv.case17: ; preds = %if.merge.168 %fv.field18 = extractvalue { i32, i32 } %loadN, 1 %sN = sext i32 %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 @@ -3647,43 +3863,43 @@ define internal { ptr, i64 } @struct_to_string__Counter(ptr %0, { ptr, ptr } %1) entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.265, i64 7 }, { ptr, i64 } { ptr @str.266, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.270, i64 7 }, { ptr, i64 } { ptr @str.271, 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.145 + br label %while.hdr.169 -while.hdr.145: ; preds = %fv.merge, %entry +while.hdr.169: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.146, label %while.exit.147 + br i1 %icmp, label %while.body.170, label %while.exit.171 -while.body.146: ; preds = %while.hdr.145 +while.body.170: ; preds = %while.hdr.169 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.148, label %if.merge.149 + br i1 %icmpN, label %if.then.172, label %if.merge.173 -while.exit.147: ; preds = %while.hdr.145 +while.exit.171: ; preds = %while.hdr.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.267, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.272, i64 1 }) ret { ptr, i64 } %callN -if.then.148: ; preds = %while.body.146 +if.then.172: ; preds = %while.body.170 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.268, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.273, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.149 + br label %if.merge.173 -if.merge.149: ; preds = %if.then.148, %while.body.146 +if.merge.173: ; preds = %if.then.172, %while.body.170 %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.271, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.276, 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.272, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.277, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -3701,18 +3917,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.145 + br label %while.hdr.169 -fv.default: ; preds = %if.merge.149 +fv.default: ; preds = %if.merge.173 br label %fv.merge -fv.case: ; preds = %if.merge.149 +fv.case: ; preds = %if.merge.173 %fv.field = extractvalue { 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.149 +fv.case17: ; preds = %if.merge.173 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3724,43 +3940,43 @@ define internal { ptr, i64 } @struct_to_string____Counter__Vtable(ptr %0, { ptr, entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.273, i64 17 }, { ptr, i64 } { ptr @str.274, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.278, i64 17 }, { ptr, i64 } { ptr @str.279, 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.150 + br label %while.hdr.174 -while.hdr.150: ; preds = %fv.merge, %entry +while.hdr.174: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.151, label %while.exit.152 + br i1 %icmp, label %while.body.175, label %while.exit.176 -while.body.151: ; preds = %while.hdr.150 +while.body.175: ; preds = %while.hdr.174 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.153, label %if.merge.154 + br i1 %icmpN, label %if.then.177, label %if.merge.178 -while.exit.152: ; preds = %while.hdr.150 +while.exit.176: ; preds = %while.hdr.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.275, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.280, i64 1 }) ret { ptr, i64 } %callN -if.then.153: ; preds = %while.body.151 +if.then.177: ; preds = %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.276, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.281, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.154 + br label %if.merge.178 -if.merge.154: ; preds = %if.then.153, %while.body.151 +if.merge.178: ; preds = %if.then.177, %while.body.175 %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.279, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.284, 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.280, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.285, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -3778,18 +3994,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.150 + br label %while.hdr.174 -fv.default: ; preds = %if.merge.154 +fv.default: ; preds = %if.merge.178 br label %fv.merge -fv.case: ; preds = %if.merge.154 +fv.case: ; preds = %if.merge.178 %fv.field = extractvalue { 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.154 +fv.case17: ; preds = %if.merge.178 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3801,43 +4017,43 @@ define internal { ptr, i64 } @struct_to_string__Summable(ptr %0, { ptr, ptr } %1 entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.281, i64 8 }, { ptr, i64 } { ptr @str.282, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 8 }, { ptr, i64 } { ptr @str.287, 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.155 + br label %while.hdr.179 -while.hdr.155: ; preds = %fv.merge, %entry +while.hdr.179: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.156, label %while.exit.157 + br i1 %icmp, label %while.body.180, label %while.exit.181 -while.body.156: ; preds = %while.hdr.155 +while.body.180: ; preds = %while.hdr.179 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.158, label %if.merge.159 + br i1 %icmpN, label %if.then.182, label %if.merge.183 -while.exit.157: ; preds = %while.hdr.155 +while.exit.181: ; preds = %while.hdr.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.283, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.288, i64 1 }) ret { ptr, i64 } %callN -if.then.158: ; preds = %while.body.156 +if.then.182: ; preds = %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.284, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.289, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.159 + br label %if.merge.183 -if.merge.159: ; preds = %if.then.158, %while.body.156 +if.merge.183: ; preds = %if.then.182, %while.body.180 %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.287, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.292, 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.288, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.293, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -3855,18 +4071,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.155 + br label %while.hdr.179 -fv.default: ; preds = %if.merge.159 +fv.default: ; preds = %if.merge.183 br label %fv.merge -fv.case: ; preds = %if.merge.159 +fv.case: ; preds = %if.merge.183 %fv.field = extractvalue { 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.159 +fv.case17: ; preds = %if.merge.183 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3878,43 +4094,43 @@ define internal { ptr, i64 } @struct_to_string____Summable__Vtable(ptr %0, { ptr entry: %alloca = alloca { ptr }, align 8 store { ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.289, i64 18 }, { ptr, i64 } { ptr @str.290, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.294, i64 18 }, { ptr, i64 } { ptr @str.295, 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.160 + br label %while.hdr.184 -while.hdr.160: ; preds = %fv.merge, %entry +while.hdr.184: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.161, label %while.exit.162 + br i1 %icmp, label %while.body.185, label %while.exit.186 -while.body.161: ; preds = %while.hdr.160 +while.body.185: ; preds = %while.hdr.184 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.163, label %if.merge.164 + br i1 %icmpN, label %if.then.187, label %if.merge.188 -while.exit.162: ; preds = %while.hdr.160 +while.exit.186: ; preds = %while.hdr.184 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.291, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.296, i64 1 }) ret { ptr, i64 } %callN -if.then.163: ; preds = %while.body.161 +if.then.187: ; preds = %while.body.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.292, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.297, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.164 + br label %if.merge.188 -if.merge.164: ; preds = %if.then.163, %while.body.161 +if.merge.188: ; preds = %if.then.187, %while.body.185 %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.294, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.299, 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.295, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.300, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr }, ptr %alloca, align 8 @@ -3931,12 +4147,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.160 + br label %while.hdr.184 -fv.default: ; preds = %if.merge.164 +fv.default: ; preds = %if.merge.188 br label %fv.merge -fv.case: ; preds = %if.merge.164 +fv.case: ; preds = %if.merge.188 %fv.field = extractvalue { ptr } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1 @@ -3948,43 +4164,43 @@ define internal { ptr, i64 } @struct_to_string__SimpleCounter(ptr %0, { i32 } %1 entry: %alloca = alloca { i32 }, align 8 store { i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.296, i64 13 }, { ptr, i64 } { ptr @str.297, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 13 }, { ptr, i64 } { ptr @str.302, 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.165 + br label %while.hdr.189 -while.hdr.165: ; preds = %fv.merge, %entry +while.hdr.189: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.166, label %while.exit.167 + br i1 %icmp, label %while.body.190, label %while.exit.191 -while.body.166: ; preds = %while.hdr.165 +while.body.190: ; preds = %while.hdr.189 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.168, label %if.merge.169 + br i1 %icmpN, label %if.then.192, label %if.merge.193 -while.exit.167: ; preds = %while.hdr.165 +while.exit.191: ; preds = %while.hdr.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.298, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.303, i64 1 }) ret { ptr, i64 } %callN -if.then.168: ; preds = %while.body.166 +if.then.192: ; preds = %while.body.190 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.299, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.304, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.169 + br label %if.merge.193 -if.merge.169: ; preds = %if.then.168, %while.body.166 +if.merge.193: ; preds = %if.then.192, %while.body.190 %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.301, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.306, 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.302, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.307, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32 }, ptr %alloca, align 4 @@ -4001,12 +4217,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.165 + br label %while.hdr.189 -fv.default: ; preds = %if.merge.169 +fv.default: ; preds = %if.merge.193 br label %fv.merge -fv.case: ; preds = %if.merge.169 +fv.case: ; preds = %if.merge.193 %fv.field = extractvalue { i32 } %loadN, 0 %sN = sext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 @@ -4018,43 +4234,43 @@ define internal { ptr, i64 } @struct_to_string__Adder(ptr %0, { ptr, ptr, ptr } 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.303, i64 5 }, { ptr, i64 } { ptr @str.304, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 5 }, { ptr, i64 } { ptr @str.309, 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.170 + br label %while.hdr.194 -while.hdr.170: ; preds = %fv.merge, %entry +while.hdr.194: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.171, label %while.exit.172 + br i1 %icmp, label %while.body.195, label %while.exit.196 -while.body.171: ; preds = %while.hdr.170 +while.body.195: ; preds = %while.hdr.194 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.173, label %if.merge.174 + br i1 %icmpN, label %if.then.197, label %if.merge.198 -while.exit.172: ; preds = %while.hdr.170 +while.exit.196: ; preds = %while.hdr.194 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.305, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.310, i64 1 }) ret { ptr, i64 } %callN -if.then.173: ; preds = %while.body.171 +if.then.197: ; preds = %while.body.195 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.306, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.311, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.174 + br label %if.merge.198 -if.merge.174: ; preds = %if.then.173, %while.body.171 +if.merge.198: ; preds = %if.then.197, %while.body.195 %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.310, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.315, 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.311, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.316, 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 @@ -4073,24 +4289,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.170 + br label %while.hdr.194 -fv.default: ; preds = %if.merge.174 +fv.default: ; preds = %if.merge.198 br label %fv.merge -fv.case: ; preds = %if.merge.174 +fv.case: ; preds = %if.merge.198 %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.174 +fv.case17: ; preds = %if.merge.198 %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.174 +fv.case21: ; preds = %if.merge.198 %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 @@ -4102,43 +4318,43 @@ define internal { ptr, i64 } @struct_to_string__Accumulator(ptr %0, { i32 } %1) entry: %alloca = alloca { i32 }, align 8 store { i32 } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.312, i64 11 }, { ptr, i64 } { ptr @str.313, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.317, i64 11 }, { ptr, i64 } { ptr @str.318, 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.175 + br label %while.hdr.199 -while.hdr.175: ; preds = %fv.merge, %entry +while.hdr.199: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.176, label %while.exit.177 + br i1 %icmp, label %while.body.200, label %while.exit.201 -while.body.176: ; preds = %while.hdr.175 +while.body.200: ; preds = %while.hdr.199 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.178, label %if.merge.179 + br i1 %icmpN, label %if.then.202, label %if.merge.203 -while.exit.177: ; preds = %while.hdr.175 +while.exit.201: ; preds = %while.hdr.199 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.314, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.319, i64 1 }) ret { ptr, i64 } %callN -if.then.178: ; preds = %while.body.176 +if.then.202: ; preds = %while.body.200 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.315, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.320, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.179 + br label %if.merge.203 -if.merge.179: ; preds = %if.then.178, %while.body.176 +if.merge.203: ; preds = %if.then.202, %while.body.200 %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.317, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.322, 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.318, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.323, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i32 }, ptr %alloca, align 4 @@ -4155,12 +4371,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.175 + br label %while.hdr.199 -fv.default: ; preds = %if.merge.179 +fv.default: ; preds = %if.merge.203 br label %fv.merge -fv.case: ; preds = %if.merge.179 +fv.case: ; preds = %if.merge.203 %fv.field = extractvalue { i32 } %loadN, 0 %sN = sext i32 %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 4, i64 undef }, i64 %sN, 1 @@ -4176,9 +4392,9 @@ entry: %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.327, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [7 x { ptr, i64 }], ptr @field_names.332, 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.319, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.324, 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 @@ -4192,18 +4408,18 @@ entry: %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.184, label %if.merge.185 + br i1 %icmp, label %if.then.208, label %if.merge.209 -if.then.184: ; preds = %entry +if.then.208: ; 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.329, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.328, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.334, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.333, 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.185 + br label %if.merge.209 -if.merge.185: ; preds = %if.then.184, %entry +if.merge.209: ; preds = %if.then.208, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -4217,9 +4433,9 @@ entry: %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.336, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [5 x { ptr, i64 }], ptr @field_names.341, 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.330, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.335, 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 @@ -4233,55 +4449,105 @@ entry: %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 + br i1 %icmp, label %if.then.210, label %if.merge.211 -if.then.186: ; preds = %entry +if.then.210: ; 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.338, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.337, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.343, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.342, 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 + br label %if.merge.211 -if.merge.187: ; preds = %if.then.186, %entry +if.merge.211: ; preds = %if.then.210, %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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.344, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.216 + +while.hdr.216: ; preds = %if.merge.220, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.217, label %while.exit.218 + +while.body.217: ; preds = %while.hdr.216 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.219, label %if.merge.220 + +while.exit.218: ; preds = %while.hdr.216 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.345, i64 1 }) + ret { ptr, i64 } %call + +if.then.219: ; preds = %while.body.217 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.346, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.220 + +if.merge.220: ; preds = %if.then.219, %while.body.217 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.216 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.339, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.347, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.191 + br label %while.hdr.221 -while.hdr.191: ; preds = %if.merge.195, %entry +while.hdr.221: ; preds = %if.merge.225, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.192, label %while.exit.193 + br i1 %icmp, label %while.body.222, label %while.exit.223 -while.body.192: ; preds = %while.hdr.191 +while.body.222: ; preds = %while.hdr.221 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.194, label %if.merge.195 + br i1 %icmpN, label %if.then.224, label %if.merge.225 -while.exit.193: ; preds = %while.hdr.191 +while.exit.223: ; preds = %while.hdr.221 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.340, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.348, i64 1 }) ret { ptr, i64 } %call -if.then.194: ; preds = %while.body.192 +if.then.224: ; preds = %while.body.222 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.341, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.349, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.195 + br label %if.merge.225 -if.merge.195: ; preds = %if.then.194, %while.body.192 +if.merge.225: ; preds = %if.then.224, %while.body.222 %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 @@ -4299,7 +4565,7 @@ if.merge.195: ; preds = %if.then.194, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.191 + br label %while.hdr.221 } ; Function Attrs: nounwind @@ -4308,35 +4574,35 @@ 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.342, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.350, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.200 + br label %while.hdr.230 -while.hdr.200: ; preds = %if.merge.204, %entry +while.hdr.230: ; preds = %if.merge.234, %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.201, label %while.exit.202 + br i1 %icmp, label %while.body.231, label %while.exit.232 -while.body.201: ; preds = %while.hdr.200 +while.body.231: ; preds = %while.hdr.230 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.203, label %if.merge.204 + br i1 %icmpN, label %if.then.233, label %if.merge.234 -while.exit.202: ; preds = %while.hdr.200 +while.exit.232: ; preds = %while.hdr.230 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.343, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.351, i64 1 }) ret { ptr, i64 } %call -if.then.203: ; preds = %while.body.201 +if.then.233: ; preds = %while.body.231 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.344, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.352, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.204 + br label %if.merge.234 -if.merge.204: ; preds = %if.then.203, %while.body.201 +if.merge.234: ; preds = %if.then.233, %while.body.231 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -4353,7 +4619,7 @@ if.merge.204: ; preds = %if.then.203, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.200 + br label %while.hdr.230 } ; Function Attrs: nounwind @@ -4362,35 +4628,35 @@ 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.345, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.353, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.205 + br label %while.hdr.235 -while.hdr.205: ; preds = %if.merge.209, %entry +while.hdr.235: ; preds = %if.merge.239, %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.206, label %while.exit.207 + br i1 %icmp, label %while.body.236, label %while.exit.237 -while.body.206: ; preds = %while.hdr.205 +while.body.236: ; preds = %while.hdr.235 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.208, label %if.merge.209 + br i1 %icmpN, label %if.then.238, label %if.merge.239 -while.exit.207: ; preds = %while.hdr.205 +while.exit.237: ; preds = %while.hdr.235 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.346, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.354, i64 1 }) ret { ptr, i64 } %call -if.then.208: ; preds = %while.body.206 +if.then.238: ; preds = %while.body.236 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.347, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.355, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.209 + br label %if.merge.239 -if.merge.209: ; preds = %if.then.208, %while.body.206 +if.merge.239: ; preds = %if.then.238, %while.body.236 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -4407,95 +4673,11 @@ if.merge.209: ; preds = %if.then.208, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.205 + br label %while.hdr.235 } ; 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.238, label %if.else.239 - -if.then.238: ; preds = %entry - br label %if.merge.240 - -if.else.239: ; 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.350, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.349, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.240 - -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.348, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] - 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.262, label %if.else.263 - -if.then.262: ; preds = %entry - br label %if.merge.264 - -if.else.263: ; 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.353, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.352, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.264 - -if.merge.264: ; preds = %if.else.263, %if.then.262 - %bp = phi { ptr, i64 } [ { ptr @str.351, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] - 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.265, label %if.else.266 - -if.then.265: ; preds = %entry - br label %if.merge.267 - -if.else.266: ; 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.356, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.355, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.267 - -if.merge.267: ; preds = %if.else.266, %if.then.265 - %bp = phi { ptr, i64 } [ { ptr @str.354, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] - 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 @@ -4513,12 +4695,96 @@ if.then.268: ; preds = %entry if.else.269: ; 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.359, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.358, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.358, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.357, i64 5 }, { ptr, i64 } %callN) br label %if.merge.270 if.merge.270: ; preds = %if.else.269, %if.then.268 - %bp = phi { ptr, i64 } [ { ptr @str.357, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] + %bp = phi { ptr, i64 } [ { ptr @str.356, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] + 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.284, label %if.else.285 + +if.then.284: ; preds = %entry + br label %if.merge.286 + +if.else.285: ; 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.361, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.360, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.286 + +if.merge.286: ; preds = %if.else.285, %if.then.284 + %bp = phi { ptr, i64 } [ { ptr @str.359, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] + 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.287, label %if.else.288 + +if.then.287: ; preds = %entry + br label %if.merge.289 + +if.else.288: ; 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.364, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.363, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.289 + +if.merge.289: ; preds = %if.else.288, %if.then.287 + %bp = phi { ptr, i64 } [ { ptr @str.362, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] + 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.290, label %if.else.291 + +if.then.290: ; preds = %entry + br label %if.merge.292 + +if.else.291: ; 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.367, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.366, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.292 + +if.merge.292: ; preds = %if.else.291, %if.then.290 + %bp = phi { ptr, i64 } [ { ptr @str.365, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] ret { ptr, i64 } %bp } @@ -4533,20 +4799,20 @@ entry: 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.271, label %if.else.272 + br i1 %icmp, label %if.then.293, label %if.else.294 -if.then.271: ; preds = %entry - br label %if.merge.273 +if.then.293: ; preds = %entry + br label %if.merge.295 -if.else.272: ; preds = %entry +if.else.294: ; 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.362, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.361, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.273 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.370, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.369, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.295 -if.merge.273: ; preds = %if.else.272, %if.then.271 - %bp = phi { ptr, i64 } [ { ptr @str.360, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] +if.merge.295: ; preds = %if.else.294, %if.then.293 + %bp = phi { ptr, i64 } [ { ptr @str.368, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] ret { ptr, i64 } %bp } @@ -4560,20 +4826,20 @@ entry: 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.274, label %if.else.275 + br i1 %icmp, label %if.then.296, label %if.else.297 -if.then.274: ; preds = %entry - br label %if.merge.276 +if.then.296: ; preds = %entry + br label %if.merge.298 -if.else.275: ; preds = %entry +if.else.297: ; 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.365, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.364, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.276 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.373, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.372, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.298 -if.merge.276: ; preds = %if.else.275, %if.then.274 - %bp = phi { ptr, i64 } [ { ptr @str.363, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] +if.merge.298: ; preds = %if.else.297, %if.then.296 + %bp = phi { ptr, i64 } [ { ptr @str.371, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] ret { ptr, i64 } %bp } @@ -4588,20 +4854,20 @@ entry: 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.277, label %if.else.278 + br i1 %icmp, label %if.then.299, label %if.else.300 -if.then.277: ; preds = %entry - br label %if.merge.279 +if.then.299: ; preds = %entry + br label %if.merge.301 -if.else.278: ; preds = %entry +if.else.300: ; 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.368, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.367, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.279 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.376, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.375, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.301 -if.merge.279: ; preds = %if.else.278, %if.then.277 - %bp = phi { ptr, i64 } [ { ptr @str.366, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] +if.merge.301: ; preds = %if.else.300, %if.then.299 + %bp = phi { ptr, i64 } [ { ptr @str.374, i64 4 }, %if.then.299 ], [ %callN, %if.else.300 ] ret { ptr, i64 } %bp } @@ -4616,20 +4882,20 @@ entry: 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.280, label %if.else.281 + br i1 %icmp, label %if.then.302, label %if.else.303 -if.then.280: ; preds = %entry - br label %if.merge.282 +if.then.302: ; preds = %entry + br label %if.merge.304 -if.else.281: ; preds = %entry +if.else.303: ; 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.371, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.370, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.282 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.379, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.378, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.304 -if.merge.282: ; preds = %if.else.281, %if.then.280 - %bp = phi { ptr, i64 } [ { ptr @str.369, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] +if.merge.304: ; preds = %if.else.303, %if.then.302 + %bp = phi { ptr, i64 } [ { ptr @str.377, i64 4 }, %if.then.302 ], [ %callN, %if.else.303 ] ret { ptr, i64 } %bp } @@ -4644,20 +4910,20 @@ entry: 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.283, label %if.else.284 + br i1 %icmp, label %if.then.305, label %if.else.306 -if.then.283: ; preds = %entry - br label %if.merge.285 +if.then.305: ; preds = %entry + br label %if.merge.307 -if.else.284: ; preds = %entry +if.else.306: ; 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.374, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.373, i64 14 }, { ptr, i64 } %callN) - br label %if.merge.285 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.382, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.381, i64 14 }, { ptr, i64 } %callN) + br label %if.merge.307 -if.merge.285: ; preds = %if.else.284, %if.then.283 - %bp = phi { ptr, i64 } [ { ptr @str.372, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] +if.merge.307: ; preds = %if.else.306, %if.then.305 + %bp = phi { ptr, i64 } [ { ptr @str.380, i64 4 }, %if.then.305 ], [ %callN, %if.else.306 ] ret { ptr, i64 } %bp } @@ -4672,20 +4938,20 @@ entry: 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.286, label %if.else.287 + br i1 %icmp, label %if.then.308, label %if.else.309 -if.then.286: ; preds = %entry - br label %if.merge.288 +if.then.308: ; preds = %entry + br label %if.merge.310 -if.else.287: ; preds = %entry +if.else.309: ; 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.377, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.376, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.288 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.385, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.384, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.310 -if.merge.288: ; preds = %if.else.287, %if.then.286 - %bp = phi { ptr, i64 } [ { ptr @str.375, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] +if.merge.310: ; preds = %if.else.309, %if.then.308 + %bp = phi { ptr, i64 } [ { ptr @str.383, i64 4 }, %if.then.308 ], [ %callN, %if.else.309 ] ret { ptr, i64 } %bp } @@ -4700,20 +4966,20 @@ entry: 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.289, label %if.else.290 + br i1 %icmp, label %if.then.311, label %if.else.312 -if.then.289: ; preds = %entry - br label %if.merge.291 +if.then.311: ; preds = %entry + br label %if.merge.313 -if.else.290: ; preds = %entry +if.else.312: ; 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.380, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.379, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.291 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.388, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.387, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.313 -if.merge.291: ; preds = %if.else.290, %if.then.289 - %bp = phi { ptr, i64 } [ { ptr @str.378, i64 4 }, %if.then.289 ], [ %callN, %if.else.290 ] +if.merge.313: ; preds = %if.else.312, %if.then.311 + %bp = phi { ptr, i64 } [ { ptr @str.386, i64 4 }, %if.then.311 ], [ %callN, %if.else.312 ] ret { ptr, i64 } %bp } @@ -4728,20 +4994,20 @@ entry: 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.292, label %if.else.293 + br i1 %icmp, label %if.then.314, label %if.else.315 -if.then.292: ; preds = %entry - br label %if.merge.294 +if.then.314: ; preds = %entry + br label %if.merge.316 -if.else.293: ; preds = %entry +if.else.315: ; 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.383, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.382, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.294 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.391, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.390, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.316 -if.merge.294: ; preds = %if.else.293, %if.then.292 - %bp = phi { ptr, i64 } [ { ptr @str.381, i64 4 }, %if.then.292 ], [ %callN, %if.else.293 ] +if.merge.316: ; preds = %if.else.315, %if.then.314 + %bp = phi { ptr, i64 } [ { ptr @str.389, i64 4 }, %if.then.314 ], [ %callN, %if.else.315 ] ret { ptr, i64 } %bp } @@ -4756,20 +5022,20 @@ entry: 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.295, label %if.else.296 + br i1 %icmp, label %if.then.317, label %if.else.318 -if.then.295: ; preds = %entry - br label %if.merge.297 +if.then.317: ; preds = %entry + br label %if.merge.319 -if.else.296: ; preds = %entry +if.else.318: ; 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.386, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.385, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.297 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.394, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.393, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.319 -if.merge.297: ; preds = %if.else.296, %if.then.295 - %bp = phi { ptr, i64 } [ { ptr @str.384, i64 4 }, %if.then.295 ], [ %callN, %if.else.296 ] +if.merge.319: ; preds = %if.else.318, %if.then.317 + %bp = phi { ptr, i64 } [ { ptr @str.392, i64 4 }, %if.then.317 ], [ %callN, %if.else.318 ] ret { ptr, i64 } %bp } @@ -4784,20 +5050,20 @@ entry: 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.298, label %if.else.299 + br i1 %icmp, label %if.then.320, label %if.else.321 -if.then.298: ; preds = %entry - br label %if.merge.300 +if.then.320: ; preds = %entry + br label %if.merge.322 -if.else.299: ; preds = %entry +if.else.321: ; 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.389, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.388, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.300 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.397, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.396, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.322 -if.merge.300: ; preds = %if.else.299, %if.then.298 - %bp = phi { ptr, i64 } [ { ptr @str.387, i64 4 }, %if.then.298 ], [ %callN, %if.else.299 ] +if.merge.322: ; preds = %if.else.321, %if.then.320 + %bp = phi { ptr, i64 } [ { ptr @str.395, i64 4 }, %if.then.320 ], [ %callN, %if.else.321 ] ret { ptr, i64 } %bp } @@ -4812,20 +5078,20 @@ entry: 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.301, label %if.else.302 + br i1 %icmp, label %if.then.323, label %if.else.324 -if.then.301: ; preds = %entry - br label %if.merge.303 +if.then.323: ; preds = %entry + br label %if.merge.325 -if.else.302: ; preds = %entry +if.else.324: ; 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.392, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.391, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.303 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.400, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.399, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.325 -if.merge.303: ; preds = %if.else.302, %if.then.301 - %bp = phi { ptr, i64 } [ { ptr @str.390, i64 4 }, %if.then.301 ], [ %callN, %if.else.302 ] +if.merge.325: ; preds = %if.else.324, %if.then.323 + %bp = phi { ptr, i64 } [ { ptr @str.398, i64 4 }, %if.then.323 ], [ %callN, %if.else.324 ] ret { ptr, i64 } %bp } @@ -4840,20 +5106,20 @@ entry: 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.304, label %if.else.305 + br i1 %icmp, label %if.then.326, label %if.else.327 -if.then.304: ; preds = %entry - br label %if.merge.306 +if.then.326: ; preds = %entry + br label %if.merge.328 -if.else.305: ; preds = %entry +if.else.327: ; 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.395, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.394, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.306 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.403, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.402, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.328 -if.merge.306: ; preds = %if.else.305, %if.then.304 - %bp = phi { ptr, i64 } [ { ptr @str.393, i64 4 }, %if.then.304 ], [ %callN, %if.else.305 ] +if.merge.328: ; preds = %if.else.327, %if.then.326 + %bp = phi { ptr, i64 } [ { ptr @str.401, i64 4 }, %if.then.326 ], [ %callN, %if.else.327 ] ret { ptr, i64 } %bp } @@ -4868,20 +5134,20 @@ entry: 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.307, label %if.else.308 + br i1 %icmp, label %if.then.329, label %if.else.330 -if.then.307: ; preds = %entry - br label %if.merge.309 +if.then.329: ; preds = %entry + br label %if.merge.331 -if.else.308: ; preds = %entry +if.else.330: ; 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.398, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.397, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.309 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.406, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.405, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.331 -if.merge.309: ; preds = %if.else.308, %if.then.307 - %bp = phi { ptr, i64 } [ { ptr @str.396, i64 4 }, %if.then.307 ], [ %callN, %if.else.308 ] +if.merge.331: ; preds = %if.else.330, %if.then.329 + %bp = phi { ptr, i64 } [ { ptr @str.404, i64 4 }, %if.then.329 ], [ %callN, %if.else.330 ] ret { ptr, i64 } %bp } @@ -4896,20 +5162,20 @@ entry: 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.310, label %if.else.311 + br i1 %icmp, label %if.then.332, label %if.else.333 -if.then.310: ; preds = %entry - br label %if.merge.312 +if.then.332: ; preds = %entry + br label %if.merge.334 -if.else.311: ; preds = %entry +if.else.333: ; 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.401, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.400, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.312 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.409, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.408, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.334 -if.merge.312: ; preds = %if.else.311, %if.then.310 - %bp = phi { ptr, i64 } [ { ptr @str.399, i64 4 }, %if.then.310 ], [ %callN, %if.else.311 ] +if.merge.334: ; preds = %if.else.333, %if.then.332 + %bp = phi { ptr, i64 } [ { ptr @str.407, i64 4 }, %if.then.332 ], [ %callN, %if.else.333 ] ret { ptr, i64 } %bp } @@ -4924,20 +5190,20 @@ entry: 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.313, label %if.else.314 + br i1 %icmp, label %if.then.335, label %if.else.336 -if.then.313: ; preds = %entry - br label %if.merge.315 +if.then.335: ; preds = %entry + br label %if.merge.337 -if.else.314: ; preds = %entry +if.else.336: ; 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.404, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.403, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.315 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.412, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.411, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.337 -if.merge.315: ; preds = %if.else.314, %if.then.313 - %bp = phi { ptr, i64 } [ { ptr @str.402, i64 4 }, %if.then.313 ], [ %callN, %if.else.314 ] +if.merge.337: ; preds = %if.else.336, %if.then.335 + %bp = phi { ptr, i64 } [ { ptr @str.410, i64 4 }, %if.then.335 ], [ %callN, %if.else.336 ] ret { ptr, i64 } %bp } @@ -4952,20 +5218,20 @@ entry: 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.316, label %if.else.317 + br i1 %icmp, label %if.then.338, label %if.else.339 -if.then.316: ; preds = %entry - br label %if.merge.318 +if.then.338: ; preds = %entry + br label %if.merge.340 -if.else.317: ; preds = %entry +if.else.339: ; 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.407, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.406, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.318 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.415, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.414, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.340 -if.merge.318: ; preds = %if.else.317, %if.then.316 - %bp = phi { ptr, i64 } [ { ptr @str.405, i64 4 }, %if.then.316 ], [ %callN, %if.else.317 ] +if.merge.340: ; preds = %if.else.339, %if.then.338 + %bp = phi { ptr, i64 } [ { ptr @str.413, i64 4 }, %if.then.338 ], [ %callN, %if.else.339 ] ret { ptr, i64 } %bp } @@ -4980,20 +5246,20 @@ entry: 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.319, label %if.else.320 + br i1 %icmp, label %if.then.341, label %if.else.342 -if.then.319: ; preds = %entry - br label %if.merge.321 +if.then.341: ; preds = %entry + br label %if.merge.343 -if.else.320: ; preds = %entry +if.else.342: ; 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.410, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.409, i64 15 }, { ptr, i64 } %callN) - br label %if.merge.321 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.418, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.417, i64 15 }, { ptr, i64 } %callN) + br label %if.merge.343 -if.merge.321: ; preds = %if.else.320, %if.then.319 - %bp = phi { ptr, i64 } [ { ptr @str.408, i64 4 }, %if.then.319 ], [ %callN, %if.else.320 ] +if.merge.343: ; preds = %if.else.342, %if.then.341 + %bp = phi { ptr, i64 } [ { ptr @str.416, i64 4 }, %if.then.341 ], [ %callN, %if.else.342 ] ret { ptr, i64 } %bp } @@ -5008,20 +5274,20 @@ entry: 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.322, label %if.else.323 + br i1 %icmp, label %if.then.344, label %if.else.345 -if.then.322: ; preds = %entry - br label %if.merge.324 +if.then.344: ; preds = %entry + br label %if.merge.346 -if.else.323: ; preds = %entry +if.else.345: ; 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.413, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.412, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.324 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.421, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.420, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.346 -if.merge.324: ; preds = %if.else.323, %if.then.322 - %bp = phi { ptr, i64 } [ { ptr @str.411, i64 4 }, %if.then.322 ], [ %callN, %if.else.323 ] +if.merge.346: ; preds = %if.else.345, %if.then.344 + %bp = phi { ptr, i64 } [ { ptr @str.419, i64 4 }, %if.then.344 ], [ %callN, %if.else.345 ] ret { ptr, i64 } %bp } @@ -5036,20 +5302,20 @@ entry: 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.325, label %if.else.326 + br i1 %icmp, label %if.then.347, label %if.else.348 -if.then.325: ; preds = %entry - br label %if.merge.327 +if.then.347: ; preds = %entry + br label %if.merge.349 -if.else.326: ; preds = %entry +if.else.348: ; 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.416, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.415, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.327 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.424, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.423, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.349 -if.merge.327: ; preds = %if.else.326, %if.then.325 - %bp = phi { ptr, i64 } [ { ptr @str.414, i64 4 }, %if.then.325 ], [ %callN, %if.else.326 ] +if.merge.349: ; preds = %if.else.348, %if.then.347 + %bp = phi { ptr, i64 } [ { ptr @str.422, i64 4 }, %if.then.347 ], [ %callN, %if.else.348 ] ret { ptr, i64 } %bp } @@ -5064,20 +5330,20 @@ entry: 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.328, label %if.else.329 + br i1 %icmp, label %if.then.350, label %if.else.351 -if.then.328: ; preds = %entry - br label %if.merge.330 +if.then.350: ; preds = %entry + br label %if.merge.352 -if.else.329: ; preds = %entry +if.else.351: ; 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.419, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.418, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.330 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.427, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.426, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.352 -if.merge.330: ; preds = %if.else.329, %if.then.328 - %bp = phi { ptr, i64 } [ { ptr @str.417, i64 4 }, %if.then.328 ], [ %callN, %if.else.329 ] +if.merge.352: ; preds = %if.else.351, %if.then.350 + %bp = phi { ptr, i64 } [ { ptr @str.425, i64 4 }, %if.then.350 ], [ %callN, %if.else.351 ] ret { ptr, i64 } %bp } @@ -5092,20 +5358,20 @@ entry: 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.331, label %if.else.332 + br i1 %icmp, label %if.then.353, label %if.else.354 -if.then.331: ; preds = %entry - br label %if.merge.333 +if.then.353: ; preds = %entry + br label %if.merge.355 -if.else.332: ; preds = %entry +if.else.354: ; 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.422, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.421, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.333 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.430, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.429, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.355 -if.merge.333: ; preds = %if.else.332, %if.then.331 - %bp = phi { ptr, i64 } [ { ptr @str.420, i64 4 }, %if.then.331 ], [ %callN, %if.else.332 ] +if.merge.355: ; preds = %if.else.354, %if.then.353 + %bp = phi { ptr, i64 } [ { ptr @str.428, i64 4 }, %if.then.353 ], [ %callN, %if.else.354 ] ret { ptr, i64 } %bp } @@ -5120,23 +5386,21 @@ entry: 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.334, label %if.else.335 + br i1 %icmp, label %if.then.356, label %if.else.357 -if.then.334: ; preds = %entry - br label %if.merge.336 +if.then.356: ; preds = %entry + br label %if.merge.358 -if.else.335: ; preds = %entry +if.else.357: ; 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.425, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.424, i64 13 }, { ptr, i64 } %callN) - br label %if.merge.336 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.433, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.432, i64 13 }, { ptr, i64 } %callN) + br label %if.merge.358 -if.merge.336: ; preds = %if.else.335, %if.then.334 - %bp = phi { ptr, i64 } [ { ptr @str.423, i64 4 }, %if.then.334 ], [ %callN, %if.else.335 ] +if.merge.358: ; preds = %if.else.357, %if.then.356 + %bp = phi { ptr, i64 } [ { ptr @str.431, i64 4 }, %if.then.356 ], [ %callN, %if.else.357 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0507-packs-pack-mono-dedup.ir b/examples/expected/0507-packs-pack-mono-dedup.ir index 6c2be2f..73f78f5 100644 --- a/examples/expected/0507-packs-pack-mono-dedup.ir +++ b/examples/expected/0507-packs-pack-mono-dedup.ir @@ -1,190 +1,191 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [78 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.42 = private constant [5 x i8] c"*s64\00" -@tn.str.43 = private constant [7 x i8] c"**void\00" -@tn.str.44 = private constant [6 x i8] c"[]Any\00" -@tn.str.45 = private constant [5 x i8] c"*Any\00" -@tn.str.46 = private constant [7 x i8] c"*[]Any\00" -@tn.str.47 = private constant [7 x i8] c"[1]Any\00" -@tn.str.48 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.49 = private constant [7 x i8] c"[3]Any\00" -@tn.str.50 = private constant [8 x i8] c"*[3]Any\00" -@tn.str.51 = private constant [8 x i8] c"*string\00" -@tn.str.52 = private constant [6 x i8] c"*bool\00" -@tn.str.53 = private constant [7 x i8] c"[2]Any\00" -@tn.str.54 = private constant [8 x i8] c"*[2]Any\00" -@tn.str.55 = private constant [7 x i8] c"[5]Any\00" -@tn.str.56 = private constant [8 x i8] c"*[5]Any\00" -@tn.str.57 = private constant [4 x i8] c"*u8\00" -@tn.str.58 = private constant [5 x i8] c"*f64\00" -@tn.str.59 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.60 = private constant [11 x i8] c"*Allocator\00" -@tn.str.61 = private constant [9 x i8] c"*Context\00" -@tn.str.62 = private constant [10 x i8] c"*[]string\00" -@tn.str.63 = private constant [6 x i8] c"**GPA\00" -@tn.str.64 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.65 = private constant [8 x i8] c"**Arena\00" -@tn.str.66 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.67 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.68 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.69 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.70 = private constant [6 x i8] c"**s64\00" -@tn.str.71 = private constant [8 x i8] c"***void\00" -@tn.str.72 = private constant [6 x i8] c"**Any\00" -@tn.str.73 = private constant [8 x i8] c"**[]Any\00" -@tn.str.74 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.75 = private constant [9 x i8] c"**[3]Any\00" -@tn.str.76 = private constant [9 x i8] c"**string\00" -@tn.str.77 = private constant [7 x i8] c"**bool\00" -@tn.str.78 = private constant [9 x i8] c"**[2]Any\00" -@tn.str.79 = private constant [9 x i8] c"**[5]Any\00" -@tn.str.80 = private constant [5 x i8] c"**u8\00" -@__sx_type_names = private constant [76 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 5 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 6 }, { ptr, i64 } { ptr @tn.str.48, i64 7 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 7 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 3 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 16 }, { ptr, i64 } { ptr @tn.str.60, i64 10 }, { ptr, i64 } { ptr @tn.str.61, i64 8 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 5 }, { ptr, i64 } { ptr @tn.str.64, i64 12 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 10 }, { ptr, i64 } { ptr @tn.str.68, i64 19 }, { ptr, i64 } { ptr @tn.str.69, i64 13 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 8 }, { ptr, i64 } { ptr @tn.str.76, i64 8 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }, { ptr, i64 } { ptr @tn.str.78, i64 8 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }, { ptr, i64 } { ptr @tn.str.80, i64 4 }] -@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [13 x i8] c"**CAllocator\00" +@tn.str.44 = private constant [5 x i8] c"*s64\00" +@tn.str.45 = private constant [7 x i8] c"**void\00" +@tn.str.46 = private constant [6 x i8] c"[]Any\00" +@tn.str.47 = private constant [5 x i8] c"*Any\00" +@tn.str.48 = private constant [7 x i8] c"*[]Any\00" +@tn.str.49 = private constant [7 x i8] c"[1]Any\00" +@tn.str.50 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.51 = private constant [7 x i8] c"[3]Any\00" +@tn.str.52 = private constant [8 x i8] c"*[3]Any\00" +@tn.str.53 = private constant [8 x i8] c"*string\00" +@tn.str.54 = private constant [6 x i8] c"*bool\00" +@tn.str.55 = private constant [7 x i8] c"[2]Any\00" +@tn.str.56 = private constant [8 x i8] c"*[2]Any\00" +@tn.str.57 = private constant [7 x i8] c"[5]Any\00" +@tn.str.58 = private constant [8 x i8] c"*[5]Any\00" +@tn.str.59 = private constant [4 x i8] c"*u8\00" +@tn.str.60 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.61 = private constant [5 x i8] c"*f64\00" +@tn.str.62 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.63 = private constant [11 x i8] c"*Allocator\00" +@tn.str.64 = private constant [9 x i8] c"*Context\00" +@tn.str.65 = private constant [10 x i8] c"*[]string\00" +@tn.str.66 = private constant [6 x i8] c"**GPA\00" +@tn.str.67 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.68 = private constant [8 x i8] c"**Arena\00" +@tn.str.69 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.70 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.71 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.72 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.73 = private constant [6 x i8] c"**s64\00" +@tn.str.74 = private constant [8 x i8] c"***void\00" +@tn.str.75 = private constant [6 x i8] c"**Any\00" +@tn.str.76 = private constant [8 x i8] c"**[]Any\00" +@tn.str.77 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.78 = private constant [9 x i8] c"**[3]Any\00" +@tn.str.79 = private constant [9 x i8] c"**string\00" +@tn.str.80 = private constant [7 x i8] c"**bool\00" +@tn.str.81 = private constant [9 x i8] c"**[2]Any\00" +@tn.str.82 = private constant [9 x i8] c"**[5]Any\00" +@tn.str.83 = private constant [5 x i8] c"**u8\00" +@__sx_type_names = private constant [78 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 12 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 5 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 7 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 6 }, { ptr, i64 } { ptr @tn.str.58, i64 7 }, { ptr, i64 } { ptr @tn.str.59, i64 3 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 4 }, { ptr, i64 } { ptr @tn.str.62, i64 16 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 8 }, { ptr, i64 } { ptr @tn.str.65, i64 9 }, { ptr, i64 } { ptr @tn.str.66, i64 5 }, { ptr, i64 } { ptr @tn.str.67, i64 12 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 6 }, { ptr, i64 } { ptr @tn.str.70, i64 10 }, { ptr, i64 } { ptr @tn.str.71, i64 19 }, { ptr, i64 } { ptr @tn.str.72, i64 13 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 7 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 8 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }, { ptr, i64 } { ptr @tn.str.80, i64 6 }, { ptr, i64 } { ptr @tn.str.81, i64 8 }, { ptr, i64 } { ptr @tn.str.82, i64 8 }, { ptr, i64 } { ptr @tn.str.83, i64 4 }] @str.84 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.85 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.89 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.90 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.91 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.92 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.93 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.85 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.86 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.87 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.88 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.92 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.93 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.94 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.95 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.96 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.97 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.98 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.99 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.100 = private unnamed_addr constant [2 x i8] c"x\00", align 1 -@str.101 = private unnamed_addr constant [16 x i8] c"{} {} {} {} {}\0A\00", align 1 -@str.102 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.103 = private unnamed_addr constant [16 x i8] c"{} {} {} {} {}\0A\00", align 1 -@str.104 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.105 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.106 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.107 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.100 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.101 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.102 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.103 = private unnamed_addr constant [2 x i8] c"x\00", align 1 +@str.104 = private unnamed_addr constant [16 x i8] c"{} {} {} {} {}\0A\00", align 1 +@str.105 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.106 = private unnamed_addr constant [16 x i8] c"{} {} {} {} {}\0A\00", align 1 +@str.107 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.108 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.109 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.108 = private constant [5 x i8] c"line\00" -@fld.str.109 = private constant [4 x i8] c"col\00" -@fld.str.110 = 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.108, i64 4 }, { ptr, i64 } { ptr @fld.str.109, i64 3 }, { ptr, i64 } { ptr @fld.str.110, i64 4 }] -@str.111 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.112 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.113 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.114 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.116 = private constant [4 x i8] c"ctx\00" -@fld.str.117 = private constant [6 x i8] c"alloc\00" -@fld.str.118 = private constant [8 x i8] c"dealloc\00" -@field_names.119 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.116, i64 3 }, { ptr, i64 } { ptr @fld.str.117, i64 5 }, { ptr, i64 } { ptr @fld.str.118, i64 7 }] -@str.120 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.121 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.122 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.123 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.125 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.127 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.131 = private constant [12 x i8] c"alloc_count\00" -@field_names.132 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.131, i64 11 }] -@str.133 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.134 = private unnamed_addr constant [11 x i8] c"ArenaChunk\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.138 = private constant [5 x i8] c"next\00" -@fld.str.139 = private constant [4 x i8] c"cap\00" -@field_names.140 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.138, i64 4 }, { ptr, i64 } { ptr @fld.str.139, i64 3 }] -@str.141 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.142 = private unnamed_addr constant [6 x i8] c"Arena\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 [6 x i8] c"first\00" -@fld.str.147 = private constant [10 x i8] c"end_index\00" -@fld.str.148 = private constant [7 x i8] c"parent\00" -@field_names.149 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.146, i64 5 }, { ptr, i64 } { ptr @fld.str.147, i64 9 }, { ptr, i64 } { ptr @fld.str.148, i64 6 }] -@str.150 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.151 = private unnamed_addr constant [9 x i8] c"BufAlloc\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 -@fld.str.155 = private constant [4 x i8] c"buf\00" -@fld.str.156 = private constant [4 x i8] c"len\00" -@fld.str.157 = private constant [4 x i8] c"pos\00" -@field_names.158 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.155, i64 3 }, { ptr, i64 } { ptr @fld.str.156, i64 3 }, { ptr, i64 } { ptr @fld.str.157, i64 3 }] -@str.159 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.160 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.164 = private constant [7 x i8] c"parent\00" -@fld.str.165 = private constant [12 x i8] c"alloc_count\00" -@fld.str.166 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.167 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.168 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.164, i64 6 }, { ptr, i64 } { ptr @fld.str.165, i64 11 }, { ptr, i64 } { ptr @fld.str.166, i64 13 }, { ptr, i64 } { ptr @fld.str.167, i64 17 }] -@str.169 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.170 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.174 = private constant [10 x i8] c"allocator\00" -@fld.str.175 = private constant [5 x i8] c"data\00" -@field_names.176 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.174, i64 9 }, { ptr, i64 } { ptr @fld.str.175, i64 4 }] -@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.111 = private constant [5 x i8] c"line\00" +@fld.str.112 = private constant [4 x i8] c"col\00" +@fld.str.113 = 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.111, i64 4 }, { ptr, i64 } { ptr @fld.str.112, i64 3 }, { ptr, i64 } { ptr @fld.str.113, i64 4 }] +@str.114 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.115 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.116 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.117 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.119 = private constant [4 x i8] c"ctx\00" +@fld.str.120 = private constant [6 x i8] c"alloc\00" +@fld.str.121 = private constant [8 x i8] c"dealloc\00" +@field_names.122 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.119, i64 3 }, { ptr, i64 } { ptr @fld.str.120, i64 5 }, { ptr, i64 } { ptr @fld.str.121, i64 7 }] +@str.123 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.124 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.125 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.126 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.128 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.130 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.134 = private constant [12 x i8] c"alloc_count\00" +@field_names.135 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 11 }] +@str.136 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.137 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.138 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.141 = private constant [5 x i8] c"next\00" +@fld.str.142 = private constant [4 x i8] c"cap\00" +@field_names.143 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.141, i64 4 }, { ptr, i64 } { ptr @fld.str.142, i64 3 }] +@str.144 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.145 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.149 = private constant [6 x i8] c"first\00" +@fld.str.150 = private constant [10 x i8] c"end_index\00" +@fld.str.151 = private constant [7 x i8] c"parent\00" +@field_names.152 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.149, i64 5 }, { ptr, i64 } { ptr @fld.str.150, i64 9 }, { ptr, i64 } { ptr @fld.str.151, i64 6 }] +@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.154 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.158 = private constant [4 x i8] c"buf\00" +@fld.str.159 = private constant [4 x i8] c"len\00" +@fld.str.160 = private constant [4 x i8] c"pos\00" +@field_names.161 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 3 }, { ptr, i64 } { ptr @fld.str.159, i64 3 }, { ptr, i64 } { ptr @fld.str.160, i64 3 }] +@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.163 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.167 = private constant [7 x i8] c"parent\00" +@fld.str.168 = private constant [12 x i8] c"alloc_count\00" +@fld.str.169 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.170 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.171 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 6 }, { ptr, i64 } { ptr @fld.str.168, i64 11 }, { ptr, i64 } { ptr @fld.str.169, i64 13 }, { ptr, i64 } { ptr @fld.str.170, i64 17 }] +@str.172 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.173 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.174 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.175 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.177 = private constant [10 x i8] c"allocator\00" +@fld.str.178 = private constant [5 x i8] c"data\00" +@field_names.179 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.177, i64 9 }, { ptr, i64 } { ptr @fld.str.178, i64 4 }] +@str.180 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.181 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.182 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -200,66 +201,72 @@ @str.193 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.194 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.195 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.196 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.197 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.198 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.199 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.200 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.201 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.196 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.198 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.199 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.201 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.202 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.203 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.203 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.204 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.205 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.206 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.206 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.207 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.208 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.209 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.209 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.210 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.211 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.212 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.212 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.213 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.214 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.215 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.215 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.216 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.217 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.218 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.218 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.219 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.220 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.221 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.221 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.222 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.223 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.224 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.224 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.225 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.226 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.227 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.227 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.228 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.229 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.230 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.230 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.231 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.232 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.233 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.233 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.234 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.235 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.236 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.236 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.237 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.238 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.239 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 +@str.239 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.240 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.241 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.242 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.242 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.243 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.244 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.245 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.245 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 @str.246 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.247 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.248 = private unnamed_addr constant [8 x i8] c"*[2]Any\00", align 1 +@str.248 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.249 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.250 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.251 = private unnamed_addr constant [8 x i8] c"*[5]Any\00", align 1 +@str.251 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 @str.252 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.253 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.254 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.254 = private unnamed_addr constant [8 x i8] c"*[2]Any\00", align 1 @str.255 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.256 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.257 = private unnamed_addr constant [8 x i8] c"*[5]Any\00", align 1 +@str.258 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.259 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.260 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.261 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -398,38 +405,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -442,50 +454,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -499,19 +639,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -528,15 +668,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -554,16 +694,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -580,17 +720,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -653,39 +793,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.201 + br label %while.hdr.223 -while.hdr.201: ; preds = %if.merge.206, %entry +while.hdr.223: ; preds = %if.merge.228, %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.202, label %while.exit.203 + br i1 %icmp, label %while.body.224, label %while.exit.225 -while.body.202: ; preds = %while.hdr.201 +while.body.224: ; preds = %while.hdr.223 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.204, label %if.else.205 + br i1 %icmpN, label %if.then.226, label %if.else.227 -while.exit.203: ; preds = %while.hdr.201 +while.exit.225: ; preds = %while.hdr.223 ret void -if.then.204: ; preds = %while.body.202 +if.then.226: ; preds = %while.body.224 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.206 + br label %if.merge.228 -if.else.205: ; preds = %while.body.202 +if.else.227: ; preds = %while.body.224 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.206 + br label %if.merge.228 -if.merge.206: ; preds = %if.else.205, %if.then.204 - %bp = phi i64 [ %addN, %if.then.204 ], [ %addN, %if.else.205 ] +if.merge.228: ; preds = %if.else.227, %if.then.226 + %bp = phi i64 [ %addN, %if.then.226 ], [ %addN, %if.else.227 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -698,37 +838,29 @@ if.merge.206: ; preds = %if.else.205, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.201 + br label %while.hdr.223 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.191, label %if.merge.192 - -if.then.191: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.192: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.193, label %if.merge.194 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.193: ; preds = %if.merge.192 +if.then.58: ; 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.194 + br label %if.merge.59 -if.merge.194: ; preds = %if.then.193, %if.merge.192 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -741,15 +873,15 @@ if.merge.194: ; preds = %if.then.193, %if.me 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.195, label %if.merge.196 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.195: ; preds = %if.merge.194 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.196 + br label %if.merge.61 -if.merge.196: ; preds = %if.then.195, %if.merge.194 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -762,15 +894,15 @@ if.merge.196: ; preds = %if.then.195, %if.me 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.197, label %if.merge.198 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.197: ; preds = %if.merge.196 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.198 + br label %if.merge.63 -if.merge.198: ; preds = %if.then.197, %if.merge.196 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -783,65 +915,116 @@ if.merge.198: ; preds = %if.then.197, %if.me 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.199, label %if.merge.200 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.199: ; preds = %if.merge.198 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.200 + br label %if.merge.65 -if.merge.200: ; preds = %if.then.199, %if.merge.198 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.221, label %if.merge.222 + +if.then.221: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.222: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.207 + br label %while.hdr.229 -while.hdr.207: ; preds = %if.merge.211, %if.merge.200 +while.hdr.229: ; preds = %if.merge.233, %if.merge.222 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.208, label %while.exit.209 + br i1 %icmpN, label %while.body.230, label %while.exit.231 -while.body.208: ; preds = %while.hdr.207 +while.body.230: ; preds = %while.hdr.229 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.210, label %if.merge.211 + br i1 %icmpN, label %if.then.232, label %if.merge.233 -while.exit.209: ; preds = %if.then.210, %while.hdr.207 +while.exit.231: ; preds = %if.then.232, %while.hdr.229 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.210: ; preds = %while.body.208 - br label %while.exit.209 +if.then.232: ; preds = %while.body.230 + br label %while.exit.231 -if.merge.211: ; preds = %while.body.208 +if.merge.233: ; preds = %while.body.230 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.207 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.229 } ; Function Attrs: nounwind @@ -920,7 +1103,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -928,506 +1111,533 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 42, label %match.arm.48 - i64 44, label %match.arm.48 - i64 48, label %match.arm.48 - i64 50, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 35, label %match.arm.47 + i64 43, label %match.arm.47 + i64 45, label %match.arm.47 + i64 49, label %match.arm.47 + i64 51, label %match.arm.47 + i64 36, label %match.arm.48 + i64 40, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 37, label %match.arm.49 + i64 38, label %match.arm.49 i64 39, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 36, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 40, label %match.arm.50 - i64 41, label %match.arm.50 - i64 43, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 49, label %match.arm.50 - i64 51, label %match.arm.50 - i64 52, label %match.arm.50 - i64 13, label %match.arm.52 + i64 41, label %match.arm.49 + i64 42, label %match.arm.49 + i64 44, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 50, label %match.arm.49 + i64 52, label %match.arm.49 + i64 53, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.166, %dispatch.merge.152, %dispatch.merge.126, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.196, %dispatch.merge.182, %dispatch.merge.150, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [78 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; preds = %entry, %entry, %entry, %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.151 [ + i64 35, label %dispatch.case.152 + i64 43, label %dispatch.case.153 + i64 45, label %dispatch.case.154 + i64 49, label %dispatch.case.155 + i64 51, label %dispatch.case.156 + ] + +match.arm.48: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.183 [ + i64 36, label %dispatch.case.184 + i64 40, label %dispatch.case.185 + ] + +match.arm.49: ; preds = %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.197 [ + i64 18, label %dispatch.case.198 + i64 22, label %dispatch.case.199 + i64 24, label %dispatch.case.200 + i64 26, label %dispatch.case.201 + i64 28, label %dispatch.case.202 + i64 29, label %dispatch.case.203 + i64 31, label %dispatch.case.204 + i64 33, label %dispatch.case.205 + i64 37, label %dispatch.case.206 + i64 38, label %dispatch.case.207 + i64 39, label %dispatch.case.208 + i64 41, label %dispatch.case.209 + i64 42, label %dispatch.case.210 + i64 44, label %dispatch.case.211 + i64 46, label %dispatch.case.212 + i64 47, label %dispatch.case.213 + i64 48, label %dispatch.case.214 + i64 50, label %dispatch.case.215 + i64 52, label %dispatch.case.216 + i64 53, label %dispatch.case.217 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.127 [ - i64 42, label %dispatch.case.128 - i64 44, label %dispatch.case.129 - i64 48, label %dispatch.case.130 - i64 50, label %dispatch.case.131 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.153 [ - i64 35, label %dispatch.case.154 - i64 39, label %dispatch.case.155 - ] - -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.167 [ - i64 18, label %dispatch.case.168 - i64 22, label %dispatch.case.169 - i64 24, label %dispatch.case.170 - i64 26, label %dispatch.case.171 - i64 28, label %dispatch.case.172 - i64 29, label %dispatch.case.173 - i64 31, label %dispatch.case.174 - i64 33, label %dispatch.case.175 - i64 36, label %dispatch.case.176 - i64 37, label %dispatch.case.177 - i64 38, label %dispatch.case.178 - i64 40, label %dispatch.case.179 - i64 41, label %dispatch.case.180 - i64 43, label %dispatch.case.181 - i64 45, label %dispatch.case.182 - i64 46, label %dispatch.case.183 - i64 47, label %dispatch.case.184 - i64 49, label %dispatch.case.185 - i64 51, label %dispatch.case.186 - i64 52, label %dispatch.case.187 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [76 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [78 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.126: ; preds = %dispatch.case.131, %dispatch.case.130, %dispatch.case.129, %dispatch.case.128, %dispatch.default.127 +dispatch.case.104: ; preds = %match.arm.43 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.150: ; preds = %dispatch.case.156, %dispatch.case.155, %dispatch.case.154, %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.127: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.126 +dispatch.default.151: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.85, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.150 -dispatch.case.128: ; preds = %match.arm.48 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [1 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load78) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 - -dispatch.case.129: ; preds = %match.arm.48 +dispatch.case.152: ; preds = %match.arm.47 %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr - %ua.load82 = load [3 x { i64, i64 }], ptr %ua.ptr81, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load82) + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.case.130: ; preds = %match.arm.48 +dispatch.case.153: ; preds = %match.arm.47 %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr - %ua.load86 = load [2 x { i64, i64 }], ptr %ua.ptr85, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %ua.load86) + %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.case.131: ; preds = %match.arm.48 +dispatch.case.154: ; preds = %match.arm.47 %ua.raw88 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr89 = inttoptr i64 %ua.raw88 to ptr - %ua.load90 = load [5 x { i64, i64 }], ptr %ua.ptr89, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_5_Any(ptr %0, [5 x { i64, i64 }] %ua.load90) + %ua.load90 = load [3 x { i64, i64 }], ptr %ua.ptr89, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load90) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.merge.152: ; preds = %dispatch.case.155, %dispatch.case.154, %dispatch.default.153 +dispatch.case.155: ; preds = %match.arm.47 + %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr93 = inttoptr i64 %ua.raw92 to ptr + %ua.load94 = load [2 x { i64, i64 }], ptr %ua.ptr93, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %ua.load94) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.case.156: ; preds = %match.arm.47 + %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr97 = inttoptr i64 %ua.raw96 to ptr + %ua.load98 = load [5 x { i64, i64 }], ptr %ua.ptr97, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_5_Any(ptr %0, [5 x { i64, i64 }] %ua.load98) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +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.38 + br label %match.merge.37 -dispatch.default.153: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.152 +dispatch.default.183: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.86, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.182 -dispatch.case.154: ; preds = %match.arm.49 - %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr - %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load95) +dispatch.case.184: ; preds = %match.arm.48 + %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr + %ua.load103 = load { ptr, i64 }, ptr %ua.ptr102, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load103) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.152 + br label %dispatch.merge.182 -dispatch.case.155: ; preds = %match.arm.49 - %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr - %ua.load99 = load { ptr, i64 }, ptr %ua.ptr98, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load99) +dispatch.case.185: ; preds = %match.arm.48 + %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr + %ua.load107 = load { ptr, i64 }, ptr %ua.ptr106, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.152 + br label %dispatch.merge.182 -dispatch.merge.166: ; preds = %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.case.180, %dispatch.case.179, %dispatch.case.178, %dispatch.case.177, %dispatch.case.176, %dispatch.case.175, %dispatch.case.174, %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.default.167 +dispatch.merge.196: ; preds = %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.case.211, %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.default.197 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.167: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.166 +dispatch.default.197: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.87, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.196 -dispatch.case.168: ; preds = %match.arm.50 - %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw102 to ptr +dispatch.case.198: ; preds = %match.arm.49 + %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw110 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.166 + br label %dispatch.merge.196 -dispatch.case.169: ; preds = %match.arm.50 - %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 - %iNp105 = inttoptr i64 %ua.raw104 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp105) +dispatch.case.199: ; preds = %match.arm.49 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %iNp113 = inttoptr i64 %ua.raw112 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp113) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.170: ; preds = %match.arm.50 - %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 - %iNp108 = inttoptr i64 %ua.raw107 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp108) +dispatch.case.200: ; preds = %match.arm.49 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %iNp116 = inttoptr i64 %ua.raw115 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp116) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.171: ; preds = %match.arm.50 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %iNp111 = inttoptr i64 %ua.raw110 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp111) +dispatch.case.201: ; preds = %match.arm.49 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %iNp119 = inttoptr i64 %ua.raw118 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.172: ; preds = %match.arm.50 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %iNp114 = inttoptr i64 %ua.raw113 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp114) +dispatch.case.202: ; preds = %match.arm.49 + %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 + %iNp122 = inttoptr i64 %ua.raw121 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp122) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.173: ; preds = %match.arm.50 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp117) +dispatch.case.203: ; preds = %match.arm.49 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.174: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp120) +dispatch.case.204: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.175: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp123) +dispatch.case.205: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.176: ; preds = %match.arm.50 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp126) +dispatch.case.206: ; preds = %match.arm.49 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.177: ; preds = %match.arm.50 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp129) +dispatch.case.207: ; preds = %match.arm.49 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.178: ; preds = %match.arm.50 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp132) +dispatch.case.208: ; preds = %match.arm.49 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.179: ; preds = %match.arm.50 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp135) +dispatch.case.209: ; preds = %match.arm.49 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.180: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp138) +dispatch.case.210: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.181: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp141) +dispatch.case.211: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.182: ; preds = %match.arm.50 - %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 - %iNp144 = inttoptr i64 %ua.raw143 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp144) +dispatch.case.212: ; preds = %match.arm.49 + %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 + %iNp152 = inttoptr i64 %ua.raw151 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp152) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.183: ; preds = %match.arm.50 - %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 - %iNp147 = inttoptr i64 %ua.raw146 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp147) +dispatch.case.213: ; preds = %match.arm.49 + %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 + %iNp155 = inttoptr i64 %ua.raw154 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp155) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.184: ; preds = %match.arm.50 - %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 - %iNp150 = inttoptr i64 %ua.raw149 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp150) +dispatch.case.214: ; preds = %match.arm.49 + %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 + %iNp158 = inttoptr i64 %ua.raw157 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp158) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.185: ; preds = %match.arm.50 - %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 - %iNp153 = inttoptr i64 %ua.raw152 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_2_Any(ptr %0, ptr %iNp153) +dispatch.case.215: ; preds = %match.arm.49 + %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 + %iNp161 = inttoptr i64 %ua.raw160 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_2_Any(ptr %0, ptr %iNp161) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.186: ; preds = %match.arm.50 - %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 - %iNp156 = inttoptr i64 %ua.raw155 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_5_Any(ptr %0, ptr %iNp156) +dispatch.case.216: ; preds = %match.arm.49 + %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 + %iNp164 = inttoptr i64 %ua.raw163 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_5_Any(ptr %0, ptr %iNp164) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.187: ; preds = %match.arm.50 - %ua.raw158 = extractvalue { i64, i64 } %loadN, 1 - %iNp159 = inttoptr i64 %ua.raw158 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp159) +dispatch.case.217: ; preds = %match.arm.49 + %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 + %iNp167 = inttoptr i64 %ua.raw166 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp167) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 } ; Function Attrs: nounwind @@ -1436,7 +1646,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.85, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.88, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1467,7 +1677,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1485,9 +1695,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1525,14 +1735,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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 @@ -1540,7 +1750,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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 @@ -1550,13 +1760,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, 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 @@ -1564,7 +1774,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1576,83 +1786,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, 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.92, 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.93, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1680,18 +1814,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1704,6 +1875,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, 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.99, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, 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.101, 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 @@ -1712,11 +1922,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1736,7 +1946,7 @@ entry: %callN = call i64 @count__pack_s64_s64_s64(ptr @__sx_default_context, i64 1, i64 2, i64 3) %allocaN = alloca i64, align 8 store i64 %callN, ptr %allocaN, align 8 - %callN = call i64 @count__pack_string_bool(ptr @__sx_default_context, { ptr, i64 } { ptr @str.100, i64 1 }, i1 true) + %callN = call i64 @count__pack_string_bool(ptr @__sx_default_context, { ptr, i64 } { ptr @str.103, i64 1 }, i1 true) %allocaN = alloca i64, align 8 store i64 %callN, ptr %allocaN, align 8 %load = load i64, ptr %alloca, align 8 @@ -1856,7 +2066,7 @@ entry: define internal void @print__ct_s9aced10c9b3e5318__pack_s64_s64_s64_s64_s64(ptr %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.101, i64 15 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.104, i64 15 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1895,7 +2105,7 @@ entry: %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 5, ptr %gepN, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.102, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.105, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %ba.val25 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %loadN, 1 @@ -1961,7 +2171,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.103, i64 15 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.106, i64 15 }) ret { ptr, i64 } %call } @@ -1970,35 +2180,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.104, i64 15 }, { ptr, i64 } { ptr @str.105, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.107, i64 15 }, { ptr, i64 } { ptr @str.108, 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.81 + br label %while.hdr.105 -while.hdr.81: ; preds = %fv.merge, %entry +while.hdr.105: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.82, label %while.exit.83 + br i1 %icmp, label %while.body.106, label %while.exit.107 -while.body.82: ; preds = %while.hdr.81 +while.body.106: ; preds = %while.hdr.105 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.84, label %if.merge.85 + br i1 %icmpN, label %if.then.108, label %if.merge.109 -while.exit.83: ; preds = %while.hdr.81 +while.exit.107: ; preds = %while.hdr.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 1 }) ret { ptr, i64 } %callN -if.then.84: ; preds = %while.body.82 +if.then.108: ; preds = %while.body.106 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.85 + br label %if.merge.109 -if.merge.85: ; preds = %if.then.84, %while.body.82 +if.merge.109: ; preds = %if.then.108, %while.body.106 %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 @@ -2006,7 +2216,7 @@ if.merge.85: ; preds = %if.then.84, %while. %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.111, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, 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 @@ -2026,12 +2236,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.81 + br label %while.hdr.105 -fv.default: ; preds = %if.merge.85 +fv.default: ; preds = %if.merge.109 br label %fv.merge -fv.case: ; preds = %if.merge.85 +fv.case: ; preds = %if.merge.109 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2039,19 +2249,19 @@ fv.case: ; preds = %if.merge.85 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.85 +fv.case17: ; preds = %if.merge.109 %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.85 +fv.case20: ; preds = %if.merge.109 %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.85 +fv.case24: ; preds = %if.merge.109 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2065,43 +2275,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.112, i64 9 }, { ptr, i64 } { ptr @str.113, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.115, i64 9 }, { ptr, i64 } { ptr @str.116, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %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 }) + %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 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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.119, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.122, 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.120, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8 @@ -2120,24 +2330,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %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.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case21: ; preds = %if.merge.114 %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 @@ -2149,43 +2359,43 @@ 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.121, i64 10 }, { ptr, i64 } { ptr @str.122, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.124, i64 10 }, { ptr, i64 } { ptr @str.125, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %if.merge.95, %entry +while.hdr.115: ; preds = %if.merge.119, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.125, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.128, 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.126, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2196,7 +2406,7 @@ if.merge.95: ; preds = %if.then.94, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 } ; Function Attrs: nounwind @@ -2204,43 +2414,43 @@ 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.127, i64 3 }, { ptr, i64 } { ptr @str.128, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.130, i64 3 }, { ptr, i64 } { ptr @str.131, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.132, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.135, 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.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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 @@ -2257,12 +2467,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2273,43 +2483,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.134, i64 10 }, { ptr, i64 } { ptr @str.135, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.137, i64 10 }, { ptr, i64 } { ptr @str.138, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.140, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.143, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, 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 @@ -2327,18 +2537,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %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.105 +fv.case17: ; preds = %if.merge.129 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2349,43 +2559,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.142, i64 5 }, { ptr, i64 } { ptr @str.143, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.145, i64 5 }, { ptr, i64 } { ptr @str.146, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.152, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, 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 @@ -2404,23 +2614,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %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.110 +fv.case20: ; preds = %if.merge.134 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2434,43 +2644,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.151, i64 8 }, { ptr, i64 } { ptr @str.152, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.154, i64 8 }, { ptr, i64 } { ptr @str.155, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.158, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.161, 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.159, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, 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 @@ -2489,23 +2699,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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 @@ -2516,43 +2726,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.160, i64 17 }, { ptr, i64 } { ptr @str.161, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.163, i64 17 }, { ptr, i64 } { ptr @str.164, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.168, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.171, 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.169, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, 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 @@ -2572,12 +2782,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2585,17 +2795,17 @@ fv.case: ; preds = %if.merge.120 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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.120 +fv.case23: ; preds = %if.merge.144 %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 @@ -2606,43 +2816,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.170, i64 7 }, { ptr, i64 } { ptr @str.171, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.173, i64 7 }, { ptr, i64 } { ptr @str.174, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.176, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 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.177, i64 2 }) + %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, ptr, ptr }, ptr }, ptr %alloca, align 8 @@ -2660,12 +2870,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2673,46 +2883,96 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.181, i64 1 }, 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 = %if.merge.161, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + 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 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) + ret { ptr, i64 } %call + +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.183, 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 [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.157 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.178, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.132 + br label %while.hdr.162 -while.hdr.132: ; preds = %if.merge.136, %entry +while.hdr.162: ; preds = %if.merge.166, %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 + br i1 %icmp, label %while.body.163, label %while.exit.164 -while.body.133: ; preds = %while.hdr.132 +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.135, label %if.merge.136 + br i1 %icmpN, label %if.then.165, label %if.merge.166 -while.exit.134: ; preds = %while.hdr.132 +while.exit.164: ; preds = %while.hdr.162 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) ret { ptr, i64 } %call -if.then.135: ; preds = %while.body.133 +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.180, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.136 + br label %if.merge.166 -if.merge.136: ; preds = %if.then.135, %while.body.133 +if.merge.166: ; preds = %if.then.165, %while.body.163 %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 @@ -2730,7 +2990,7 @@ if.merge.136: ; preds = %if.then.135, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.132 + br label %while.hdr.162 } ; Function Attrs: nounwind @@ -2739,33 +2999,33 @@ entry: %alloca = alloca [3 x { 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.181, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.137 + br label %while.hdr.167 -while.hdr.137: ; preds = %if.merge.141, %entry +while.hdr.167: ; preds = %if.merge.171, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.138, label %while.exit.139 + br i1 %icmp, label %while.body.168, label %while.exit.169 -while.body.138: ; preds = %while.hdr.137 +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.140, label %if.merge.141 + br i1 %icmpN, label %if.then.170, label %if.merge.171 -while.exit.139: ; preds = %while.hdr.137 +while.exit.169: ; preds = %while.hdr.167 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) ret { ptr, i64 } %call -if.then.140: ; preds = %while.body.138 +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.183, i64 2 }) + %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 - br label %if.merge.141 + br label %if.merge.171 -if.merge.141: ; preds = %if.then.140, %while.body.138 +if.merge.171: ; preds = %if.then.170, %while.body.168 %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 @@ -2783,7 +3043,7 @@ if.merge.141: ; preds = %if.then.140, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.137 + br label %while.hdr.167 } ; Function Attrs: nounwind @@ -2792,33 +3052,33 @@ entry: %alloca = alloca [2 x { i64, i64 }], align 8 store [2 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.142 + br label %while.hdr.172 -while.hdr.142: ; preds = %if.merge.146, %entry +while.hdr.172: ; preds = %if.merge.176, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.143, label %while.exit.144 + br i1 %icmp, label %while.body.173, label %while.exit.174 -while.body.143: ; preds = %while.hdr.142 +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.145, label %if.merge.146 + br i1 %icmpN, label %if.then.175, label %if.merge.176 -while.exit.144: ; preds = %while.hdr.142 +while.exit.174: ; preds = %while.hdr.172 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) ret { ptr, i64 } %call -if.then.145: ; preds = %while.body.143 +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.186, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.146 + br label %if.merge.176 -if.merge.146: ; preds = %if.then.145, %while.body.143 +if.merge.176: ; preds = %if.then.175, %while.body.173 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load [2 x { i64, i64 }], ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2836,7 +3096,7 @@ if.merge.146: ; preds = %if.then.145, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.142 + br label %while.hdr.172 } ; Function Attrs: nounwind @@ -2845,33 +3105,33 @@ entry: %alloca = alloca [5 x { i64, i64 }], align 8 store [5 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.193, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.147 + br label %while.hdr.177 -while.hdr.147: ; preds = %if.merge.151, %entry +while.hdr.177: ; preds = %if.merge.181, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 5 - br i1 %icmp, label %while.body.148, label %while.exit.149 + br i1 %icmp, label %while.body.178, label %while.exit.179 -while.body.148: ; preds = %while.hdr.147 +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.150, label %if.merge.151 + br i1 %icmpN, label %if.then.180, label %if.merge.181 -while.exit.149: ; preds = %while.hdr.147 +while.exit.179: ; preds = %while.hdr.177 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) ret { ptr, i64 } %call -if.then.150: ; preds = %while.body.148 +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.189, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.151 + br label %if.merge.181 -if.merge.151: ; preds = %if.then.150, %while.body.148 +if.merge.181: ; preds = %if.then.180, %while.body.178 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load [5 x { i64, i64 }], ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2889,7 +3149,7 @@ if.merge.151: ; preds = %if.then.150, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.147 + br label %while.hdr.177 } ; Function Attrs: nounwind @@ -2898,35 +3158,35 @@ 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.190, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.196, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.156 + br label %while.hdr.186 -while.hdr.156: ; preds = %if.merge.160, %entry +while.hdr.186: ; preds = %if.merge.190, %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.157, label %while.exit.158 + br i1 %icmp, label %while.body.187, label %while.exit.188 -while.body.157: ; preds = %while.hdr.156 +while.body.187: ; preds = %while.hdr.186 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.159, label %if.merge.160 + br i1 %icmpN, label %if.then.189, label %if.merge.190 -while.exit.158: ; preds = %while.hdr.156 +while.exit.188: ; preds = %while.hdr.186 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 1 }) ret { ptr, i64 } %call -if.then.159: ; preds = %while.body.157 +if.then.189: ; preds = %while.body.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.160 + br label %if.merge.190 -if.merge.160: ; preds = %if.then.159, %while.body.157 +if.merge.190: ; preds = %if.then.189, %while.body.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2943,7 +3203,7 @@ if.merge.160: ; preds = %if.then.159, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.156 + br label %while.hdr.186 } ; Function Attrs: nounwind @@ -2952,35 +3212,35 @@ 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.193, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.199, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.161 + br label %while.hdr.191 -while.hdr.161: ; preds = %if.merge.165, %entry +while.hdr.191: ; preds = %if.merge.195, %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.162, label %while.exit.163 + br i1 %icmp, label %while.body.192, label %while.exit.193 -while.body.162: ; preds = %while.hdr.161 +while.body.192: ; preds = %while.hdr.191 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.164, label %if.merge.165 + br i1 %icmpN, label %if.then.194, label %if.merge.195 -while.exit.163: ; preds = %while.hdr.161 +while.exit.193: ; preds = %while.hdr.191 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.200, i64 1 }) ret { ptr, i64 } %call -if.then.164: ; preds = %while.body.162 +if.then.194: ; preds = %while.body.192 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.165 + br label %if.merge.195 -if.merge.165: ; preds = %if.then.164, %while.body.162 +if.merge.195: ; preds = %if.then.194, %while.body.192 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2997,95 +3257,11 @@ if.merge.165: ; preds = %if.then.164, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.161 + br label %while.hdr.191 } ; 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.188, label %if.else.189 - -if.then.188: ; preds = %entry - br label %if.merge.190 - -if.else.189: ; 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.198, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.190 - -if.merge.190: ; preds = %if.else.189, %if.then.188 - %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.188 ], [ %callN, %if.else.189 ] - 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.212, label %if.else.213 - -if.then.212: ; preds = %entry - br label %if.merge.214 - -if.else.213: ; 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.201, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.214 - -if.merge.214: ; preds = %if.else.213, %if.then.212 - %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.212 ], [ %callN, %if.else.213 ] - 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.215, label %if.else.216 - -if.then.215: ; preds = %entry - br label %if.merge.217 - -if.else.216: ; 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.204, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.217 - -if.merge.217: ; preds = %if.else.216, %if.then.215 - %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.215 ], [ %callN, %if.else.216 ] - 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 @@ -3103,12 +3279,96 @@ if.then.218: ; preds = %entry if.else.219: ; 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.207, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 5 }, { ptr, i64 } %callN) br label %if.merge.220 if.merge.220: ; preds = %if.else.219, %if.then.218 - %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] + %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] + 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.234, label %if.else.235 + +if.then.234: ; preds = %entry + br label %if.merge.236 + +if.else.235: ; 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.207, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.236 + +if.merge.236: ; preds = %if.else.235, %if.then.234 + %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] + 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.237, label %if.else.238 + +if.then.237: ; preds = %entry + br label %if.merge.239 + +if.else.238: ; 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.210, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.239 + +if.merge.239: ; preds = %if.else.238, %if.then.237 + %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] + 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.240, label %if.else.241 + +if.then.240: ; preds = %entry + br label %if.merge.242 + +if.else.241: ; 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.213, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.242 + +if.merge.242: ; preds = %if.else.241, %if.then.240 + %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] ret { ptr, i64 } %bp } @@ -3123,20 +3383,20 @@ entry: 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.221, label %if.else.222 + br i1 %icmp, label %if.then.243, label %if.else.244 -if.then.221: ; preds = %entry - br label %if.merge.223 +if.then.243: ; preds = %entry + br label %if.merge.245 -if.else.222: ; preds = %entry +if.else.244: ; 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.210, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.223 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.245 -if.merge.223: ; preds = %if.else.222, %if.then.221 - %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.221 ], [ %callN, %if.else.222 ] +if.merge.245: ; preds = %if.else.244, %if.then.243 + %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] ret { ptr, i64 } %bp } @@ -3150,20 +3410,20 @@ entry: 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.224, label %if.else.225 + br i1 %icmp, label %if.then.246, label %if.else.247 -if.then.224: ; preds = %entry - br label %if.merge.226 +if.then.246: ; preds = %entry + br label %if.merge.248 -if.else.225: ; preds = %entry +if.else.247: ; 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.213, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.226 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.248 -if.merge.226: ; preds = %if.else.225, %if.then.224 - %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.224 ], [ %callN, %if.else.225 ] +if.merge.248: ; preds = %if.else.247, %if.then.246 + %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] ret { ptr, i64 } %bp } @@ -3178,20 +3438,20 @@ entry: 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.227, label %if.else.228 + br i1 %icmp, label %if.then.249, label %if.else.250 -if.then.227: ; preds = %entry - br label %if.merge.229 +if.then.249: ; preds = %entry + br label %if.merge.251 -if.else.228: ; preds = %entry +if.else.250: ; 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.216, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.229 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.251 -if.merge.229: ; preds = %if.else.228, %if.then.227 - %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] +if.merge.251: ; preds = %if.else.250, %if.then.249 + %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] ret { ptr, i64 } %bp } @@ -3206,20 +3466,20 @@ entry: 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.230, label %if.else.231 + br i1 %icmp, label %if.then.252, label %if.else.253 -if.then.230: ; preds = %entry - br label %if.merge.232 +if.then.252: ; preds = %entry + br label %if.merge.254 -if.else.231: ; preds = %entry +if.else.253: ; 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.219, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.232 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.254 -if.merge.232: ; preds = %if.else.231, %if.then.230 - %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] +if.merge.254: ; preds = %if.else.253, %if.then.252 + %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] ret { ptr, i64 } %bp } @@ -3234,20 +3494,20 @@ entry: 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.233, label %if.else.234 + br i1 %icmp, label %if.then.255, label %if.else.256 -if.then.233: ; preds = %entry - br label %if.merge.235 +if.then.255: ; preds = %entry + br label %if.merge.257 -if.else.234: ; preds = %entry +if.else.256: ; 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.222, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.235 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.257 -if.merge.235: ; preds = %if.else.234, %if.then.233 - %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] +if.merge.257: ; preds = %if.else.256, %if.then.255 + %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] ret { ptr, i64 } %bp } @@ -3262,20 +3522,20 @@ entry: 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.236, label %if.else.237 + br i1 %icmp, label %if.then.258, label %if.else.259 -if.then.236: ; preds = %entry - br label %if.merge.238 +if.then.258: ; preds = %entry + br label %if.merge.260 -if.else.237: ; preds = %entry +if.else.259: ; 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.225, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.238 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.260 -if.merge.238: ; preds = %if.else.237, %if.then.236 - %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] +if.merge.260: ; preds = %if.else.259, %if.then.258 + %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] ret { ptr, i64 } %bp } @@ -3290,20 +3550,20 @@ entry: 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.239, label %if.else.240 + br i1 %icmp, label %if.then.261, label %if.else.262 -if.then.239: ; preds = %entry - br label %if.merge.241 +if.then.261: ; preds = %entry + br label %if.merge.263 -if.else.240: ; preds = %entry +if.else.262: ; 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.228, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.241 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.263 -if.merge.241: ; preds = %if.else.240, %if.then.239 - %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] +if.merge.263: ; preds = %if.else.262, %if.then.261 + %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] ret { ptr, i64 } %bp } @@ -3318,20 +3578,20 @@ entry: 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.242, label %if.else.243 + br i1 %icmp, label %if.then.264, label %if.else.265 -if.then.242: ; preds = %entry - br label %if.merge.244 +if.then.264: ; preds = %entry + br label %if.merge.266 -if.else.243: ; preds = %entry +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.231, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.244 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.266 -if.merge.244: ; preds = %if.else.243, %if.then.242 - %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] +if.merge.266: ; preds = %if.else.265, %if.then.264 + %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] ret { ptr, i64 } %bp } @@ -3346,20 +3606,20 @@ entry: 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.245, label %if.else.246 + br i1 %icmp, label %if.then.267, label %if.else.268 -if.then.245: ; preds = %entry - br label %if.merge.247 +if.then.267: ; preds = %entry + br label %if.merge.269 -if.else.246: ; preds = %entry +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.234, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.247 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.269 -if.merge.247: ; preds = %if.else.246, %if.then.245 - %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] +if.merge.269: ; preds = %if.else.268, %if.then.267 + %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] ret { ptr, i64 } %bp } @@ -3374,20 +3634,20 @@ entry: 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 + br i1 %icmp, label %if.then.270, label %if.else.271 -if.then.248: ; preds = %entry - br label %if.merge.250 +if.then.270: ; preds = %entry + br label %if.merge.272 -if.else.249: ; preds = %entry +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.237, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.250 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.272 -if.merge.250: ; preds = %if.else.249, %if.then.248 - %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] +if.merge.272: ; preds = %if.else.271, %if.then.270 + %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ] ret { ptr, i64 } %bp } @@ -3402,20 +3662,20 @@ entry: 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.251, label %if.else.252 + br i1 %icmp, label %if.then.273, label %if.else.274 -if.then.251: ; preds = %entry - br label %if.merge.253 +if.then.273: ; preds = %entry + br label %if.merge.275 -if.else.252: ; preds = %entry +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.240, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.253 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.275 -if.merge.253: ; preds = %if.else.252, %if.then.251 - %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] +if.merge.275: ; preds = %if.else.274, %if.then.273 + %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ] ret { ptr, i64 } %bp } @@ -3430,20 +3690,20 @@ entry: 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.254, label %if.else.255 + br i1 %icmp, label %if.then.276, label %if.else.277 -if.then.254: ; preds = %entry - br label %if.merge.256 +if.then.276: ; preds = %entry + br label %if.merge.278 -if.else.255: ; preds = %entry +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.243, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.256 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.278 -if.merge.256: ; preds = %if.else.255, %if.then.254 - %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] +if.merge.278: ; preds = %if.else.277, %if.then.276 + %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.276 ], [ %callN, %if.else.277 ] ret { ptr, i64 } %bp } @@ -3458,20 +3718,20 @@ entry: 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.257, label %if.else.258 + br i1 %icmp, label %if.then.279, label %if.else.280 -if.then.257: ; preds = %entry - br label %if.merge.259 +if.then.279: ; preds = %entry + br label %if.merge.281 -if.else.258: ; preds = %entry +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.246, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.259 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.281 -if.merge.259: ; preds = %if.else.258, %if.then.257 - %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] +if.merge.281: ; preds = %if.else.280, %if.then.279 + %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.279 ], [ %callN, %if.else.280 ] ret { ptr, i64 } %bp } @@ -3486,20 +3746,20 @@ entry: 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.260, label %if.else.261 + br i1 %icmp, label %if.then.282, label %if.else.283 -if.then.260: ; preds = %entry - br label %if.merge.262 +if.then.282: ; preds = %entry + br label %if.merge.284 -if.else.261: ; preds = %entry +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.249, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.262 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.284 -if.merge.262: ; preds = %if.else.261, %if.then.260 - %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] +if.merge.284: ; preds = %if.else.283, %if.then.282 + %bp = phi { ptr, i64 } [ { ptr @str.253, i64 4 }, %if.then.282 ], [ %callN, %if.else.283 ] ret { ptr, i64 } %bp } @@ -3514,20 +3774,20 @@ entry: 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.263, label %if.else.264 + br i1 %icmp, label %if.then.285, label %if.else.286 -if.then.263: ; preds = %entry - br label %if.merge.265 +if.then.285: ; preds = %entry + br label %if.merge.287 -if.else.264: ; preds = %entry +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.252, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.265 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.287 -if.merge.265: ; preds = %if.else.264, %if.then.263 - %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] +if.merge.287: ; preds = %if.else.286, %if.then.285 + %bp = phi { ptr, i64 } [ { ptr @str.256, i64 4 }, %if.then.285 ], [ %callN, %if.else.286 ] ret { ptr, i64 } %bp } @@ -3542,23 +3802,21 @@ entry: 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.266, label %if.else.267 + br i1 %icmp, label %if.then.288, label %if.else.289 -if.then.266: ; preds = %entry - br label %if.merge.268 +if.then.288: ; preds = %entry + br label %if.merge.290 -if.else.267: ; preds = %entry +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.255, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.268 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.261, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.290 -if.merge.268: ; preds = %if.else.267, %if.then.266 - %bp = phi { ptr, i64 } [ { ptr @str.253, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] +if.merge.290: ; preds = %if.else.289, %if.then.288 + %bp = phi { ptr, i64 } [ { ptr @str.259, i64 4 }, %if.then.288 ], [ %callN, %if.else.289 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0513-packs-pack-mixed-comptime.ir b/examples/expected/0513-packs-pack-mixed-comptime.ir index 6a9b952..2d7ffd8 100644 --- a/examples/expected/0513-packs-pack-mixed-comptime.ir +++ b/examples/expected/0513-packs-pack-mixed-comptime.ir @@ -1,183 +1,184 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [72 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.42 = private constant [5 x i8] c"*s64\00" -@tn.str.43 = private constant [7 x i8] c"**void\00" -@tn.str.44 = private constant [6 x i8] c"[]Any\00" -@tn.str.45 = private constant [5 x i8] c"*Any\00" -@tn.str.46 = private constant [7 x i8] c"[3]Any\00" -@tn.str.47 = private constant [8 x i8] c"*[3]Any\00" -@tn.str.48 = private constant [7 x i8] c"*[]Any\00" -@tn.str.49 = private constant [8 x i8] c"*string\00" -@tn.str.50 = private constant [7 x i8] c"[1]Any\00" -@tn.str.51 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.52 = private constant [4 x i8] c"*u8\00" -@tn.str.53 = private constant [6 x i8] c"*bool\00" -@tn.str.54 = private constant [5 x i8] c"*f64\00" -@tn.str.55 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.56 = private constant [11 x i8] c"*Allocator\00" -@tn.str.57 = private constant [9 x i8] c"*Context\00" -@tn.str.58 = private constant [10 x i8] c"*[]string\00" -@tn.str.59 = private constant [6 x i8] c"**GPA\00" -@tn.str.60 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.61 = private constant [8 x i8] c"**Arena\00" -@tn.str.62 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.63 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.64 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.65 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.66 = private constant [6 x i8] c"**s64\00" -@tn.str.67 = private constant [8 x i8] c"***void\00" -@tn.str.68 = private constant [6 x i8] c"**Any\00" -@tn.str.69 = private constant [9 x i8] c"**[3]Any\00" -@tn.str.70 = private constant [8 x i8] c"**[]Any\00" -@tn.str.71 = private constant [9 x i8] c"**string\00" -@tn.str.72 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.73 = private constant [5 x i8] c"**u8\00" -@tn.str.74 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [70 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 5 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 7 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 4 }, { ptr, i64 } { ptr @tn.str.55, i64 16 }, { ptr, i64 } { ptr @tn.str.56, i64 10 }, { ptr, i64 } { ptr @tn.str.57, i64 8 }, { ptr, i64 } { ptr @tn.str.58, i64 9 }, { ptr, i64 } { ptr @tn.str.59, i64 5 }, { ptr, i64 } { ptr @tn.str.60, i64 12 }, { ptr, i64 } { ptr @tn.str.61, i64 7 }, { ptr, i64 } { ptr @tn.str.62, i64 6 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 19 }, { ptr, i64 } { ptr @tn.str.65, i64 13 }, { ptr, i64 } { ptr @tn.str.66, i64 5 }, { ptr, i64 } { ptr @tn.str.67, i64 7 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 7 }, { ptr, i64 } { ptr @tn.str.71, i64 8 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 4 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }] -@str.75 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.76 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.77 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [13 x i8] c"**CAllocator\00" +@tn.str.44 = private constant [5 x i8] c"*s64\00" +@tn.str.45 = private constant [7 x i8] c"**void\00" +@tn.str.46 = private constant [6 x i8] c"[]Any\00" +@tn.str.47 = private constant [5 x i8] c"*Any\00" +@tn.str.48 = private constant [7 x i8] c"[3]Any\00" +@tn.str.49 = private constant [8 x i8] c"*[3]Any\00" +@tn.str.50 = private constant [7 x i8] c"*[]Any\00" +@tn.str.51 = private constant [8 x i8] c"*string\00" +@tn.str.52 = private constant [7 x i8] c"[1]Any\00" +@tn.str.53 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.54 = private constant [4 x i8] c"*u8\00" +@tn.str.55 = private constant [6 x i8] c"*bool\00" +@tn.str.56 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.57 = private constant [5 x i8] c"*f64\00" +@tn.str.58 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.59 = private constant [11 x i8] c"*Allocator\00" +@tn.str.60 = private constant [9 x i8] c"*Context\00" +@tn.str.61 = private constant [10 x i8] c"*[]string\00" +@tn.str.62 = private constant [6 x i8] c"**GPA\00" +@tn.str.63 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.64 = private constant [8 x i8] c"**Arena\00" +@tn.str.65 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.66 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.67 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.68 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.69 = private constant [6 x i8] c"**s64\00" +@tn.str.70 = private constant [8 x i8] c"***void\00" +@tn.str.71 = private constant [6 x i8] c"**Any\00" +@tn.str.72 = private constant [9 x i8] c"**[3]Any\00" +@tn.str.73 = private constant [8 x i8] c"**[]Any\00" +@tn.str.74 = private constant [9 x i8] c"**string\00" +@tn.str.75 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.76 = private constant [5 x i8] c"**u8\00" +@tn.str.77 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [72 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 12 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 5 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 3 }, { ptr, i64 } { ptr @tn.str.55, i64 5 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 16 }, { ptr, i64 } { ptr @tn.str.59, i64 10 }, { ptr, i64 } { ptr @tn.str.60, i64 8 }, { ptr, i64 } { ptr @tn.str.61, i64 9 }, { ptr, i64 } { ptr @tn.str.62, i64 5 }, { ptr, i64 } { ptr @tn.str.63, i64 12 }, { ptr, i64 } { ptr @tn.str.64, i64 7 }, { ptr, i64 } { ptr @tn.str.65, i64 6 }, { ptr, i64 } { ptr @tn.str.66, i64 10 }, { ptr, i64 } { ptr @tn.str.67, i64 19 }, { ptr, i64 } { ptr @tn.str.68, i64 13 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 7 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 8 }, { ptr, i64 } { ptr @tn.str.76, i64 4 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }] @str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.79 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.80 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.81 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.82 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.83 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.84 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.85 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.86 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.87 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.82 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.86 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.87 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.88 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.89 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.90 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.91 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.92 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.93 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.94 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.96 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.97 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.98 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.99 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.100 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.94 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.95 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.96 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.97 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.99 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.100 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.101 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.102 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.103 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.101 = private constant [5 x i8] c"line\00" -@fld.str.102 = private constant [4 x i8] c"col\00" -@fld.str.103 = 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.101, i64 4 }, { ptr, i64 } { ptr @fld.str.102, i64 3 }, { ptr, i64 } { ptr @fld.str.103, i64 4 }] -@str.104 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.105 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.106 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.107 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.109 = private constant [4 x i8] c"ctx\00" -@fld.str.110 = private constant [6 x i8] c"alloc\00" -@fld.str.111 = private constant [8 x i8] c"dealloc\00" -@field_names.112 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.109, i64 3 }, { ptr, i64 } { ptr @fld.str.110, i64 5 }, { ptr, i64 } { ptr @fld.str.111, i64 7 }] -@str.113 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.114 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.115 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.116 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.117 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.118 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.119 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.120 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.121 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.122 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.124 = private constant [12 x i8] c"alloc_count\00" -@field_names.125 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.124, i64 11 }] -@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.127 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.131 = private constant [5 x i8] c"next\00" -@fld.str.132 = private constant [4 x i8] c"cap\00" -@field_names.133 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.131, i64 4 }, { ptr, i64 } { ptr @fld.str.132, i64 3 }] -@str.134 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.135 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.136 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.139 = private constant [6 x i8] c"first\00" -@fld.str.140 = private constant [10 x i8] c"end_index\00" -@fld.str.141 = private constant [7 x i8] c"parent\00" -@field_names.142 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.139, i64 5 }, { ptr, i64 } { ptr @fld.str.140, i64 9 }, { ptr, i64 } { ptr @fld.str.141, i64 6 }] -@str.143 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.144 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.145 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.146 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.148 = private constant [4 x i8] c"buf\00" -@fld.str.149 = private constant [4 x i8] c"len\00" -@fld.str.150 = private constant [4 x i8] c"pos\00" -@field_names.151 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.148, i64 3 }, { ptr, i64 } { ptr @fld.str.149, i64 3 }, { ptr, i64 } { ptr @fld.str.150, i64 3 }] -@str.152 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.153 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.154 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.156 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.157 = private constant [7 x i8] c"parent\00" -@fld.str.158 = private constant [12 x i8] c"alloc_count\00" -@fld.str.159 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.160 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.161 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.157, i64 6 }, { ptr, i64 } { ptr @fld.str.158, i64 11 }, { ptr, i64 } { ptr @fld.str.159, i64 13 }, { ptr, i64 } { ptr @fld.str.160, i64 17 }] -@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.163 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.167 = private constant [10 x i8] c"allocator\00" -@fld.str.168 = private constant [5 x i8] c"data\00" -@field_names.169 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 9 }, { ptr, i64 } { ptr @fld.str.168, i64 4 }] -@str.170 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.104 = private constant [5 x i8] c"line\00" +@fld.str.105 = private constant [4 x i8] c"col\00" +@fld.str.106 = 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.104, i64 4 }, { ptr, i64 } { ptr @fld.str.105, i64 3 }, { ptr, i64 } { ptr @fld.str.106, i64 4 }] +@str.107 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.108 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.109 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.110 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.112 = private constant [4 x i8] c"ctx\00" +@fld.str.113 = private constant [6 x i8] c"alloc\00" +@fld.str.114 = private constant [8 x i8] c"dealloc\00" +@field_names.115 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.112, i64 3 }, { ptr, i64 } { ptr @fld.str.113, i64 5 }, { ptr, i64 } { ptr @fld.str.114, i64 7 }] +@str.116 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.117 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.118 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.119 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.121 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.122 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.123 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.124 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.125 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.127 = private constant [12 x i8] c"alloc_count\00" +@field_names.128 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.127, i64 11 }] +@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.130 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.134 = private constant [5 x i8] c"next\00" +@fld.str.135 = private constant [4 x i8] c"cap\00" +@field_names.136 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 4 }, { ptr, i64 } { ptr @fld.str.135, i64 3 }] +@str.137 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.138 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.141 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.142 = private constant [6 x i8] c"first\00" +@fld.str.143 = private constant [10 x i8] c"end_index\00" +@fld.str.144 = private constant [7 x i8] c"parent\00" +@field_names.145 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.142, i64 5 }, { ptr, i64 } { ptr @fld.str.143, i64 9 }, { ptr, i64 } { ptr @fld.str.144, i64 6 }] +@str.146 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.147 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.148 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.149 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.150 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.151 = private constant [4 x i8] c"buf\00" +@fld.str.152 = private constant [4 x i8] c"len\00" +@fld.str.153 = private constant [4 x i8] c"pos\00" +@field_names.154 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.151, i64 3 }, { ptr, i64 } { ptr @fld.str.152, i64 3 }, { ptr, i64 } { ptr @fld.str.153, i64 3 }] +@str.155 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.156 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.157 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.158 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.159 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.160 = private constant [7 x i8] c"parent\00" +@fld.str.161 = private constant [12 x i8] c"alloc_count\00" +@fld.str.162 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.163 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.164 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.160, i64 6 }, { ptr, i64 } { ptr @fld.str.161, i64 11 }, { ptr, i64 } { ptr @fld.str.162, i64 13 }, { ptr, i64 } { ptr @fld.str.163, i64 17 }] +@str.165 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.166 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.167 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.170 = private constant [10 x i8] c"allocator\00" +@fld.str.171 = private constant [5 x i8] c"data\00" +@field_names.172 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.170, i64 9 }, { ptr, i64 } { ptr @fld.str.171, i64 4 }] +@str.173 = private unnamed_addr constant [3 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 [2 x i8] c"]\00", align 1 @str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -187,60 +188,66 @@ @str.180 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.181 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.182 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.183 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.184 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.185 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.186 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.187 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.188 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.183 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.186 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.187 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.188 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.189 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.190 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.190 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.191 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.192 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.193 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.193 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.194 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.195 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.196 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.196 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.197 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.198 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.199 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.199 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.200 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.201 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.202 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.202 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.203 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.204 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.205 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.205 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.206 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.207 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.208 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.208 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.209 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.210 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.211 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.211 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.212 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.213 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.214 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.214 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.215 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.216 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.217 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.217 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.218 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.219 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.220 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 +@str.220 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.221 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.222 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.223 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.223 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.224 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.225 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.226 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.226 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 @str.227 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.228 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.229 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.229 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.230 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.231 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.232 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.232 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.233 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.234 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.235 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.235 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.236 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.237 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.238 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.239 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.240 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.241 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.242 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -379,38 +386,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -423,50 +435,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -480,19 +620,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -509,15 +649,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -535,16 +675,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -561,17 +701,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -634,39 +774,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.187 + br label %while.hdr.209 -while.hdr.187: ; preds = %if.merge.192, %entry +while.hdr.209: ; preds = %if.merge.214, %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.188, label %while.exit.189 + br i1 %icmp, label %while.body.210, label %while.exit.211 -while.body.188: ; preds = %while.hdr.187 +while.body.210: ; preds = %while.hdr.209 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.190, label %if.else.191 + br i1 %icmpN, label %if.then.212, label %if.else.213 -while.exit.189: ; preds = %while.hdr.187 +while.exit.211: ; preds = %while.hdr.209 ret void -if.then.190: ; preds = %while.body.188 +if.then.212: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.192 + br label %if.merge.214 -if.else.191: ; preds = %while.body.188 +if.else.213: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.192 + br label %if.merge.214 -if.merge.192: ; preds = %if.else.191, %if.then.190 - %bp = phi i64 [ %addN, %if.then.190 ], [ %addN, %if.else.191 ] +if.merge.214: ; preds = %if.else.213, %if.then.212 + %bp = phi i64 [ %addN, %if.then.212 ], [ %addN, %if.else.213 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -679,37 +819,29 @@ if.merge.192: ; preds = %if.else.191, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.187 + br label %while.hdr.209 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.177, label %if.merge.178 - -if.then.177: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.178: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.179, label %if.merge.180 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.179: ; preds = %if.merge.178 +if.then.58: ; 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.180 + br label %if.merge.59 -if.merge.180: ; preds = %if.then.179, %if.merge.178 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -722,15 +854,15 @@ if.merge.180: ; preds = %if.then.179, %if.me 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.181, label %if.merge.182 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.181: ; preds = %if.merge.180 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.182 + br label %if.merge.61 -if.merge.182: ; preds = %if.then.181, %if.merge.180 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -743,15 +875,15 @@ if.merge.182: ; preds = %if.then.181, %if.me 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.183, label %if.merge.184 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.183: ; preds = %if.merge.182 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.184 + br label %if.merge.63 -if.merge.184: ; preds = %if.then.183, %if.merge.182 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -764,65 +896,116 @@ if.merge.184: ; preds = %if.then.183, %if.me 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.185, label %if.merge.186 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.185: ; preds = %if.merge.184 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.186 + br label %if.merge.65 -if.merge.186: ; preds = %if.then.185, %if.merge.184 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.207, label %if.merge.208 + +if.then.207: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.208: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.193 + br label %while.hdr.215 -while.hdr.193: ; preds = %if.merge.197, %if.merge.186 +while.hdr.215: ; preds = %if.merge.219, %if.merge.208 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.194, label %while.exit.195 + br i1 %icmpN, label %while.body.216, label %while.exit.217 -while.body.194: ; preds = %while.hdr.193 +while.body.216: ; preds = %while.hdr.215 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.196, label %if.merge.197 + br i1 %icmpN, label %if.then.218, label %if.merge.219 -while.exit.195: ; preds = %if.then.196, %while.hdr.193 +while.exit.217: ; preds = %if.then.218, %while.hdr.215 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.196: ; preds = %while.body.194 - br label %while.exit.195 +if.then.218: ; preds = %while.body.216 + br label %while.exit.217 -if.merge.197: ; preds = %while.body.194 +if.merge.219: ; preds = %while.body.216 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.193 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.215 } ; Function Attrs: nounwind @@ -901,7 +1084,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -909,468 +1092,495 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 41, label %match.arm.48 - i64 45, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 35, label %match.arm.47 + i64 42, label %match.arm.47 + i64 46, label %match.arm.47 + i64 36, label %match.arm.48 + i64 40, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 37, label %match.arm.49 + i64 38, label %match.arm.49 i64 39, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 36, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 40, label %match.arm.50 - i64 42, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 13, label %match.arm.52 + i64 41, label %match.arm.49 + i64 43, label %match.arm.49 + i64 44, label %match.arm.49 + i64 45, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 49, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.154, %dispatch.merge.140, %dispatch.merge.126, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.150, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [72 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable +match.arm.47: ; preds = %entry, %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.151 [ + i64 35, label %dispatch.case.152 + i64 42, label %dispatch.case.153 + i64 46, label %dispatch.case.154 + ] match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.127 [ - i64 41, label %dispatch.case.128 - i64 45, label %dispatch.case.129 + switch i64 %ua.raw24, label %dispatch.default.171 [ + i64 36, label %dispatch.case.172 + i64 40, label %dispatch.case.173 ] -match.arm.49: ; preds = %entry, %entry +match.arm.49: ; preds = %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.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.141 [ - i64 35, label %dispatch.case.142 - i64 39, label %dispatch.case.143 + switch i64 %ua.raw28, label %dispatch.default.185 [ + i64 18, label %dispatch.case.186 + i64 22, label %dispatch.case.187 + i64 24, label %dispatch.case.188 + i64 26, label %dispatch.case.189 + i64 28, label %dispatch.case.190 + i64 29, label %dispatch.case.191 + i64 31, label %dispatch.case.192 + i64 33, label %dispatch.case.193 + i64 37, label %dispatch.case.194 + i64 38, label %dispatch.case.195 + i64 39, label %dispatch.case.196 + i64 41, label %dispatch.case.197 + i64 43, label %dispatch.case.198 + i64 44, label %dispatch.case.199 + i64 45, label %dispatch.case.200 + i64 47, label %dispatch.case.201 + i64 48, label %dispatch.case.202 + i64 49, label %dispatch.case.203 ] -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.155 [ - i64 18, label %dispatch.case.156 - i64 22, label %dispatch.case.157 - i64 24, label %dispatch.case.158 - i64 26, label %dispatch.case.159 - i64 28, label %dispatch.case.160 - i64 29, label %dispatch.case.161 - i64 31, label %dispatch.case.162 - i64 33, label %dispatch.case.163 - i64 36, label %dispatch.case.164 - i64 37, label %dispatch.case.165 - i64 38, label %dispatch.case.166 - i64 40, label %dispatch.case.167 - i64 42, label %dispatch.case.168 - i64 43, label %dispatch.case.169 - i64 44, label %dispatch.case.170 - i64 46, label %dispatch.case.171 - i64 47, label %dispatch.case.172 - i64 48, label %dispatch.case.173 - ] - -match.arm.51: ; No predecessors! +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [70 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [72 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.75, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.126: ; preds = %dispatch.case.129, %dispatch.case.128, %dispatch.default.127 +dispatch.case.104: ; preds = %match.arm.43 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.150: ; preds = %dispatch.case.154, %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.127: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.76, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.126 +dispatch.default.151: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.150 -dispatch.case.128: ; preds = %match.arm.48 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [3 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load78) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 - -dispatch.case.129: ; preds = %match.arm.48 +dispatch.case.152: ; preds = %match.arm.47 %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr - %ua.load82 = load [1 x { i64, i64 }], ptr %ua.ptr81, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load82) + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.merge.140: ; preds = %dispatch.case.143, %dispatch.case.142, %dispatch.default.141 +dispatch.case.153: ; preds = %match.arm.47 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [3 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load86) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.case.154: ; preds = %match.arm.47 + %ua.raw88 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr89 = inttoptr i64 %ua.raw88 to ptr + %ua.load90 = load [1 x { i64, i64 }], ptr %ua.ptr89, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load90) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.141: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.140 +dispatch.default.171: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.170 -dispatch.case.142: ; preds = %match.arm.49 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.172: ; preds = %match.arm.48 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.case.143: ; preds = %match.arm.49 - %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr - %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load91) +dispatch.case.173: ; preds = %match.arm.48 + %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr + %ua.load99 = load { ptr, i64 }, ptr %ua.ptr98, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load99) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.merge.154: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.default.155 +dispatch.merge.184: ; preds = %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.155: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.154 +dispatch.default.185: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.184 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw94 to ptr +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw102 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.154 + br label %dispatch.merge.184 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 - %iNp97 = inttoptr i64 %ua.raw96 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp97) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 + %iNp105 = inttoptr i64 %ua.raw104 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp105) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw99 = extractvalue { i64, i64 } %loadN, 1 - %iNp100 = inttoptr i64 %ua.raw99 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp100) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 + %iNp108 = inttoptr i64 %ua.raw107 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp108) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 - %iNp103 = inttoptr i64 %ua.raw102 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp103) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 + %iNp111 = inttoptr i64 %ua.raw110 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp111) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 - %iNp106 = inttoptr i64 %ua.raw105 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp106) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %iNp114 = inttoptr i64 %ua.raw113 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp114) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 - %iNp109 = inttoptr i64 %ua.raw108 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp109) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 + %iNp117 = inttoptr i64 %ua.raw116 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp117) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 - %iNp112 = inttoptr i64 %ua.raw111 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp112) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 + %iNp120 = inttoptr i64 %ua.raw119 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %iNp115 = inttoptr i64 %ua.raw114 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp115) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 + %iNp123 = inttoptr i64 %ua.raw122 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp123) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 - %iNp118 = inttoptr i64 %ua.raw117 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp118) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 + %iNp126 = inttoptr i64 %ua.raw125 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp126) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 - %iNp121 = inttoptr i64 %ua.raw120 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp121) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 + %iNp129 = inttoptr i64 %ua.raw128 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp129) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 - %iNp124 = inttoptr i64 %ua.raw123 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp124) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 + %iNp132 = inttoptr i64 %ua.raw131 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp132) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 - %iNp127 = inttoptr i64 %ua.raw126 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp127) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 + %iNp135 = inttoptr i64 %ua.raw134 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp135) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.168: ; preds = %match.arm.50 - %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 - %iNp130 = inttoptr i64 %ua.raw129 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp130) +dispatch.case.198: ; preds = %match.arm.49 + %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 + %iNp138 = inttoptr i64 %ua.raw137 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp138) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.169: ; preds = %match.arm.50 - %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 - %iNp133 = inttoptr i64 %ua.raw132 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp133) +dispatch.case.199: ; preds = %match.arm.49 + %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 + %iNp141 = inttoptr i64 %ua.raw140 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp141) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.170: ; preds = %match.arm.50 - %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 - %iNp136 = inttoptr i64 %ua.raw135 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp136) +dispatch.case.200: ; preds = %match.arm.49 + %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 + %iNp144 = inttoptr i64 %ua.raw143 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp144) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.171: ; preds = %match.arm.50 - %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 - %iNp139 = inttoptr i64 %ua.raw138 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp139) +dispatch.case.201: ; preds = %match.arm.49 + %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 + %iNp147 = inttoptr i64 %ua.raw146 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp147) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.172: ; preds = %match.arm.50 - %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 - %iNp142 = inttoptr i64 %ua.raw141 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp142) +dispatch.case.202: ; preds = %match.arm.49 + %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 + %iNp150 = inttoptr i64 %ua.raw149 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp150) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.173: ; preds = %match.arm.50 - %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 - %iNp145 = inttoptr i64 %ua.raw144 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp145) +dispatch.case.203: ; preds = %match.arm.49 + %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 + %iNp153 = inttoptr i64 %ua.raw152 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp153) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 } ; Function Attrs: nounwind @@ -1379,7 +1589,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.79, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.82, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1410,7 +1620,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1428,9 +1638,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1468,14 +1678,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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 @@ -1483,7 +1693,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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 @@ -1493,13 +1703,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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 @@ -1507,7 +1717,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1519,83 +1729,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, 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.86, 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.87, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1623,18 +1757,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1647,6 +1818,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, 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.93, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, 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.95, 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 @@ -1655,11 +1865,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1728,7 +1938,7 @@ entry: define internal void @print__ct_sbc6305862a3a863d__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.94, i64 3 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.97, i64 3 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1743,7 +1953,7 @@ entry: %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.95, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.98, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %ba.val9 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %loadN, 1 @@ -1765,7 +1975,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.99, i64 3 }) ret { ptr, i64 } %call } @@ -1790,35 +2000,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.97, i64 15 }, { ptr, i64 } { ptr @str.98, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.100, i64 15 }, { ptr, i64 } { ptr @str.101, 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.81 + br label %while.hdr.105 -while.hdr.81: ; preds = %fv.merge, %entry +while.hdr.105: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.82, label %while.exit.83 + br i1 %icmp, label %while.body.106, label %while.exit.107 -while.body.82: ; preds = %while.hdr.81 +while.body.106: ; preds = %while.hdr.105 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.84, label %if.merge.85 + br i1 %icmpN, label %if.then.108, label %if.merge.109 -while.exit.83: ; preds = %while.hdr.81 +while.exit.107: ; preds = %while.hdr.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 1 }) ret { ptr, i64 } %callN -if.then.84: ; preds = %while.body.82 +if.then.108: ; preds = %while.body.106 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.85 + br label %if.merge.109 -if.merge.85: ; preds = %if.then.84, %while.body.82 +if.merge.109: ; preds = %if.then.108, %while.body.106 %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 @@ -1826,7 +2036,7 @@ if.merge.85: ; preds = %if.then.84, %while. %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.104, i64 2 }) + %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 { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -1846,12 +2056,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.81 + br label %while.hdr.105 -fv.default: ; preds = %if.merge.85 +fv.default: ; preds = %if.merge.109 br label %fv.merge -fv.case: ; preds = %if.merge.85 +fv.case: ; preds = %if.merge.109 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1859,19 +2069,19 @@ fv.case: ; preds = %if.merge.85 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.85 +fv.case17: ; preds = %if.merge.109 %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.85 +fv.case20: ; preds = %if.merge.109 %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.85 +fv.case24: ; preds = %if.merge.109 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1885,43 +2095,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.105, i64 9 }, { ptr, i64 } { ptr @str.106, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.108, i64 9 }, { ptr, i64 } { ptr @str.109, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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.112, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.115, 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.113, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, 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 @@ -1940,24 +2150,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %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.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case21: ; preds = %if.merge.114 %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 @@ -1969,43 +2179,43 @@ 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.114, i64 10 }, { ptr, i64 } { ptr @str.115, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.117, i64 10 }, { ptr, i64 } { ptr @str.118, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %if.merge.95, %entry +while.hdr.115: ; preds = %if.merge.119, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.118, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.121, 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.119, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2016,7 +2226,7 @@ if.merge.95: ; preds = %if.then.94, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 } ; Function Attrs: nounwind @@ -2024,43 +2234,43 @@ 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.120, i64 3 }, { ptr, i64 } { ptr @str.121, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.123, i64 3 }, { ptr, i64 } { ptr @str.124, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.125, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.128, 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.126, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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 @@ -2077,12 +2287,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2093,43 +2303,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.127, i64 10 }, { ptr, i64 } { ptr @str.128, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.130, i64 10 }, { ptr, i64 } { ptr @str.131, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.133, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.136, 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.134, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 @@ -2147,18 +2357,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %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.105 +fv.case17: ; preds = %if.merge.129 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2169,43 +2379,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.135, i64 5 }, { ptr, i64 } { ptr @str.136, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 5 }, { ptr, i64 } { ptr @str.139, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) + %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 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.142, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.145, 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.143, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, 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 @@ -2224,23 +2434,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %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.110 +fv.case20: ; preds = %if.merge.134 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2254,43 +2464,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.144, i64 8 }, { ptr, i64 } { ptr @str.145, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.147, i64 8 }, { ptr, i64 } { ptr @str.148, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) + %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 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.151, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.154, 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.152, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, 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 @@ -2309,23 +2519,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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 @@ -2336,43 +2546,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.153, i64 17 }, { ptr, i64 } { ptr @str.154, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.156, i64 17 }, { ptr, i64 } { ptr @str.157, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.161, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.164, 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.162, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, 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 @@ -2392,12 +2602,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2405,17 +2615,17 @@ fv.case: ; preds = %if.merge.120 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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.120 +fv.case23: ; preds = %if.merge.144 %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 @@ -2426,43 +2636,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.163, i64 7 }, { ptr, i64 } { ptr @str.164, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 7 }, { ptr, i64 } { ptr @str.167, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.169, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.172, 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.170, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, 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 @@ -2480,12 +2690,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2493,46 +2703,96 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.174, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.155 + +while.hdr.155: ; preds = %if.merge.159, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.156, label %while.exit.157 + +while.body.156: ; preds = %while.hdr.155 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.158, label %if.merge.159 + +while.exit.157: ; preds = %while.hdr.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) + ret { ptr, i64 } %call + +if.then.158: ; preds = %while.body.156 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.159 + +if.merge.159: ; preds = %if.then.158, %while.body.156 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.155 +} + ; 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 store [3 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.171, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.177, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.130 + br label %while.hdr.160 -while.hdr.130: ; preds = %if.merge.134, %entry +while.hdr.160: ; preds = %if.merge.164, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.131, label %while.exit.132 + br i1 %icmp, label %while.body.161, label %while.exit.162 -while.body.131: ; preds = %while.hdr.130 +while.body.161: ; preds = %while.hdr.160 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.133, label %if.merge.134 + br i1 %icmpN, label %if.then.163, label %if.merge.164 -while.exit.132: ; preds = %while.hdr.130 +while.exit.162: ; preds = %while.hdr.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) ret { ptr, i64 } %call -if.then.133: ; preds = %while.body.131 +if.then.163: ; preds = %while.body.161 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.134 + br label %if.merge.164 -if.merge.134: ; preds = %if.then.133, %while.body.131 +if.merge.164: ; preds = %if.then.163, %while.body.161 %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 @@ -2550,7 +2810,7 @@ if.merge.134: ; preds = %if.then.133, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.130 + br label %while.hdr.160 } ; Function Attrs: nounwind @@ -2559,33 +2819,33 @@ entry: %alloca = alloca [1 x { 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.174, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.180, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 -while.hdr.135: ; preds = %if.merge.139, %entry +while.hdr.165: ; preds = %if.merge.169, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.136, label %while.exit.137 + br i1 %icmp, label %while.body.166, label %while.exit.167 -while.body.136: ; preds = %while.hdr.135 +while.body.166: ; preds = %while.hdr.165 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.138, label %if.merge.139 + br i1 %icmpN, label %if.then.168, label %if.merge.169 -while.exit.137: ; preds = %while.hdr.135 +while.exit.167: ; preds = %while.hdr.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 1 }) ret { ptr, i64 } %call -if.then.138: ; preds = %while.body.136 +if.then.168: ; preds = %while.body.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.139 + br label %if.merge.169 -if.merge.139: ; preds = %if.then.138, %while.body.136 +if.merge.169: ; preds = %if.then.168, %while.body.166 %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 @@ -2603,7 +2863,7 @@ if.merge.139: ; preds = %if.then.138, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 } ; Function Attrs: nounwind @@ -2612,35 +2872,35 @@ 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.177, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.183, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 -while.hdr.144: ; preds = %if.merge.148, %entry +while.hdr.174: ; preds = %if.merge.178, %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.145, label %while.exit.146 + br i1 %icmp, label %while.body.175, label %while.exit.176 -while.body.145: ; preds = %while.hdr.144 +while.body.175: ; preds = %while.hdr.174 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.147, label %if.merge.148 + br i1 %icmpN, label %if.then.177, label %if.merge.178 -while.exit.146: ; preds = %while.hdr.144 +while.exit.176: ; preds = %while.hdr.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) ret { ptr, i64 } %call -if.then.147: ; preds = %while.body.145 +if.then.177: ; preds = %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.148 + br label %if.merge.178 -if.merge.148: ; preds = %if.then.147, %while.body.145 +if.merge.178: ; preds = %if.then.177, %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2657,7 +2917,7 @@ if.merge.148: ; preds = %if.then.147, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 } ; Function Attrs: nounwind @@ -2666,35 +2926,35 @@ 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.180, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.186, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 -while.hdr.149: ; preds = %if.merge.153, %entry +while.hdr.179: ; preds = %if.merge.183, %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.150, label %while.exit.151 + br i1 %icmp, label %while.body.180, label %while.exit.181 -while.body.150: ; preds = %while.hdr.149 +while.body.180: ; preds = %while.hdr.179 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.152, label %if.merge.153 + br i1 %icmpN, label %if.then.182, label %if.merge.183 -while.exit.151: ; preds = %while.hdr.149 +while.exit.181: ; preds = %while.hdr.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 1 }) ret { ptr, i64 } %call -if.then.152: ; preds = %while.body.150 +if.then.182: ; preds = %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.153 + br label %if.merge.183 -if.merge.153: ; preds = %if.then.152, %while.body.150 +if.merge.183: ; preds = %if.then.182, %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2711,95 +2971,11 @@ if.merge.153: ; preds = %if.then.152, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 } ; 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.174, label %if.else.175 - -if.then.174: ; preds = %entry - br label %if.merge.176 - -if.else.175: ; 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.185, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.184, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.176 - -if.merge.176: ; preds = %if.else.175, %if.then.174 - %bp = phi { ptr, i64 } [ { ptr @str.183, i64 4 }, %if.then.174 ], [ %callN, %if.else.175 ] - 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.198, label %if.else.199 - -if.then.198: ; preds = %entry - br label %if.merge.200 - -if.else.199: ; 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.188, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.187, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.200 - -if.merge.200: ; preds = %if.else.199, %if.then.198 - %bp = phi { ptr, i64 } [ { ptr @str.186, i64 4 }, %if.then.198 ], [ %callN, %if.else.199 ] - 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.201, label %if.else.202 - -if.then.201: ; preds = %entry - br label %if.merge.203 - -if.else.202: ; 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.191, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.203 - -if.merge.203: ; preds = %if.else.202, %if.then.201 - %bp = phi { ptr, i64 } [ { ptr @str.189, i64 4 }, %if.then.201 ], [ %callN, %if.else.202 ] - 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 @@ -2817,12 +2993,96 @@ if.then.204: ; preds = %entry if.else.205: ; 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.194, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.193, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.191, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 5 }, { ptr, i64 } %callN) br label %if.merge.206 if.merge.206: ; preds = %if.else.205, %if.then.204 - %bp = phi { ptr, i64 } [ { ptr @str.192, i64 4 }, %if.then.204 ], [ %callN, %if.else.205 ] + %bp = phi { ptr, i64 } [ { ptr @str.189, i64 4 }, %if.then.204 ], [ %callN, %if.else.205 ] + 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.220, label %if.else.221 + +if.then.220: ; preds = %entry + br label %if.merge.222 + +if.else.221: ; 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.194, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.193, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.222 + +if.merge.222: ; preds = %if.else.221, %if.then.220 + %bp = phi { ptr, i64 } [ { ptr @str.192, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] + 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.223, label %if.else.224 + +if.then.223: ; preds = %entry + br label %if.merge.225 + +if.else.224: ; 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.197, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.225 + +if.merge.225: ; preds = %if.else.224, %if.then.223 + %bp = phi { ptr, i64 } [ { ptr @str.195, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] + 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.226, label %if.else.227 + +if.then.226: ; preds = %entry + br label %if.merge.228 + +if.else.227: ; 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.200, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.228 + +if.merge.228: ; preds = %if.else.227, %if.then.226 + %bp = phi { ptr, i64 } [ { ptr @str.198, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] ret { ptr, i64 } %bp } @@ -2837,20 +3097,20 @@ entry: 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.207, label %if.else.208 + br i1 %icmp, label %if.then.229, label %if.else.230 -if.then.207: ; preds = %entry - br label %if.merge.209 +if.then.229: ; preds = %entry + br label %if.merge.231 -if.else.208: ; preds = %entry +if.else.230: ; 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.197, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.209 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.231 -if.merge.209: ; preds = %if.else.208, %if.then.207 - %bp = phi { ptr, i64 } [ { ptr @str.195, i64 4 }, %if.then.207 ], [ %callN, %if.else.208 ] +if.merge.231: ; preds = %if.else.230, %if.then.229 + %bp = phi { ptr, i64 } [ { ptr @str.201, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] ret { ptr, i64 } %bp } @@ -2864,20 +3124,20 @@ entry: 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.210, label %if.else.211 + br i1 %icmp, label %if.then.232, label %if.else.233 -if.then.210: ; preds = %entry - br label %if.merge.212 +if.then.232: ; preds = %entry + br label %if.merge.234 -if.else.211: ; preds = %entry +if.else.233: ; 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.200, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.212 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.234 -if.merge.212: ; preds = %if.else.211, %if.then.210 - %bp = phi { ptr, i64 } [ { ptr @str.198, i64 4 }, %if.then.210 ], [ %callN, %if.else.211 ] +if.merge.234: ; preds = %if.else.233, %if.then.232 + %bp = phi { ptr, i64 } [ { ptr @str.204, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] ret { ptr, i64 } %bp } @@ -2892,20 +3152,20 @@ entry: 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.213, label %if.else.214 + br i1 %icmp, label %if.then.235, label %if.else.236 -if.then.213: ; preds = %entry - br label %if.merge.215 +if.then.235: ; preds = %entry + br label %if.merge.237 -if.else.214: ; preds = %entry +if.else.236: ; 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.203, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.215 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.237 -if.merge.215: ; preds = %if.else.214, %if.then.213 - %bp = phi { ptr, i64 } [ { ptr @str.201, i64 4 }, %if.then.213 ], [ %callN, %if.else.214 ] +if.merge.237: ; preds = %if.else.236, %if.then.235 + %bp = phi { ptr, i64 } [ { ptr @str.207, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] ret { ptr, i64 } %bp } @@ -2920,20 +3180,20 @@ entry: 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.216, label %if.else.217 + br i1 %icmp, label %if.then.238, label %if.else.239 -if.then.216: ; preds = %entry - br label %if.merge.218 +if.then.238: ; preds = %entry + br label %if.merge.240 -if.else.217: ; preds = %entry +if.else.239: ; 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.206, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.218 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.240 -if.merge.218: ; preds = %if.else.217, %if.then.216 - %bp = phi { ptr, i64 } [ { ptr @str.204, i64 4 }, %if.then.216 ], [ %callN, %if.else.217 ] +if.merge.240: ; preds = %if.else.239, %if.then.238 + %bp = phi { ptr, i64 } [ { ptr @str.210, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] ret { ptr, i64 } %bp } @@ -2948,20 +3208,20 @@ entry: 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.219, label %if.else.220 + br i1 %icmp, label %if.then.241, label %if.else.242 -if.then.219: ; preds = %entry - br label %if.merge.221 +if.then.241: ; preds = %entry + br label %if.merge.243 -if.else.220: ; preds = %entry +if.else.242: ; 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.209, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.221 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.243 -if.merge.221: ; preds = %if.else.220, %if.then.219 - %bp = phi { ptr, i64 } [ { ptr @str.207, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] +if.merge.243: ; preds = %if.else.242, %if.then.241 + %bp = phi { ptr, i64 } [ { ptr @str.213, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] ret { ptr, i64 } %bp } @@ -2976,20 +3236,20 @@ entry: 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.222, label %if.else.223 + br i1 %icmp, label %if.then.244, label %if.else.245 -if.then.222: ; preds = %entry - br label %if.merge.224 +if.then.244: ; preds = %entry + br label %if.merge.246 -if.else.223: ; preds = %entry +if.else.245: ; 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.212, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.224 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.246 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.210, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi { ptr, i64 } [ { ptr @str.216, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] ret { ptr, i64 } %bp } @@ -3004,20 +3264,20 @@ entry: 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.225, label %if.else.226 + br i1 %icmp, label %if.then.247, label %if.else.248 -if.then.225: ; preds = %entry - br label %if.merge.227 +if.then.247: ; preds = %entry + br label %if.merge.249 -if.else.226: ; preds = %entry +if.else.248: ; 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.215, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.227 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.249 -if.merge.227: ; preds = %if.else.226, %if.then.225 - %bp = phi { ptr, i64 } [ { ptr @str.213, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] +if.merge.249: ; preds = %if.else.248, %if.then.247 + %bp = phi { ptr, i64 } [ { ptr @str.219, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] ret { ptr, i64 } %bp } @@ -3032,20 +3292,20 @@ entry: 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.228, label %if.else.229 + br i1 %icmp, label %if.then.250, label %if.else.251 -if.then.228: ; preds = %entry - br label %if.merge.230 +if.then.250: ; preds = %entry + br label %if.merge.252 -if.else.229: ; preds = %entry +if.else.251: ; 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.218, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.230 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.252 -if.merge.230: ; preds = %if.else.229, %if.then.228 - %bp = phi { ptr, i64 } [ { ptr @str.216, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] +if.merge.252: ; preds = %if.else.251, %if.then.250 + %bp = phi { ptr, i64 } [ { ptr @str.222, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] ret { ptr, i64 } %bp } @@ -3060,20 +3320,20 @@ entry: 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.231, label %if.else.232 + br i1 %icmp, label %if.then.253, label %if.else.254 -if.then.231: ; preds = %entry - br label %if.merge.233 +if.then.253: ; preds = %entry + br label %if.merge.255 -if.else.232: ; preds = %entry +if.else.254: ; 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.221, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.233 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.255 -if.merge.233: ; preds = %if.else.232, %if.then.231 - %bp = phi { ptr, i64 } [ { ptr @str.219, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] +if.merge.255: ; preds = %if.else.254, %if.then.253 + %bp = phi { ptr, i64 } [ { ptr @str.225, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] ret { ptr, i64 } %bp } @@ -3088,20 +3348,20 @@ entry: 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.234, label %if.else.235 + br i1 %icmp, label %if.then.256, label %if.else.257 -if.then.234: ; preds = %entry - br label %if.merge.236 +if.then.256: ; preds = %entry + br label %if.merge.258 -if.else.235: ; preds = %entry +if.else.257: ; 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.224, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.236 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.258 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.222, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.228, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] ret { ptr, i64 } %bp } @@ -3116,20 +3376,20 @@ entry: 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.237, label %if.else.238 + br i1 %icmp, label %if.then.259, label %if.else.260 -if.then.237: ; preds = %entry - br label %if.merge.239 +if.then.259: ; preds = %entry + br label %if.merge.261 -if.else.238: ; preds = %entry +if.else.260: ; 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.227, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.239 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.261 -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.225, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.231, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] ret { ptr, i64 } %bp } @@ -3144,20 +3404,20 @@ entry: 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.240, label %if.else.241 + br i1 %icmp, label %if.then.262, label %if.else.263 -if.then.240: ; preds = %entry - br label %if.merge.242 +if.then.262: ; preds = %entry + br label %if.merge.264 -if.else.241: ; preds = %entry +if.else.263: ; 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.230, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.242 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.264 -if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.228, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } @@ -3172,20 +3432,20 @@ entry: 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.243, label %if.else.244 + br i1 %icmp, label %if.then.265, label %if.else.266 -if.then.243: ; preds = %entry - br label %if.merge.245 +if.then.265: ; preds = %entry + br label %if.merge.267 -if.else.244: ; preds = %entry +if.else.266: ; 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.233, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.245 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.267 -if.merge.245: ; preds = %if.else.244, %if.then.243 - %bp = phi { ptr, i64 } [ { ptr @str.231, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] +if.merge.267: ; preds = %if.else.266, %if.then.265 + %bp = phi { ptr, i64 } [ { ptr @str.237, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] ret { ptr, i64 } %bp } @@ -3200,23 +3460,21 @@ entry: 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.246, label %if.else.247 + br i1 %icmp, label %if.then.268, label %if.else.269 -if.then.246: ; preds = %entry - br label %if.merge.248 +if.then.268: ; preds = %entry + br label %if.merge.270 -if.else.247: ; preds = %entry +if.else.269: ; 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.236, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.248 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.270 -if.merge.248: ; preds = %if.else.247, %if.then.246 - %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] +if.merge.270: ; preds = %if.else.269, %if.then.268 + %bp = phi { ptr, i64 } [ { ptr @str.240, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0518-packs-pack-value-dispatch.ir b/examples/expected/0518-packs-pack-value-dispatch.ir index d9e9c4e..bbda162 100644 --- a/examples/expected/0518-packs-pack-value-dispatch.ir +++ b/examples/expected/0518-packs-pack-value-dispatch.ir @@ -1,250 +1,257 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [70 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.42 = private constant [5 x i8] c"*s64\00" -@tn.str.43 = private constant [7 x i8] c"**void\00" -@tn.str.44 = private constant [6 x i8] c"[]Any\00" -@tn.str.45 = private constant [5 x i8] c"*Any\00" -@tn.str.46 = private constant [7 x i8] c"[1]Any\00" -@tn.str.47 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.48 = private constant [7 x i8] c"*[]Any\00" -@tn.str.49 = private constant [8 x i8] c"*string\00" -@tn.str.50 = private constant [4 x i8] c"*u8\00" -@tn.str.51 = private constant [6 x i8] c"*bool\00" -@tn.str.52 = private constant [5 x i8] c"*f64\00" -@tn.str.53 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.54 = private constant [11 x i8] c"*Allocator\00" -@tn.str.55 = private constant [9 x i8] c"*Context\00" -@tn.str.56 = private constant [10 x i8] c"*[]string\00" -@tn.str.57 = private constant [6 x i8] c"**GPA\00" -@tn.str.58 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.59 = private constant [8 x i8] c"**Arena\00" -@tn.str.60 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.61 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.62 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.63 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.64 = private constant [6 x i8] c"**s64\00" -@tn.str.65 = private constant [8 x i8] c"***void\00" -@tn.str.66 = private constant [6 x i8] c"**Any\00" -@tn.str.67 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.68 = private constant [8 x i8] c"**[]Any\00" -@tn.str.69 = private constant [9 x i8] c"**string\00" -@tn.str.70 = private constant [5 x i8] c"**u8\00" -@tn.str.71 = private constant [7 x i8] c"**bool\00" -@tn.str.72 = private constant [6 x i8] c"**f64\00" -@__sx_type_names = private constant [68 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 12 }, { ptr, i64 } { ptr @tn.str.42, i64 4 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 5 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 7 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 3 }, { ptr, i64 } { ptr @tn.str.51, i64 5 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 16 }, { ptr, i64 } { ptr @tn.str.54, i64 10 }, { ptr, i64 } { ptr @tn.str.55, i64 8 }, { ptr, i64 } { ptr @tn.str.56, i64 9 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 12 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 6 }, { ptr, i64 } { ptr @tn.str.61, i64 10 }, { ptr, i64 } { ptr @tn.str.62, i64 19 }, { ptr, i64 } { ptr @tn.str.63, i64 13 }, { ptr, i64 } { ptr @tn.str.64, i64 5 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 5 }, { ptr, i64 } { ptr @tn.str.67, i64 8 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 4 }, { ptr, i64 } { ptr @tn.str.71, i64 6 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }] -@str.73 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.74 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.75 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [13 x i8] c"**CAllocator\00" +@tn.str.44 = private constant [5 x i8] c"*s64\00" +@tn.str.45 = private constant [7 x i8] c"**void\00" +@tn.str.46 = private constant [6 x i8] c"[]Any\00" +@tn.str.47 = private constant [5 x i8] c"*Any\00" +@tn.str.48 = private constant [7 x i8] c"[1]Any\00" +@tn.str.49 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.50 = private constant [7 x i8] c"*[]Any\00" +@tn.str.51 = private constant [8 x i8] c"*string\00" +@tn.str.52 = private constant [4 x i8] c"*u8\00" +@tn.str.53 = private constant [6 x i8] c"*bool\00" +@tn.str.54 = private constant [5 x i8] c"*f64\00" +@tn.str.55 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.56 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.57 = private constant [11 x i8] c"*Allocator\00" +@tn.str.58 = private constant [9 x i8] c"*Context\00" +@tn.str.59 = private constant [10 x i8] c"*[]string\00" +@tn.str.60 = private constant [6 x i8] c"**GPA\00" +@tn.str.61 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.62 = private constant [8 x i8] c"**Arena\00" +@tn.str.63 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.64 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.65 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.66 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.67 = private constant [6 x i8] c"**s64\00" +@tn.str.68 = private constant [8 x i8] c"***void\00" +@tn.str.69 = private constant [6 x i8] c"**Any\00" +@tn.str.70 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.71 = private constant [8 x i8] c"**[]Any\00" +@tn.str.72 = private constant [9 x i8] c"**string\00" +@tn.str.73 = private constant [5 x i8] c"**u8\00" +@tn.str.74 = private constant [7 x i8] c"**bool\00" +@tn.str.75 = private constant [6 x i8] c"**f64\00" +@__sx_type_names = private constant [70 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 12 }, { ptr, i64 } { ptr @tn.str.44, i64 4 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 5 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 3 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 4 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 16 }, { ptr, i64 } { ptr @tn.str.57, i64 10 }, { ptr, i64 } { ptr @tn.str.58, i64 8 }, { ptr, i64 } { ptr @tn.str.59, i64 9 }, { ptr, i64 } { ptr @tn.str.60, i64 5 }, { ptr, i64 } { ptr @tn.str.61, i64 12 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 6 }, { ptr, i64 } { ptr @tn.str.64, i64 10 }, { ptr, i64 } { ptr @tn.str.65, i64 19 }, { ptr, i64 } { ptr @tn.str.66, i64 13 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 8 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 4 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }] @str.76 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.77 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.78 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.79 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.80 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.84 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.85 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.92 = private unnamed_addr constant [3 x i8] c"hi\00", align 1 -@str.93 = private unnamed_addr constant [6 x i8] c"hello\00", align 1 -@str.94 = private unnamed_addr constant [4 x i8] c"s64\00", align 1 -@str.95 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.96 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.97 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.98 = private unnamed_addr constant [7 x i8] c"string\00", align 1 -@str.99 = private unnamed_addr constant [4 x i8] c"f64\00", align 1 -@str.100 = private unnamed_addr constant [8 x i8] c"got s64\00", align 1 -@str.101 = private unnamed_addr constant [11 x i8] c"got string\00", align 1 -@str.102 = private unnamed_addr constant [9 x i8] c"got bool\00", align 1 -@str.103 = private unnamed_addr constant [10 x i8] c"got other\00", align 1 -@str.104 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.105 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.106 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.107 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.92 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.93 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.94 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.95 = private unnamed_addr constant [3 x i8] c"hi\00", align 1 +@str.96 = private unnamed_addr constant [6 x i8] c"hello\00", align 1 +@str.97 = private unnamed_addr constant [4 x i8] c"s64\00", align 1 +@str.98 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.99 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.100 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.101 = private unnamed_addr constant [7 x i8] c"string\00", align 1 +@str.102 = private unnamed_addr constant [4 x i8] c"f64\00", align 1 +@str.103 = private unnamed_addr constant [8 x i8] c"got s64\00", align 1 +@str.104 = private unnamed_addr constant [11 x i8] c"got string\00", align 1 +@str.105 = private unnamed_addr constant [9 x i8] c"got bool\00", align 1 +@str.106 = private unnamed_addr constant [10 x i8] c"got other\00", align 1 +@str.107 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.108 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.109 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.108 = private constant [5 x i8] c"line\00" -@fld.str.109 = private constant [4 x i8] c"col\00" -@fld.str.110 = 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.108, i64 4 }, { ptr, i64 } { ptr @fld.str.109, i64 3 }, { ptr, i64 } { ptr @fld.str.110, i64 4 }] -@str.111 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.112 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.113 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.114 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.116 = private constant [4 x i8] c"ctx\00" -@fld.str.117 = private constant [6 x i8] c"alloc\00" -@fld.str.118 = private constant [8 x i8] c"dealloc\00" -@field_names.119 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.116, i64 3 }, { ptr, i64 } { ptr @fld.str.117, i64 5 }, { ptr, i64 } { ptr @fld.str.118, i64 7 }] -@str.120 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.121 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.122 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.123 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.125 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.127 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.131 = private constant [12 x i8] c"alloc_count\00" -@field_names.132 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.131, i64 11 }] -@str.133 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.134 = private unnamed_addr constant [11 x i8] c"ArenaChunk\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.138 = private constant [5 x i8] c"next\00" -@fld.str.139 = private constant [4 x i8] c"cap\00" -@field_names.140 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.138, i64 4 }, { ptr, i64 } { ptr @fld.str.139, i64 3 }] -@str.141 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.142 = private unnamed_addr constant [6 x i8] c"Arena\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 [6 x i8] c"first\00" -@fld.str.147 = private constant [10 x i8] c"end_index\00" -@fld.str.148 = private constant [7 x i8] c"parent\00" -@field_names.149 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.146, i64 5 }, { ptr, i64 } { ptr @fld.str.147, i64 9 }, { ptr, i64 } { ptr @fld.str.148, i64 6 }] -@str.150 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.151 = private unnamed_addr constant [9 x i8] c"BufAlloc\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 -@fld.str.155 = private constant [4 x i8] c"buf\00" -@fld.str.156 = private constant [4 x i8] c"len\00" -@fld.str.157 = private constant [4 x i8] c"pos\00" -@field_names.158 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.155, i64 3 }, { ptr, i64 } { ptr @fld.str.156, i64 3 }, { ptr, i64 } { ptr @fld.str.157, i64 3 }] -@str.159 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.160 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.164 = private constant [7 x i8] c"parent\00" -@fld.str.165 = private constant [12 x i8] c"alloc_count\00" -@fld.str.166 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.167 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.168 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.164, i64 6 }, { ptr, i64 } { ptr @fld.str.165, i64 11 }, { ptr, i64 } { ptr @fld.str.166, i64 13 }, { ptr, i64 } { ptr @fld.str.167, i64 17 }] -@str.169 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.170 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.174 = private constant [10 x i8] c"allocator\00" -@fld.str.175 = private constant [5 x i8] c"data\00" -@field_names.176 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.174, i64 9 }, { ptr, i64 } { ptr @fld.str.175, i64 4 }] -@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.178 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.180 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.111 = private constant [5 x i8] c"line\00" +@fld.str.112 = private constant [4 x i8] c"col\00" +@fld.str.113 = 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.111, i64 4 }, { ptr, i64 } { ptr @fld.str.112, i64 3 }, { ptr, i64 } { ptr @fld.str.113, i64 4 }] +@str.114 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.115 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.116 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.117 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.119 = private constant [4 x i8] c"ctx\00" +@fld.str.120 = private constant [6 x i8] c"alloc\00" +@fld.str.121 = private constant [8 x i8] c"dealloc\00" +@field_names.122 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.119, i64 3 }, { ptr, i64 } { ptr @fld.str.120, i64 5 }, { ptr, i64 } { ptr @fld.str.121, i64 7 }] +@str.123 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.124 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.125 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.126 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.128 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.130 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.134 = private constant [12 x i8] c"alloc_count\00" +@field_names.135 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 11 }] +@str.136 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.137 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.138 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.141 = private constant [5 x i8] c"next\00" +@fld.str.142 = private constant [4 x i8] c"cap\00" +@field_names.143 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.141, i64 4 }, { ptr, i64 } { ptr @fld.str.142, i64 3 }] +@str.144 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.145 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.149 = private constant [6 x i8] c"first\00" +@fld.str.150 = private constant [10 x i8] c"end_index\00" +@fld.str.151 = private constant [7 x i8] c"parent\00" +@field_names.152 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.149, i64 5 }, { ptr, i64 } { ptr @fld.str.150, i64 9 }, { ptr, i64 } { ptr @fld.str.151, i64 6 }] +@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.154 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.158 = private constant [4 x i8] c"buf\00" +@fld.str.159 = private constant [4 x i8] c"len\00" +@fld.str.160 = private constant [4 x i8] c"pos\00" +@field_names.161 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 3 }, { ptr, i64 } { ptr @fld.str.159, i64 3 }, { ptr, i64 } { ptr @fld.str.160, i64 3 }] +@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.163 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.167 = private constant [7 x i8] c"parent\00" +@fld.str.168 = private constant [12 x i8] c"alloc_count\00" +@fld.str.169 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.170 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.171 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 6 }, { ptr, i64 } { ptr @fld.str.168, i64 11 }, { ptr, i64 } { ptr @fld.str.169, i64 13 }, { ptr, i64 } { ptr @fld.str.170, i64 17 }] +@str.172 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.173 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.174 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.175 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.177 = private constant [10 x i8] c"allocator\00" +@fld.str.178 = private constant [5 x i8] c"data\00" +@field_names.179 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.177, i64 9 }, { ptr, i64 } { ptr @fld.str.178, i64 4 }] +@str.180 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.181 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.182 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.184 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.185 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.186 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.187 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.188 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.189 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.190 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.191 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.192 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.187 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.188 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.189 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.190 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.191 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.192 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.193 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.194 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.194 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.195 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.196 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.197 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.197 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.198 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.199 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.200 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.200 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.201 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.202 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.203 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.203 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.204 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.205 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.206 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.206 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.207 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.208 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.209 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.209 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.210 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.211 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.212 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.212 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.213 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.214 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.215 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.215 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.216 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.217 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.218 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.218 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.219 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.220 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.221 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.221 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.222 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.223 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.224 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.224 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.225 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.226 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.227 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.227 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.228 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.229 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.230 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.230 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.231 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.232 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.233 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.233 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.234 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.235 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.236 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.236 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.237 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.238 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.239 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.239 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.240 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.241 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.242 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.243 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.244 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.245 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.246 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -383,38 +390,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -427,50 +439,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -484,19 +624,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -513,15 +653,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -539,16 +679,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -565,17 +705,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -638,39 +778,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.181 + br label %while.hdr.203 -while.hdr.181: ; preds = %if.merge.186, %entry +while.hdr.203: ; preds = %if.merge.208, %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.182, label %while.exit.183 + br i1 %icmp, label %while.body.204, label %while.exit.205 -while.body.182: ; preds = %while.hdr.181 +while.body.204: ; preds = %while.hdr.203 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.184, label %if.else.185 + br i1 %icmpN, label %if.then.206, label %if.else.207 -while.exit.183: ; preds = %while.hdr.181 +while.exit.205: ; preds = %while.hdr.203 ret void -if.then.184: ; preds = %while.body.182 +if.then.206: ; preds = %while.body.204 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.186 + br label %if.merge.208 -if.else.185: ; preds = %while.body.182 +if.else.207: ; preds = %while.body.204 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.186 + br label %if.merge.208 -if.merge.186: ; preds = %if.else.185, %if.then.184 - %bp = phi i64 [ %addN, %if.then.184 ], [ %addN, %if.else.185 ] +if.merge.208: ; preds = %if.else.207, %if.then.206 + %bp = phi i64 [ %addN, %if.then.206 ], [ %addN, %if.else.207 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -683,37 +823,29 @@ if.merge.186: ; preds = %if.else.185, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.181 + br label %while.hdr.203 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.171, label %if.merge.172 - -if.then.171: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.172: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.173, label %if.merge.174 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.173: ; preds = %if.merge.172 +if.then.58: ; 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.174 + br label %if.merge.59 -if.merge.174: ; preds = %if.then.173, %if.merge.172 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -726,15 +858,15 @@ if.merge.174: ; preds = %if.then.173, %if.me 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.175, label %if.merge.176 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.175: ; preds = %if.merge.174 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.176 + br label %if.merge.61 -if.merge.176: ; preds = %if.then.175, %if.merge.174 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -747,15 +879,15 @@ if.merge.176: ; preds = %if.then.175, %if.me 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.177, label %if.merge.178 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.177: ; preds = %if.merge.176 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.178 + br label %if.merge.63 -if.merge.178: ; preds = %if.then.177, %if.merge.176 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -768,65 +900,116 @@ if.merge.178: ; preds = %if.then.177, %if.me 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.179, label %if.merge.180 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.179: ; preds = %if.merge.178 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.180 + br label %if.merge.65 -if.merge.180: ; preds = %if.then.179, %if.merge.178 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.201, label %if.merge.202 + +if.then.201: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.202: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.187 + br label %while.hdr.209 -while.hdr.187: ; preds = %if.merge.191, %if.merge.180 +while.hdr.209: ; preds = %if.merge.213, %if.merge.202 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.188, label %while.exit.189 + br i1 %icmpN, label %while.body.210, label %while.exit.211 -while.body.188: ; preds = %while.hdr.187 +while.body.210: ; preds = %while.hdr.209 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.190, label %if.merge.191 + br i1 %icmpN, label %if.then.212, label %if.merge.213 -while.exit.189: ; preds = %if.then.190, %while.hdr.187 +while.exit.211: ; preds = %if.then.212, %while.hdr.209 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.190: ; preds = %while.body.188 - br label %while.exit.189 +if.then.212: ; preds = %while.body.210 + br label %while.exit.211 -if.merge.191: ; preds = %while.body.188 +if.merge.213: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.187 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.209 } ; Function Attrs: nounwind @@ -905,7 +1088,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -913,458 +1096,485 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 41, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 35, label %match.arm.47 + i64 42, label %match.arm.47 + i64 36, label %match.arm.48 + i64 40, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 37, label %match.arm.49 + i64 38, label %match.arm.49 i64 39, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 36, label %match.arm.50 - i64 37, label %match.arm.50 - i64 38, label %match.arm.50 - i64 40, label %match.arm.50 - i64 42, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 13, label %match.arm.52 + i64 41, label %match.arm.49 + i64 43, label %match.arm.49 + i64 44, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.148, %dispatch.merge.134, %dispatch.merge.126, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.178, %dispatch.merge.164, %dispatch.merge.150, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [70 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.151 [ + i64 35, label %dispatch.case.152 + i64 42, label %dispatch.case.153 + ] + +match.arm.48: ; preds = %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.165 [ + i64 36, label %dispatch.case.166 + i64 40, label %dispatch.case.167 + ] + +match.arm.49: ; preds = %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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.179 [ + i64 18, label %dispatch.case.180 + i64 22, label %dispatch.case.181 + i64 24, label %dispatch.case.182 + i64 26, label %dispatch.case.183 + i64 28, label %dispatch.case.184 + i64 29, label %dispatch.case.185 + i64 31, label %dispatch.case.186 + i64 33, label %dispatch.case.187 + i64 37, label %dispatch.case.188 + i64 38, label %dispatch.case.189 + i64 39, label %dispatch.case.190 + i64 41, label %dispatch.case.191 + i64 43, label %dispatch.case.192 + i64 44, label %dispatch.case.193 + i64 45, label %dispatch.case.194 + i64 46, label %dispatch.case.195 + i64 47, label %dispatch.case.196 + i64 48, label %dispatch.case.197 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.127 [ - i64 41, label %dispatch.case.128 - ] - -match.arm.49: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.135 [ - i64 35, label %dispatch.case.136 - i64 39, label %dispatch.case.137 - ] - -match.arm.50: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.149 [ - i64 18, label %dispatch.case.150 - i64 22, label %dispatch.case.151 - i64 24, label %dispatch.case.152 - i64 26, label %dispatch.case.153 - i64 28, label %dispatch.case.154 - i64 29, label %dispatch.case.155 - i64 31, label %dispatch.case.156 - i64 33, label %dispatch.case.157 - i64 36, label %dispatch.case.158 - i64 37, label %dispatch.case.159 - i64 38, label %dispatch.case.160 - i64 40, label %dispatch.case.161 - i64 42, label %dispatch.case.162 - i64 43, label %dispatch.case.163 - i64 44, label %dispatch.case.164 - i64 45, label %dispatch.case.165 - i64 46, label %dispatch.case.166 - i64 47, label %dispatch.case.167 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [68 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [70 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.73, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.76, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.126: ; preds = %dispatch.case.128, %dispatch.default.127 +dispatch.case.104: ; preds = %match.arm.43 + %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.150: ; preds = %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.127: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.74, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.126 +dispatch.default.151: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.77, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.150 -dispatch.case.128: ; preds = %match.arm.48 - %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load [1 x { i64, i64 }], ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load78) +dispatch.case.152: ; preds = %match.arm.47 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load [4 x i64], ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load82) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.126 + br label %dispatch.merge.150 -dispatch.merge.134: ; preds = %dispatch.case.137, %dispatch.case.136, %dispatch.default.135 +dispatch.case.153: ; preds = %match.arm.47 + %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr + %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.150 + +dispatch.merge.164: ; preds = %dispatch.case.167, %dispatch.case.166, %dispatch.default.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.135: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.75, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.134 +dispatch.default.165: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.78, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.164 -dispatch.case.136: ; preds = %match.arm.49 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load { ptr, i64 }, ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load83) +dispatch.case.166: ; preds = %match.arm.48 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load91) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.134 + br label %dispatch.merge.164 -dispatch.case.137: ; preds = %match.arm.49 - %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr - %ua.load87 = load { ptr, i64 }, ptr %ua.ptr86, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load87) +dispatch.case.167: ; preds = %match.arm.48 + %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr + %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load95) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.134 + br label %dispatch.merge.164 -dispatch.merge.148: ; preds = %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.case.155, %dispatch.case.154, %dispatch.case.153, %dispatch.case.152, %dispatch.case.151, %dispatch.case.150, %dispatch.default.149 +dispatch.merge.178: ; preds = %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.case.180, %dispatch.default.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.149: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.76, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.148 +dispatch.default.179: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.79, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.178 -dispatch.case.150: ; preds = %match.arm.50 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw90 to ptr +dispatch.case.180: ; preds = %match.arm.49 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw98 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.148 + br label %dispatch.merge.178 -dispatch.case.151: ; preds = %match.arm.50 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %iNp93 = inttoptr i64 %ua.raw92 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp93) +dispatch.case.181: ; preds = %match.arm.49 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %iNp101 = inttoptr i64 %ua.raw100 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp101) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.152: ; preds = %match.arm.50 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp96 = inttoptr i64 %ua.raw95 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp96) +dispatch.case.182: ; preds = %match.arm.49 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp104 = inttoptr i64 %ua.raw103 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp104) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.153: ; preds = %match.arm.50 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %iNp99 = inttoptr i64 %ua.raw98 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp99) +dispatch.case.183: ; preds = %match.arm.49 + %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 + %iNp107 = inttoptr i64 %ua.raw106 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.154: ; preds = %match.arm.50 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %iNp102 = inttoptr i64 %ua.raw101 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp102) +dispatch.case.184: ; preds = %match.arm.49 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %iNp110 = inttoptr i64 %ua.raw109 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp110) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.155: ; preds = %match.arm.50 - %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 - %iNp105 = inttoptr i64 %ua.raw104 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp105) +dispatch.case.185: ; preds = %match.arm.49 + %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 + %iNp113 = inttoptr i64 %ua.raw112 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp113) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw107 = extractvalue { i64, i64 } %loadN, 1 - %iNp108 = inttoptr i64 %ua.raw107 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp108) +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 + %iNp116 = inttoptr i64 %ua.raw115 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp116) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %iNp111 = inttoptr i64 %ua.raw110 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp111) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %iNp119 = inttoptr i64 %ua.raw118 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp119) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 - %iNp114 = inttoptr i64 %ua.raw113 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp114) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 + %iNp122 = inttoptr i64 %ua.raw121 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp122) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp117) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp120) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp123) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp126) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp129) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp132) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp135) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp138) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp141) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.148 + br label %dispatch.merge.178 } ; Function Attrs: nounwind @@ -1373,7 +1583,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.80, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1404,7 +1614,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1422,9 +1632,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1462,14 +1672,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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 @@ -1477,7 +1687,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, 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 @@ -1487,13 +1697,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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 @@ -1501,7 +1711,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1513,83 +1723,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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.84, 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.85, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1617,18 +1751,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1641,6 +1812,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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.91, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, 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.93, 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 @@ -1649,11 +1859,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1663,13 +1873,13 @@ define i32 @main() #0 { entry: %call = call { ptr, i64 } @show__pack_s64(ptr @__sx_default_context, i64 42) call void @print__ct_sbc6305862a3a863d__pack_string(ptr @__sx_default_context, { ptr, i64 } %call) - %callN = call { ptr, i64 } @show__pack_string(ptr @__sx_default_context, { ptr, i64 } { ptr @str.92, i64 2 }) + %callN = call { ptr, i64 } @show__pack_string(ptr @__sx_default_context, { ptr, i64 } { ptr @str.95, i64 2 }) call void @print__ct_sbc6305862a3a863d__pack_string(ptr @__sx_default_context, { ptr, i64 } %callN) %callN = call { ptr, i64 } @show__pack_f64(ptr @__sx_default_context, double 3.140000e+00) call void @print__ct_sbc6305862a3a863d__pack_string(ptr @__sx_default_context, { ptr, i64 } %callN) %callN = call { ptr, i64 } @describe__pack_s64(ptr @__sx_default_context, i64 42) call void @print__ct_sbc6305862a3a863d__pack_string(ptr @__sx_default_context, { ptr, i64 } %callN) - %callN = call { ptr, i64 } @describe__pack_string(ptr @__sx_default_context, { ptr, i64 } { ptr @str.93, i64 5 }) + %callN = call { ptr, i64 } @describe__pack_string(ptr @__sx_default_context, { ptr, i64 } { ptr @str.96, i64 5 }) call void @print__ct_sbc6305862a3a863d__pack_string(ptr @__sx_default_context, { ptr, i64 } %callN) %callN = call { ptr, i64 } @describe__pack_bool(ptr @__sx_default_context, i1 true) call void @print__ct_sbc6305862a3a863d__pack_string(ptr @__sx_default_context, { ptr, i64 } %callN) @@ -1708,14 +1918,14 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.94, i64 3 } + ret { ptr, i64 } { ptr @str.97, i64 3 } } ; Function Attrs: nounwind define internal void @print__ct_sbc6305862a3a863d__pack_string(ptr %0, { ptr, i64 } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.95, i64 3 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.98, i64 3 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1733,7 +1943,7 @@ entry: %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.96, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.99, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %ba.tmp9 = alloca { ptr, i64 }, align 8 @@ -1758,7 +1968,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.97, i64 3 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.100, i64 3 }) ret { ptr, i64 } %call } @@ -1781,7 +1991,7 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.98, i64 6 } + ret { ptr, i64 } { ptr @str.101, i64 6 } } ; Function Attrs: nounwind @@ -1801,7 +2011,7 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.99, i64 3 } + ret { ptr, i64 } { ptr @str.102, i64 3 } } ; Function Attrs: nounwind @@ -1820,7 +2030,7 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.100, i64 7 } + ret { ptr, i64 } { ptr @str.103, i64 7 } } ; Function Attrs: nounwind @@ -1842,7 +2052,7 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.101, i64 10 } + ret { ptr, i64 } { ptr @str.104, i64 10 } } ; Function Attrs: nounwind @@ -1862,7 +2072,7 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.102, i64 8 } + ret { ptr, i64 } { ptr @str.105, i64 8 } } ; Function Attrs: nounwind @@ -1882,7 +2092,7 @@ entry: store ptr %igp.ptr3, ptr %gep, align 8 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 store i64 1, ptr %gepN, align 8 - ret { ptr, i64 } { ptr @str.103, i64 9 } + ret { ptr, i64 } { ptr @str.106, i64 9 } } ; Function Attrs: nounwind @@ -1890,35 +2100,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.104, i64 15 }, { ptr, i64 } { ptr @str.105, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.107, i64 15 }, { ptr, i64 } { ptr @str.108, 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.81 + br label %while.hdr.105 -while.hdr.81: ; preds = %fv.merge, %entry +while.hdr.105: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.82, label %while.exit.83 + br i1 %icmp, label %while.body.106, label %while.exit.107 -while.body.82: ; preds = %while.hdr.81 +while.body.106: ; preds = %while.hdr.105 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.84, label %if.merge.85 + br i1 %icmpN, label %if.then.108, label %if.merge.109 -while.exit.83: ; preds = %while.hdr.81 +while.exit.107: ; preds = %while.hdr.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 1 }) ret { ptr, i64 } %callN -if.then.84: ; preds = %while.body.82 +if.then.108: ; preds = %while.body.106 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.85 + br label %if.merge.109 -if.merge.85: ; preds = %if.then.84, %while.body.82 +if.merge.109: ; preds = %if.then.108, %while.body.106 %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 @@ -1926,7 +2136,7 @@ if.merge.85: ; preds = %if.then.84, %while. %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.111, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, 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 @@ -1946,12 +2156,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.81 + br label %while.hdr.105 -fv.default: ; preds = %if.merge.85 +fv.default: ; preds = %if.merge.109 br label %fv.merge -fv.case: ; preds = %if.merge.85 +fv.case: ; preds = %if.merge.109 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1959,19 +2169,19 @@ fv.case: ; preds = %if.merge.85 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.85 +fv.case17: ; preds = %if.merge.109 %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.85 +fv.case20: ; preds = %if.merge.109 %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.85 +fv.case24: ; preds = %if.merge.109 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1985,43 +2195,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.112, i64 9 }, { ptr, i64 } { ptr @str.113, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.115, i64 9 }, { ptr, i64 } { ptr @str.116, 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.86 + br label %while.hdr.110 -while.hdr.86: ; preds = %fv.merge, %entry +while.hdr.110: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.87, label %while.exit.88 + br i1 %icmp, label %while.body.111, label %while.exit.112 -while.body.87: ; preds = %while.hdr.86 +while.body.111: ; preds = %while.hdr.110 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.89, label %if.merge.90 + br i1 %icmpN, label %if.then.113, label %if.merge.114 -while.exit.88: ; preds = %while.hdr.86 +while.exit.112: ; preds = %while.hdr.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 1 }) ret { ptr, i64 } %callN -if.then.89: ; preds = %while.body.87 +if.then.113: ; preds = %while.body.111 %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 }) + %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 - br label %if.merge.90 + br label %if.merge.114 -if.merge.90: ; preds = %if.then.89, %while.body.87 +if.merge.114: ; preds = %if.then.113, %while.body.111 %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.119, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.122, 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.120, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8 @@ -2040,24 +2250,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.86 + br label %while.hdr.110 -fv.default: ; preds = %if.merge.90 +fv.default: ; preds = %if.merge.114 br label %fv.merge -fv.case: ; preds = %if.merge.90 +fv.case: ; preds = %if.merge.114 %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.90 +fv.case17: ; preds = %if.merge.114 %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.90 +fv.case21: ; preds = %if.merge.114 %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 @@ -2069,43 +2279,43 @@ 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.121, i64 10 }, { ptr, i64 } { ptr @str.122, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.124, i64 10 }, { ptr, i64 } { ptr @str.125, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %if.merge.95, %entry +while.hdr.115: ; preds = %if.merge.119, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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.125, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.128, 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.126, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2116,7 +2326,7 @@ if.merge.95: ; preds = %if.then.94, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 } ; Function Attrs: nounwind @@ -2124,43 +2334,43 @@ 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.127, i64 3 }, { ptr, i64 } { ptr @str.128, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.130, i64 3 }, { ptr, i64 } { ptr @str.131, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.132, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.135, 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.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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 @@ -2177,12 +2387,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2193,43 +2403,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.134, i64 10 }, { ptr, i64 } { ptr @str.135, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.137, i64 10 }, { ptr, i64 } { ptr @str.138, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %fv.merge, %entry +while.hdr.125: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.140, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.143, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, 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 @@ -2247,18 +2457,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 -fv.default: ; preds = %if.merge.105 +fv.default: ; preds = %if.merge.129 br label %fv.merge -fv.case: ; preds = %if.merge.105 +fv.case: ; preds = %if.merge.129 %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.105 +fv.case17: ; preds = %if.merge.129 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2269,43 +2479,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.142, i64 5 }, { ptr, i64 } { ptr @str.143, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.145, i64 5 }, { ptr, i64 } { ptr @str.146, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.152, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, 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 @@ -2324,23 +2534,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %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.110 +fv.case17: ; preds = %if.merge.134 %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.110 +fv.case20: ; preds = %if.merge.134 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2354,43 +2564,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.151, i64 8 }, { ptr, i64 } { ptr @str.152, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.154, i64 8 }, { ptr, i64 } { ptr @str.155, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.158, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.161, 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.159, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, 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 @@ -2409,23 +2619,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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 @@ -2436,43 +2646,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.160, i64 17 }, { ptr, i64 } { ptr @str.161, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.163, i64 17 }, { ptr, i64 } { ptr @str.164, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.168, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.171, 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.169, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, 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 @@ -2492,12 +2702,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2505,17 +2715,17 @@ fv.case: ; preds = %if.merge.120 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %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.120 +fv.case23: ; preds = %if.merge.144 %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 @@ -2526,43 +2736,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.170, i64 7 }, { ptr, i64 } { ptr @str.171, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.173, i64 7 }, { ptr, i64 } { ptr @str.174, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.176, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 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.177, i64 2 }) + %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, ptr, ptr }, ptr }, ptr %alloca, align 8 @@ -2580,12 +2790,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2593,46 +2803,96 @@ fv.case: ; preds = %if.merge.125 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.125 +fv.case17: ; preds = %if.merge.149 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.181, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.154 + +while.hdr.154: ; preds = %if.merge.158, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.155, label %while.exit.156 + +while.body.155: ; preds = %while.hdr.154 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.157, label %if.merge.158 + +while.exit.156: ; preds = %while.hdr.154 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) + ret { ptr, i64 } %call + +if.then.157: ; preds = %while.body.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.158 + +if.merge.158: ; preds = %if.then.157, %while.body.155 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.154 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.178, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.159 -while.hdr.129: ; preds = %if.merge.133, %entry +while.hdr.159: ; preds = %if.merge.163, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.130, label %while.exit.131 + br i1 %icmp, label %while.body.160, label %while.exit.161 -while.body.130: ; preds = %while.hdr.129 +while.body.160: ; preds = %while.hdr.159 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.132, label %if.merge.133 + br i1 %icmpN, label %if.then.162, label %if.merge.163 -while.exit.131: ; preds = %while.hdr.129 +while.exit.161: ; preds = %while.hdr.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) ret { ptr, i64 } %call -if.then.132: ; preds = %while.body.130 +if.then.162: ; preds = %while.body.160 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.133 + br label %if.merge.163 -if.merge.133: ; preds = %if.then.132, %while.body.130 +if.merge.163: ; preds = %if.then.162, %while.body.160 %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 @@ -2650,7 +2910,7 @@ if.merge.133: ; preds = %if.then.132, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.159 } ; Function Attrs: nounwind @@ -2659,35 +2919,35 @@ 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.181, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.168 -while.hdr.138: ; preds = %if.merge.142, %entry +while.hdr.168: ; preds = %if.merge.172, %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.139, label %while.exit.140 + br i1 %icmp, label %while.body.169, label %while.exit.170 -while.body.139: ; preds = %while.hdr.138 +while.body.169: ; preds = %while.hdr.168 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.141, label %if.merge.142 + br i1 %icmpN, label %if.then.171, label %if.merge.172 -while.exit.140: ; preds = %while.hdr.138 +while.exit.170: ; preds = %while.hdr.168 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) ret { ptr, i64 } %call -if.then.141: ; preds = %while.body.139 +if.then.171: ; preds = %while.body.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) + %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 - br label %if.merge.142 + br label %if.merge.172 -if.merge.142: ; preds = %if.then.141, %while.body.139 +if.merge.172: ; preds = %if.then.171, %while.body.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2704,7 +2964,7 @@ if.merge.142: ; preds = %if.then.141, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.168 } ; Function Attrs: nounwind @@ -2713,35 +2973,35 @@ 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.184, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 -while.hdr.143: ; preds = %if.merge.147, %entry +while.hdr.173: ; preds = %if.merge.177, %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.144, label %while.exit.145 + br i1 %icmp, label %while.body.174, label %while.exit.175 -while.body.144: ; preds = %while.hdr.143 +while.body.174: ; preds = %while.hdr.173 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.146, label %if.merge.147 + br i1 %icmpN, label %if.then.176, label %if.merge.177 -while.exit.145: ; preds = %while.hdr.143 +while.exit.175: ; preds = %while.hdr.173 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) ret { ptr, i64 } %call -if.then.146: ; preds = %while.body.144 +if.then.176: ; preds = %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.147 + br label %if.merge.177 -if.merge.147: ; preds = %if.then.146, %while.body.144 +if.merge.177: ; preds = %if.then.176, %while.body.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2758,95 +3018,11 @@ if.merge.147: ; preds = %if.then.146, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.173 } ; 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.168, label %if.else.169 - -if.then.168: ; preds = %entry - br label %if.merge.170 - -if.else.169: ; 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.189, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.170 - -if.merge.170: ; preds = %if.else.169, %if.then.168 - %bp = phi { ptr, i64 } [ { ptr @str.187, i64 4 }, %if.then.168 ], [ %callN, %if.else.169 ] - 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.192, label %if.else.193 - -if.then.192: ; preds = %entry - br label %if.merge.194 - -if.else.193: ; 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.192, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.191, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.194 - -if.merge.194: ; preds = %if.else.193, %if.then.192 - %bp = phi { ptr, i64 } [ { ptr @str.190, i64 4 }, %if.then.192 ], [ %callN, %if.else.193 ] - 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.195, label %if.else.196 - -if.then.195: ; preds = %entry - br label %if.merge.197 - -if.else.196: ; 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.195, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.194, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.197 - -if.merge.197: ; preds = %if.else.196, %if.then.195 - %bp = phi { ptr, i64 } [ { ptr @str.193, i64 4 }, %if.then.195 ], [ %callN, %if.else.196 ] - 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 @@ -2864,12 +3040,96 @@ if.then.198: ; preds = %entry if.else.199: ; 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.198, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.195, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.194, i64 5 }, { ptr, i64 } %callN) br label %if.merge.200 if.merge.200: ; preds = %if.else.199, %if.then.198 - %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.198 ], [ %callN, %if.else.199 ] + %bp = phi { ptr, i64 } [ { ptr @str.193, i64 4 }, %if.then.198 ], [ %callN, %if.else.199 ] + 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.214, label %if.else.215 + +if.then.214: ; preds = %entry + br label %if.merge.216 + +if.else.215: ; 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.198, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.216 + +if.merge.216: ; preds = %if.else.215, %if.then.214 + %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.214 ], [ %callN, %if.else.215 ] + 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.217, label %if.else.218 + +if.then.217: ; preds = %entry + br label %if.merge.219 + +if.else.218: ; 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.201, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.219 + +if.merge.219: ; preds = %if.else.218, %if.then.217 + %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.217 ], [ %callN, %if.else.218 ] + 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.220, label %if.else.221 + +if.then.220: ; preds = %entry + br label %if.merge.222 + +if.else.221: ; 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.204, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.222 + +if.merge.222: ; preds = %if.else.221, %if.then.220 + %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] ret { ptr, i64 } %bp } @@ -2884,20 +3144,20 @@ entry: 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.201, label %if.else.202 + br i1 %icmp, label %if.then.223, label %if.else.224 -if.then.201: ; preds = %entry - br label %if.merge.203 +if.then.223: ; preds = %entry + br label %if.merge.225 -if.else.202: ; preds = %entry +if.else.224: ; 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.201, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.203 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.225 -if.merge.203: ; preds = %if.else.202, %if.then.201 - %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.201 ], [ %callN, %if.else.202 ] +if.merge.225: ; preds = %if.else.224, %if.then.223 + %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] ret { ptr, i64 } %bp } @@ -2911,20 +3171,20 @@ entry: 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.204, label %if.else.205 + br i1 %icmp, label %if.then.226, label %if.else.227 -if.then.204: ; preds = %entry - br label %if.merge.206 +if.then.226: ; preds = %entry + br label %if.merge.228 -if.else.205: ; preds = %entry +if.else.227: ; 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.204, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.206 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.228 -if.merge.206: ; preds = %if.else.205, %if.then.204 - %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.204 ], [ %callN, %if.else.205 ] +if.merge.228: ; preds = %if.else.227, %if.then.226 + %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] ret { ptr, i64 } %bp } @@ -2939,20 +3199,20 @@ entry: 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.207, label %if.else.208 + br i1 %icmp, label %if.then.229, label %if.else.230 -if.then.207: ; preds = %entry - br label %if.merge.209 +if.then.229: ; preds = %entry + br label %if.merge.231 -if.else.208: ; preds = %entry +if.else.230: ; 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.207, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.209 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.231 -if.merge.209: ; preds = %if.else.208, %if.then.207 - %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.207 ], [ %callN, %if.else.208 ] +if.merge.231: ; preds = %if.else.230, %if.then.229 + %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] ret { ptr, i64 } %bp } @@ -2967,20 +3227,20 @@ entry: 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.210, label %if.else.211 + br i1 %icmp, label %if.then.232, label %if.else.233 -if.then.210: ; preds = %entry - br label %if.merge.212 +if.then.232: ; preds = %entry + br label %if.merge.234 -if.else.211: ; preds = %entry +if.else.233: ; 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.210, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.212 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.234 -if.merge.212: ; preds = %if.else.211, %if.then.210 - %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.210 ], [ %callN, %if.else.211 ] +if.merge.234: ; preds = %if.else.233, %if.then.232 + %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] ret { ptr, i64 } %bp } @@ -2995,20 +3255,20 @@ entry: 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.213, label %if.else.214 + br i1 %icmp, label %if.then.235, label %if.else.236 -if.then.213: ; preds = %entry - br label %if.merge.215 +if.then.235: ; preds = %entry + br label %if.merge.237 -if.else.214: ; preds = %entry +if.else.236: ; 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.213, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.215 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.237 -if.merge.215: ; preds = %if.else.214, %if.then.213 - %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.213 ], [ %callN, %if.else.214 ] +if.merge.237: ; preds = %if.else.236, %if.then.235 + %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] ret { ptr, i64 } %bp } @@ -3023,20 +3283,20 @@ entry: 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.216, label %if.else.217 + br i1 %icmp, label %if.then.238, label %if.else.239 -if.then.216: ; preds = %entry - br label %if.merge.218 +if.then.238: ; preds = %entry + br label %if.merge.240 -if.else.217: ; preds = %entry +if.else.239: ; 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.216, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.218 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.240 -if.merge.218: ; preds = %if.else.217, %if.then.216 - %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.216 ], [ %callN, %if.else.217 ] +if.merge.240: ; preds = %if.else.239, %if.then.238 + %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] ret { ptr, i64 } %bp } @@ -3051,20 +3311,20 @@ entry: 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.219, label %if.else.220 + br i1 %icmp, label %if.then.241, label %if.else.242 -if.then.219: ; preds = %entry - br label %if.merge.221 +if.then.241: ; preds = %entry + br label %if.merge.243 -if.else.220: ; preds = %entry +if.else.242: ; 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.219, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.221 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.243 -if.merge.221: ; preds = %if.else.220, %if.then.219 - %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] +if.merge.243: ; preds = %if.else.242, %if.then.241 + %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] ret { ptr, i64 } %bp } @@ -3079,20 +3339,20 @@ entry: 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.222, label %if.else.223 + br i1 %icmp, label %if.then.244, label %if.else.245 -if.then.222: ; preds = %entry - br label %if.merge.224 +if.then.244: ; preds = %entry + br label %if.merge.246 -if.else.223: ; preds = %entry +if.else.245: ; 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.222, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.224 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.246 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] ret { ptr, i64 } %bp } @@ -3107,20 +3367,20 @@ entry: 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.225, label %if.else.226 + br i1 %icmp, label %if.then.247, label %if.else.248 -if.then.225: ; preds = %entry - br label %if.merge.227 +if.then.247: ; preds = %entry + br label %if.merge.249 -if.else.226: ; preds = %entry +if.else.248: ; 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.225, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.227 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.249 -if.merge.227: ; preds = %if.else.226, %if.then.225 - %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] +if.merge.249: ; preds = %if.else.248, %if.then.247 + %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] ret { ptr, i64 } %bp } @@ -3135,20 +3395,20 @@ entry: 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.228, label %if.else.229 + br i1 %icmp, label %if.then.250, label %if.else.251 -if.then.228: ; preds = %entry - br label %if.merge.230 +if.then.250: ; preds = %entry + br label %if.merge.252 -if.else.229: ; preds = %entry +if.else.251: ; 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.228, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.230 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.252 -if.merge.230: ; preds = %if.else.229, %if.then.228 - %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] +if.merge.252: ; preds = %if.else.251, %if.then.250 + %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] ret { ptr, i64 } %bp } @@ -3163,20 +3423,20 @@ entry: 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.231, label %if.else.232 + br i1 %icmp, label %if.then.253, label %if.else.254 -if.then.231: ; preds = %entry - br label %if.merge.233 +if.then.253: ; preds = %entry + br label %if.merge.255 -if.else.232: ; preds = %entry +if.else.254: ; 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.231, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.233 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.255 -if.merge.233: ; preds = %if.else.232, %if.then.231 - %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] +if.merge.255: ; preds = %if.else.254, %if.then.253 + %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] ret { ptr, i64 } %bp } @@ -3191,20 +3451,20 @@ entry: 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.234, label %if.else.235 + br i1 %icmp, label %if.then.256, label %if.else.257 -if.then.234: ; preds = %entry - br label %if.merge.236 +if.then.256: ; preds = %entry + br label %if.merge.258 -if.else.235: ; preds = %entry +if.else.257: ; 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.234, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.236 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.258 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] ret { ptr, i64 } %bp } @@ -3219,20 +3479,20 @@ entry: 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.237, label %if.else.238 + br i1 %icmp, label %if.then.259, label %if.else.260 -if.then.237: ; preds = %entry - br label %if.merge.239 +if.then.259: ; preds = %entry + br label %if.merge.261 -if.else.238: ; preds = %entry +if.else.260: ; 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.237, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.239 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.261 -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] ret { ptr, i64 } %bp } @@ -3247,23 +3507,21 @@ entry: 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.240, label %if.else.241 + br i1 %icmp, label %if.then.262, label %if.else.263 -if.then.240: ; preds = %entry - br label %if.merge.242 +if.then.262: ; preds = %entry + br label %if.merge.264 -if.else.241: ; preds = %entry +if.else.263: ; 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.240, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.242 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.264 -if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0528-packs-protocol-pack-methods.ir b/examples/expected/0528-packs-protocol-pack-methods.ir index 9010159..5086d23 100644 --- a/examples/expected/0528-packs-protocol-pack-methods.ir +++ b/examples/expected/0528-packs-protocol-pack-methods.ir @@ -1,232 +1,233 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [86 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [8 x i8] c"Greeter\00" -@tn.str.42 = private constant [18 x i8] c"__Greeter__Vtable\00" -@tn.str.43 = private constant [4 x i8] c"Dog\00" -@tn.str.44 = private constant [4 x i8] c"Cat\00" -@tn.str.45 = private constant [5 x i8] c"*Dog\00" -@tn.str.46 = private constant [5 x i8] c"*Cat\00" -@tn.str.47 = private constant [10 x i8] c"[]Greeter\00" -@tn.str.48 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.49 = private constant [5 x i8] c"*s64\00" -@tn.str.50 = private constant [7 x i8] c"**void\00" -@tn.str.51 = private constant [6 x i8] c"[]Any\00" -@tn.str.52 = private constant [5 x i8] c"*Any\00" -@tn.str.53 = private constant [7 x i8] c"[2]Any\00" -@tn.str.54 = private constant [8 x i8] c"*[2]Any\00" -@tn.str.55 = private constant [7 x i8] c"*[]Any\00" -@tn.str.56 = private constant [6 x i8] c"**Dog\00" -@tn.str.57 = private constant [6 x i8] c"**Cat\00" -@tn.str.58 = private constant [8 x i8] c"*string\00" -@tn.str.59 = private constant [7 x i8] c"[1]Any\00" -@tn.str.60 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.61 = private constant [4 x i8] c"*u8\00" -@tn.str.62 = private constant [6 x i8] c"*bool\00" -@tn.str.63 = private constant [5 x i8] c"*f64\00" -@tn.str.64 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.65 = private constant [11 x i8] c"*Allocator\00" -@tn.str.66 = private constant [9 x i8] c"*Context\00" -@tn.str.67 = private constant [9 x i8] c"*Greeter\00" -@tn.str.68 = private constant [19 x i8] c"*__Greeter__Vtable\00" -@tn.str.69 = private constant [10 x i8] c"*[]string\00" -@tn.str.70 = private constant [11 x i8] c"*[]Greeter\00" -@tn.str.71 = private constant [6 x i8] c"**GPA\00" -@tn.str.72 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.73 = private constant [8 x i8] c"**Arena\00" -@tn.str.74 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.75 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.76 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.77 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.78 = private constant [6 x i8] c"**s64\00" -@tn.str.79 = private constant [8 x i8] c"***void\00" -@tn.str.80 = private constant [6 x i8] c"**Any\00" -@tn.str.81 = private constant [9 x i8] c"**[2]Any\00" -@tn.str.82 = private constant [8 x i8] c"**[]Any\00" -@tn.str.83 = private constant [7 x i8] c"***Dog\00" -@tn.str.84 = private constant [7 x i8] c"***Cat\00" -@tn.str.85 = private constant [9 x i8] c"**string\00" -@tn.str.86 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.87 = private constant [5 x i8] c"**u8\00" -@tn.str.88 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [84 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 17 }, { ptr, i64 } { ptr @tn.str.43, i64 3 }, { ptr, i64 } { ptr @tn.str.44, i64 3 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 9 }, { ptr, i64 } { ptr @tn.str.48, i64 12 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 5 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 7 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 7 }, { ptr, i64 } { ptr @tn.str.59, i64 6 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 3 }, { ptr, i64 } { ptr @tn.str.62, i64 5 }, { ptr, i64 } { ptr @tn.str.63, i64 4 }, { ptr, i64 } { ptr @tn.str.64, i64 16 }, { ptr, i64 } { ptr @tn.str.65, i64 10 }, { ptr, i64 } { ptr @tn.str.66, i64 8 }, { ptr, i64 } { ptr @tn.str.67, i64 8 }, { ptr, i64 } { ptr @tn.str.68, i64 18 }, { ptr, i64 } { ptr @tn.str.69, i64 9 }, { ptr, i64 } { ptr @tn.str.70, i64 10 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 12 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }, { ptr, i64 } { ptr @tn.str.75, i64 10 }, { ptr, i64 } { ptr @tn.str.76, i64 19 }, { ptr, i64 } { ptr @tn.str.77, i64 13 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 7 }, { ptr, i64 } { ptr @tn.str.80, i64 5 }, { ptr, i64 } { ptr @tn.str.81, i64 8 }, { ptr, i64 } { ptr @tn.str.82, i64 7 }, { ptr, i64 } { ptr @tn.str.83, i64 6 }, { ptr, i64 } { ptr @tn.str.84, i64 6 }, { ptr, i64 } { ptr @tn.str.85, i64 8 }, { ptr, i64 } { ptr @tn.str.86, i64 8 }, { ptr, i64 } { ptr @tn.str.87, i64 4 }, { ptr, i64 } { ptr @tn.str.88, i64 6 }] -@str.89 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.90 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.91 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [8 x i8] c"Greeter\00" +@tn.str.44 = private constant [18 x i8] c"__Greeter__Vtable\00" +@tn.str.45 = private constant [4 x i8] c"Dog\00" +@tn.str.46 = private constant [4 x i8] c"Cat\00" +@tn.str.47 = private constant [5 x i8] c"*Dog\00" +@tn.str.48 = private constant [5 x i8] c"*Cat\00" +@tn.str.49 = private constant [10 x i8] c"[]Greeter\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"[]Any\00" +@tn.str.54 = private constant [5 x i8] c"*Any\00" +@tn.str.55 = private constant [7 x i8] c"[2]Any\00" +@tn.str.56 = private constant [8 x i8] c"*[2]Any\00" +@tn.str.57 = private constant [7 x i8] c"*[]Any\00" +@tn.str.58 = private constant [6 x i8] c"**Dog\00" +@tn.str.59 = private constant [6 x i8] c"**Cat\00" +@tn.str.60 = private constant [8 x i8] c"*string\00" +@tn.str.61 = private constant [7 x i8] c"[1]Any\00" +@tn.str.62 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.63 = private constant [4 x i8] c"*u8\00" +@tn.str.64 = private constant [6 x i8] c"*bool\00" +@tn.str.65 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.66 = private constant [5 x i8] c"*f64\00" +@tn.str.67 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.68 = private constant [11 x i8] c"*Allocator\00" +@tn.str.69 = private constant [9 x i8] c"*Context\00" +@tn.str.70 = private constant [9 x i8] c"*Greeter\00" +@tn.str.71 = private constant [19 x i8] c"*__Greeter__Vtable\00" +@tn.str.72 = private constant [10 x i8] c"*[]string\00" +@tn.str.73 = private constant [11 x i8] c"*[]Greeter\00" +@tn.str.74 = private constant [6 x i8] c"**GPA\00" +@tn.str.75 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.76 = private constant [8 x i8] c"**Arena\00" +@tn.str.77 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.78 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.79 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.80 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.81 = private constant [6 x i8] c"**s64\00" +@tn.str.82 = private constant [8 x i8] c"***void\00" +@tn.str.83 = private constant [6 x i8] c"**Any\00" +@tn.str.84 = private constant [9 x i8] c"**[2]Any\00" +@tn.str.85 = private constant [8 x i8] c"**[]Any\00" +@tn.str.86 = private constant [7 x i8] c"***Dog\00" +@tn.str.87 = private constant [7 x i8] c"***Cat\00" +@tn.str.88 = private constant [9 x i8] c"**string\00" +@tn.str.89 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.90 = private constant [5 x i8] c"**u8\00" +@tn.str.91 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [86 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 7 }, { ptr, i64 } { ptr @tn.str.44, i64 17 }, { ptr, i64 } { ptr @tn.str.45, i64 3 }, { ptr, i64 } { ptr @tn.str.46, i64 3 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { 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 4 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 6 }, { ptr, i64 } { ptr @tn.str.58, i64 5 }, { ptr, i64 } { ptr @tn.str.59, i64 5 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 6 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 3 }, { ptr, i64 } { ptr @tn.str.64, i64 5 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 4 }, { ptr, i64 } { ptr @tn.str.67, i64 16 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 8 }, { ptr, i64 } { ptr @tn.str.71, i64 18 }, { ptr, i64 } { ptr @tn.str.72, i64 9 }, { ptr, i64 } { ptr @tn.str.73, i64 10 }, { ptr, i64 } { ptr @tn.str.74, i64 5 }, { ptr, i64 } { ptr @tn.str.75, i64 12 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }, { ptr, i64 } { ptr @tn.str.78, i64 10 }, { ptr, i64 } { ptr @tn.str.79, i64 19 }, { ptr, i64 } { ptr @tn.str.80, i64 13 }, { ptr, i64 } { ptr @tn.str.81, i64 5 }, { ptr, i64 } { ptr @tn.str.82, i64 7 }, { ptr, i64 } { ptr @tn.str.83, i64 5 }, { ptr, i64 } { ptr @tn.str.84, i64 8 }, { ptr, i64 } { ptr @tn.str.85, i64 7 }, { ptr, i64 } { ptr @tn.str.86, i64 6 }, { ptr, i64 } { ptr @tn.str.87, i64 6 }, { ptr, i64 } { ptr @tn.str.88, i64 8 }, { ptr, i64 } { ptr @tn.str.89, i64 8 }, { ptr, i64 } { ptr @tn.str.90, i64 4 }, { ptr, i64 } { ptr @tn.str.91, i64 6 }] @str.92 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.93 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.94 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.95 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.96 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.97 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.98 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.99 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.100 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.101 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.94 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.96 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.97 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.98 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.99 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.100 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.101 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.102 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.103 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.104 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.105 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.106 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.107 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.108 = private unnamed_addr constant [12 x i8] c"dog+cat={}\0A\00", align 1 -@str.109 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.110 = private unnamed_addr constant [12 x i8] c"dog+cat={}\0A\00", align 1 -@str.111 = private unnamed_addr constant [12 x i8] c"cat+dog={}\0A\00", align 1 +@str.108 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.109 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.110 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.111 = private unnamed_addr constant [12 x i8] c"dog+cat={}\0A\00", align 1 @str.112 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.113 = private unnamed_addr constant [12 x i8] c"cat+dog={}\0A\00", align 1 -@str.114 = private unnamed_addr constant [12 x i8] c"dog+dog={}\0A\00", align 1 +@str.113 = private unnamed_addr constant [12 x i8] c"dog+cat={}\0A\00", align 1 +@str.114 = private unnamed_addr constant [12 x i8] c"cat+dog={}\0A\00", align 1 @str.115 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.116 = private unnamed_addr constant [12 x i8] c"dog+dog={}\0A\00", align 1 -@str.117 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.118 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.119 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.116 = private unnamed_addr constant [12 x i8] c"cat+dog={}\0A\00", align 1 +@str.117 = private unnamed_addr constant [12 x i8] c"dog+dog={}\0A\00", align 1 +@str.118 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.119 = private unnamed_addr constant [12 x i8] c"dog+dog={}\0A\00", align 1 +@str.120 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.121 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.122 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.121 = private constant [5 x i8] c"line\00" -@fld.str.122 = private constant [4 x i8] c"col\00" -@fld.str.123 = 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.121, i64 4 }, { ptr, i64 } { ptr @fld.str.122, i64 3 }, { ptr, i64 } { ptr @fld.str.123, i64 4 }] -@str.124 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.125 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.126 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.127 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.128 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.129 = private constant [4 x i8] c"ctx\00" -@fld.str.130 = private constant [6 x i8] c"alloc\00" -@fld.str.131 = private constant [8 x i8] c"dealloc\00" -@field_names.132 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.129, i64 3 }, { ptr, i64 } { ptr @fld.str.130, i64 5 }, { ptr, i64 } { ptr @fld.str.131, i64 7 }] -@str.133 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.134 = private unnamed_addr constant [11 x i8] c"CAllocator\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 -@field_names.138 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.139 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.140 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.141 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.142 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.143 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.144 = private constant [12 x i8] c"alloc_count\00" -@field_names.145 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.144, i64 11 }] -@str.146 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.147 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.148 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.149 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.150 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.151 = private constant [5 x i8] c"next\00" -@fld.str.152 = private constant [4 x i8] c"cap\00" -@field_names.153 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.151, i64 4 }, { ptr, i64 } { ptr @fld.str.152, i64 3 }] -@str.154 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.155 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.156 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.157 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.159 = private constant [6 x i8] c"first\00" -@fld.str.160 = private constant [10 x i8] c"end_index\00" -@fld.str.161 = private constant [7 x i8] c"parent\00" -@field_names.162 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.159, i64 5 }, { ptr, i64 } { ptr @fld.str.160, i64 9 }, { ptr, i64 } { ptr @fld.str.161, i64 6 }] -@str.163 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.164 = private unnamed_addr constant [9 x i8] c"BufAlloc\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 [4 x i8] c"buf\00" -@fld.str.169 = private constant [4 x i8] c"len\00" -@fld.str.170 = private constant [4 x i8] c"pos\00" -@field_names.171 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.168, i64 3 }, { ptr, i64 } { ptr @fld.str.169, i64 3 }, { ptr, i64 } { ptr @fld.str.170, i64 3 }] -@str.172 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.173 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.174 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.175 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.177 = private constant [7 x i8] c"parent\00" -@fld.str.178 = private constant [12 x i8] c"alloc_count\00" -@fld.str.179 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.180 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.181 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.177, i64 6 }, { ptr, i64 } { ptr @fld.str.178, i64 11 }, { ptr, i64 } { ptr @fld.str.179, i64 13 }, { ptr, i64 } { ptr @fld.str.180, i64 17 }] -@str.182 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.183 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.184 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.185 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.186 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.187 = private constant [10 x i8] c"allocator\00" -@fld.str.188 = private constant [5 x i8] c"data\00" -@field_names.189 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.187, i64 9 }, { ptr, i64 } { ptr @fld.str.188, i64 4 }] -@str.190 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.191 = private unnamed_addr constant [8 x i8] c"Greeter\00", align 1 -@str.192 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.193 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.194 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.195 = private constant [4 x i8] c"ctx\00" -@fld.str.196 = private constant [9 x i8] c"__vtable\00" -@field_names.197 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.195, i64 3 }, { ptr, i64 } { ptr @fld.str.196, i64 8 }] -@str.198 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.199 = private unnamed_addr constant [18 x i8] c"__Greeter__Vtable\00", align 1 -@str.200 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.201 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.203 = private constant [6 x i8] c"greet\00" -@field_names.204 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.203, i64 5 }] -@str.205 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.206 = private unnamed_addr constant [4 x i8] c"Dog\00", align 1 -@str.207 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.208 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.209 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.210 = private constant [4 x i8] c"age\00" -@field_names.211 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.210, i64 3 }] -@str.212 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.213 = private unnamed_addr constant [4 x i8] c"Cat\00", align 1 -@str.214 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.215 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.216 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.217 = private constant [6 x i8] c"lives\00" -@field_names.218 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.217, i64 5 }] -@str.219 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.220 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.221 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.222 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.124 = private constant [5 x i8] c"line\00" +@fld.str.125 = private constant [4 x i8] c"col\00" +@fld.str.126 = 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.124, i64 4 }, { ptr, i64 } { ptr @fld.str.125, i64 3 }, { ptr, i64 } { ptr @fld.str.126, i64 4 }] +@str.127 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.128 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.129 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.130 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.132 = private constant [4 x i8] c"ctx\00" +@fld.str.133 = private constant [6 x i8] c"alloc\00" +@fld.str.134 = private constant [8 x i8] c"dealloc\00" +@field_names.135 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.132, i64 3 }, { ptr, i64 } { ptr @fld.str.133, i64 5 }, { ptr, i64 } { ptr @fld.str.134, i64 7 }] +@str.136 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.137 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.138 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.141 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.142 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.143 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.144 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.145 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.146 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.147 = private constant [12 x i8] c"alloc_count\00" +@field_names.148 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.147, i64 11 }] +@str.149 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.150 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.151 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.152 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.153 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.154 = private constant [5 x i8] c"next\00" +@fld.str.155 = private constant [4 x i8] c"cap\00" +@field_names.156 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.154, i64 4 }, { ptr, i64 } { ptr @fld.str.155, i64 3 }] +@str.157 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.158 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.159 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.160 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.161 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.162 = private constant [6 x i8] c"first\00" +@fld.str.163 = private constant [10 x i8] c"end_index\00" +@fld.str.164 = private constant [7 x i8] c"parent\00" +@field_names.165 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.162, i64 5 }, { ptr, i64 } { ptr @fld.str.163, i64 9 }, { ptr, i64 } { ptr @fld.str.164, i64 6 }] +@str.166 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.167 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.170 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.171 = private constant [4 x i8] c"buf\00" +@fld.str.172 = private constant [4 x i8] c"len\00" +@fld.str.173 = private constant [4 x i8] c"pos\00" +@field_names.174 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.171, i64 3 }, { ptr, i64 } { ptr @fld.str.172, i64 3 }, { ptr, i64 } { ptr @fld.str.173, i64 3 }] +@str.175 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.176 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.177 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.178 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.179 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.180 = private constant [7 x i8] c"parent\00" +@fld.str.181 = private constant [12 x i8] c"alloc_count\00" +@fld.str.182 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.183 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.184 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.180, i64 6 }, { ptr, i64 } { ptr @fld.str.181, i64 11 }, { ptr, i64 } { ptr @fld.str.182, i64 13 }, { ptr, i64 } { ptr @fld.str.183, i64 17 }] +@str.185 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.186 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.187 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.188 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.189 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.190 = private constant [10 x i8] c"allocator\00" +@fld.str.191 = private constant [5 x i8] c"data\00" +@field_names.192 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.190, i64 9 }, { ptr, i64 } { ptr @fld.str.191, i64 4 }] +@str.193 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.194 = private unnamed_addr constant [8 x i8] c"Greeter\00", align 1 +@str.195 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.196 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.197 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.198 = private constant [4 x i8] c"ctx\00" +@fld.str.199 = private constant [9 x i8] c"__vtable\00" +@field_names.200 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.198, i64 3 }, { ptr, i64 } { ptr @fld.str.199, i64 8 }] +@str.201 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.202 = private unnamed_addr constant [18 x i8] c"__Greeter__Vtable\00", align 1 +@str.203 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.204 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.205 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.206 = private constant [6 x i8] c"greet\00" +@field_names.207 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.206, i64 5 }] +@str.208 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.209 = private unnamed_addr constant [4 x i8] c"Dog\00", align 1 +@str.210 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.211 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.212 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.213 = private constant [4 x i8] c"age\00" +@field_names.214 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.213, i64 3 }] +@str.215 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.216 = private unnamed_addr constant [4 x i8] c"Cat\00", align 1 +@str.217 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.218 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.219 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.220 = private constant [6 x i8] c"lives\00" +@field_names.221 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.220, i64 5 }] +@str.222 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.223 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.224 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.225 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -239,72 +240,78 @@ @str.232 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.233 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.234 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.235 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.236 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.237 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.238 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.239 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.240 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.235 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.236 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.237 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.238 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.239 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.240 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.241 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.242 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.242 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.243 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.244 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.245 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.245 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.246 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.247 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.248 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.248 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.249 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.250 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.251 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.251 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.252 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.253 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.254 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.254 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.255 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.256 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.257 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.257 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.258 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.259 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.260 = private unnamed_addr constant [5 x i8] c"*Dog\00", align 1 +@str.260 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.261 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.262 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.263 = private unnamed_addr constant [5 x i8] c"*Cat\00", align 1 +@str.263 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.264 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.265 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.266 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.266 = private unnamed_addr constant [5 x i8] c"*Dog\00", align 1 @str.267 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.268 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.269 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.269 = private unnamed_addr constant [5 x i8] c"*Cat\00", align 1 @str.270 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.271 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.272 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.272 = private unnamed_addr constant [13 x i8] c"**CAllocator\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 [5 x i8] c"*Any\00", align 1 +@str.275 = private unnamed_addr constant [5 x i8] c"*s64\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 [8 x i8] c"*[2]Any\00", align 1 +@str.278 = private unnamed_addr constant [7 x i8] c"**void\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 [7 x i8] c"*[]Any\00", align 1 +@str.281 = private unnamed_addr constant [5 x i8] c"*Any\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 [6 x i8] c"**Dog\00", align 1 +@str.284 = private unnamed_addr constant [8 x i8] c"*[2]Any\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"**Cat\00", align 1 +@str.287 = private unnamed_addr constant [7 x i8] c"*[]Any\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 [8 x i8] c"*string\00", align 1 +@str.290 = private unnamed_addr constant [6 x i8] c"**Dog\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 [8 x i8] c"*[1]Any\00", align 1 +@str.293 = private unnamed_addr constant [6 x i8] c"**Cat\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 [4 x i8] c"*u8\00", align 1 +@str.296 = private unnamed_addr constant [8 x i8] c"*string\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 [6 x i8] c"*bool\00", align 1 +@str.299 = private unnamed_addr constant [8 x i8] c"*[1]Any\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 [4 x i8] c"*u8\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 [6 x i8] c"*bool\00", align 1 +@str.306 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -443,38 +450,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -487,50 +499,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -544,19 +684,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -573,15 +713,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -599,16 +739,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -625,17 +765,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -698,39 +838,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.221 + br label %while.hdr.243 -while.hdr.221: ; preds = %if.merge.226, %entry +while.hdr.243: ; preds = %if.merge.248, %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.222, label %while.exit.223 + br i1 %icmp, label %while.body.244, label %while.exit.245 -while.body.222: ; preds = %while.hdr.221 +while.body.244: ; preds = %while.hdr.243 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.224, label %if.else.225 + br i1 %icmpN, label %if.then.246, label %if.else.247 -while.exit.223: ; preds = %while.hdr.221 +while.exit.245: ; preds = %while.hdr.243 ret void -if.then.224: ; preds = %while.body.222 +if.then.246: ; preds = %while.body.244 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.226 + br label %if.merge.248 -if.else.225: ; preds = %while.body.222 +if.else.247: ; preds = %while.body.244 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.226 + br label %if.merge.248 -if.merge.226: ; preds = %if.else.225, %if.then.224 - %bp = phi i64 [ %addN, %if.then.224 ], [ %addN, %if.else.225 ] +if.merge.248: ; preds = %if.else.247, %if.then.246 + %bp = phi i64 [ %addN, %if.then.246 ], [ %addN, %if.else.247 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -743,37 +883,29 @@ if.merge.226: ; preds = %if.else.225, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.221 + br label %while.hdr.243 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.211, label %if.merge.212 - -if.then.211: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.212: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.213, label %if.merge.214 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.213: ; preds = %if.merge.212 +if.then.58: ; 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.214 + br label %if.merge.59 -if.merge.214: ; preds = %if.then.213, %if.merge.212 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -786,15 +918,15 @@ if.merge.214: ; preds = %if.then.213, %if.me 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.215, label %if.merge.216 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.215: ; preds = %if.merge.214 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.216 + br label %if.merge.61 -if.merge.216: ; preds = %if.then.215, %if.merge.214 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -807,15 +939,15 @@ if.merge.216: ; preds = %if.then.215, %if.me 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.217, label %if.merge.218 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.217: ; preds = %if.merge.216 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.218 + br label %if.merge.63 -if.merge.218: ; preds = %if.then.217, %if.merge.216 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -828,65 +960,116 @@ if.merge.218: ; preds = %if.then.217, %if.me 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.219, label %if.merge.220 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.219: ; preds = %if.merge.218 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.220 + br label %if.merge.65 -if.merge.220: ; preds = %if.then.219, %if.merge.218 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.241, label %if.merge.242 + +if.then.241: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.242: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.227 + br label %while.hdr.249 -while.hdr.227: ; preds = %if.merge.231, %if.merge.220 +while.hdr.249: ; preds = %if.merge.253, %if.merge.242 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.228, label %while.exit.229 + br i1 %icmpN, label %while.body.250, label %while.exit.251 -while.body.228: ; preds = %while.hdr.227 +while.body.250: ; preds = %while.hdr.249 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.230, label %if.merge.231 + br i1 %icmpN, label %if.then.252, label %if.merge.253 -while.exit.229: ; preds = %if.then.230, %while.hdr.227 +while.exit.251: ; preds = %if.then.252, %while.hdr.249 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.230: ; preds = %while.body.228 - br label %while.exit.229 +if.then.252: ; preds = %while.body.250 + br label %while.exit.251 -if.merge.231: ; preds = %while.body.228 +if.merge.253: ; preds = %while.body.250 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.227 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.249 } ; Function Attrs: nounwind @@ -965,7 +1148,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -973,554 +1156,581 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 36, label %match.arm.44 - i64 37, label %match.arm.44 - i64 38, label %match.arm.44 - i64 39, label %match.arm.44 - i64 48, label %match.arm.48 - i64 54, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 37, label %match.arm.43 + i64 38, label %match.arm.43 + i64 39, label %match.arm.43 + i64 40, label %match.arm.43 + i64 35, label %match.arm.47 + i64 49, label %match.arm.47 + i64 55, label %match.arm.47 + i64 36, label %match.arm.48 + i64 43, label %match.arm.48 + i64 47, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 41, label %match.arm.49 i64 42, label %match.arm.49 + i64 44, label %match.arm.49 + i64 45, label %match.arm.49 i64 46, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 40, label %match.arm.50 - i64 41, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 47, label %match.arm.50 - i64 49, label %match.arm.50 - i64 50, label %match.arm.50 - i64 51, label %match.arm.50 - i64 52, label %match.arm.50 - i64 53, label %match.arm.50 - i64 55, label %match.arm.50 - i64 56, label %match.arm.50 - i64 57, label %match.arm.50 - i64 13, label %match.arm.52 + i64 48, label %match.arm.49 + i64 50, label %match.arm.49 + i64 51, label %match.arm.49 + i64 52, label %match.arm.49 + i64 53, label %match.arm.49 + i64 54, label %match.arm.49 + i64 56, label %match.arm.49 + i64 57, label %match.arm.49 + i64 58, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.184, %dispatch.merge.164, %dispatch.merge.150, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.214, %dispatch.merge.194, %dispatch.merge.174, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [86 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 36, label %dispatch.case.81 - i64 37, label %dispatch.case.82 - i64 38, label %dispatch.case.83 - i64 39, label %dispatch.case.84 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 37, label %dispatch.case.105 + i64 38, label %dispatch.case.106 + i64 39, label %dispatch.case.107 + i64 40, label %dispatch.case.108 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! +match.arm.47: ; preds = %entry, %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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw20, label %dispatch.default.175 [ + i64 35, label %dispatch.case.176 + i64 49, label %dispatch.case.177 + i64 55, label %dispatch.case.178 + ] + +match.arm.48: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.195 [ + i64 36, label %dispatch.case.196 + i64 43, label %dispatch.case.197 + i64 47, label %dispatch.case.198 + ] + +match.arm.49: ; 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.raw28 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw28, label %dispatch.default.215 [ + i64 18, label %dispatch.case.216 + i64 22, label %dispatch.case.217 + i64 24, label %dispatch.case.218 + i64 26, label %dispatch.case.219 + i64 28, label %dispatch.case.220 + i64 29, label %dispatch.case.221 + i64 31, label %dispatch.case.222 + i64 33, label %dispatch.case.223 + i64 41, label %dispatch.case.224 + i64 42, label %dispatch.case.225 + i64 44, label %dispatch.case.226 + i64 45, label %dispatch.case.227 + i64 46, label %dispatch.case.228 + i64 48, label %dispatch.case.229 + i64 50, label %dispatch.case.230 + i64 51, label %dispatch.case.231 + i64 52, label %dispatch.case.232 + i64 53, label %dispatch.case.233 + i64 54, label %dispatch.case.234 + i64 56, label %dispatch.case.235 + i64 57, label %dispatch.case.236 + i64 58, label %dispatch.case.237 + ] + +match.arm.50: ; No predecessors! unreachable -match.arm.48: ; preds = %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.151 [ - i64 48, label %dispatch.case.152 - i64 54, label %dispatch.case.153 - ] - -match.arm.49: ; preds = %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.165 [ - i64 35, label %dispatch.case.166 - i64 42, label %dispatch.case.167 - i64 46, label %dispatch.case.168 - ] - -match.arm.50: ; 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.raw30 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.185 [ - i64 18, label %dispatch.case.186 - i64 22, label %dispatch.case.187 - i64 24, label %dispatch.case.188 - i64 26, label %dispatch.case.189 - i64 28, label %dispatch.case.190 - i64 29, label %dispatch.case.191 - i64 31, label %dispatch.case.192 - i64 33, label %dispatch.case.193 - i64 40, label %dispatch.case.194 - i64 41, label %dispatch.case.195 - i64 43, label %dispatch.case.196 - i64 44, label %dispatch.case.197 - i64 45, label %dispatch.case.198 - i64 47, label %dispatch.case.199 - i64 49, label %dispatch.case.200 - i64 50, label %dispatch.case.201 - i64 51, label %dispatch.case.202 - i64 52, label %dispatch.case.203 - i64 53, label %dispatch.case.204 - i64 55, label %dispatch.case.205 - i64 56, label %dispatch.case.206 - i64 57, label %dispatch.case.207 - ] - -match.arm.51: ; No predecessors! - unreachable - -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [84 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [86 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw34 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw33) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw36 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw36) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw38 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw35 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw35 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw39 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.108, %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.89, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.92, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr40 = inttoptr i64 %ua.raw39 to ptr - %ua.load41 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr40, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load41) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { ptr, ptr, ptr }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) + %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load {}, ptr %ua.ptr48, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load49) + %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load { i64 }, ptr %ua.ptr52, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load53) + %ua.load53 = load {}, ptr %ua.ptr52, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { ptr, i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load57) + %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load61) + %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, i64 }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load65) + %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load73) + %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { ptr, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Greeter(ptr %0, { ptr, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load { ptr }, ptr %ua.ptr80, align 8 - %callN = call { ptr, i64 } @struct_to_string____Greeter__Vtable(ptr %0, { ptr } %ua.load81) + %ua.load81 = load { ptr, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Greeter(ptr %0, { ptr, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { i64 }, ptr %ua.ptr84, align 8 - %callN = call { ptr, i64 } @struct_to_string__Dog(ptr %0, { i64 } %ua.load85) + %ua.load85 = load { ptr }, ptr %ua.ptr84, align 8 + %callN = call { ptr, i64 } @struct_to_string____Greeter__Vtable(ptr %0, { ptr } %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.84: ; preds = %match.arm.44 +dispatch.case.107: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr %ua.load89 = load { i64 }, ptr %ua.ptr88, align 8 - %callN = call { ptr, i64 } @struct_to_string__Cat(ptr %0, { i64 } %ua.load89) + %callN = call { ptr, i64 } @struct_to_string__Dog(ptr %0, { i64 } %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.150: ; preds = %dispatch.case.153, %dispatch.case.152, %dispatch.default.151 +dispatch.case.108: ; preds = %match.arm.43 + %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr + %ua.load93 = load { i64 }, ptr %ua.ptr92, align 8 + %callN = call { ptr, i64 } @struct_to_string__Cat(ptr %0, { i64 } %ua.load93) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.174: ; preds = %dispatch.case.178, %dispatch.case.177, %dispatch.case.176, %dispatch.default.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.151: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.90, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.150 +dispatch.default.175: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.174 -dispatch.case.152: ; preds = %match.arm.48 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr93 = inttoptr i64 %ua.raw92 to ptr - %ua.load94 = load [2 x { i64, i64 }], ptr %ua.ptr93, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %ua.load94) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.150 - -dispatch.case.153: ; preds = %match.arm.48 +dispatch.case.176: ; preds = %match.arm.47 %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr97 = inttoptr i64 %ua.raw96 to ptr - %ua.load98 = load [1 x { i64, i64 }], ptr %ua.ptr97, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load98) + %ua.load98 = load [4 x i64], ptr %ua.ptr97, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load98) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.150 + br label %dispatch.merge.174 -dispatch.merge.164: ; preds = %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.default.165 +dispatch.case.177: ; preds = %match.arm.47 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr101 = inttoptr i64 %ua.raw100 to ptr + %ua.load102 = load [2 x { i64, i64 }], ptr %ua.ptr101, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %ua.load102) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.174 + +dispatch.case.178: ; preds = %match.arm.47 + %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr105 = inttoptr i64 %ua.raw104 to ptr + %ua.load106 = load [1 x { i64, i64 }], ptr %ua.ptr105, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load106) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.174 + +dispatch.merge.194: ; preds = %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.default.195 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.165: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.91, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.164 +dispatch.default.195: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.194 -dispatch.case.166: ; preds = %match.arm.49 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr - %ua.load103 = load { ptr, i64 }, ptr %ua.ptr102, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load103) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.164 - -dispatch.case.167: ; preds = %match.arm.49 - %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr - %ua.load107 = load { ptr, i64 }, ptr %ua.ptr106, align 8 - %callN = call { ptr, i64 } @slice_to_string__Greeter(ptr %0, { ptr, i64 } %ua.load107) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.164 - -dispatch.case.168: ; preds = %match.arm.49 +dispatch.case.196: ; preds = %match.arm.48 %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr %ua.load111 = load { ptr, i64 }, ptr %ua.ptr110, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load111) + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load111) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.164 + br label %dispatch.merge.194 -dispatch.merge.184: ; preds = %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 +dispatch.case.197: ; preds = %match.arm.48 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr114 = inttoptr i64 %ua.raw113 to ptr + %ua.load115 = load { ptr, i64 }, ptr %ua.ptr114, align 8 + %callN = call { ptr, i64 } @slice_to_string__Greeter(ptr %0, { ptr, i64 } %ua.load115) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.194 + +dispatch.case.198: ; preds = %match.arm.48 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr118 = inttoptr i64 %ua.raw117 to ptr + %ua.load119 = load { ptr, i64 }, ptr %ua.ptr118, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load119) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.194 + +dispatch.merge.214: ; preds = %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.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.default.215 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.185: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.92, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.184 +dispatch.default.215: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.95, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.214 -dispatch.case.186: ; preds = %match.arm.50 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw114 to ptr +dispatch.case.216: ; preds = %match.arm.49 + %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw122 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.184 + br label %dispatch.merge.214 -dispatch.case.187: ; preds = %match.arm.50 - %ua.raw116 = extractvalue { i64, i64 } %loadN, 1 - %iNp117 = inttoptr i64 %ua.raw116 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp117) +dispatch.case.217: ; preds = %match.arm.49 + %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 + %iNp125 = inttoptr i64 %ua.raw124 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp125) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.188: ; preds = %match.arm.50 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp120 = inttoptr i64 %ua.raw119 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp120) +dispatch.case.218: ; preds = %match.arm.49 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp128 = inttoptr i64 %ua.raw127 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp128) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.189: ; preds = %match.arm.50 - %ua.raw122 = extractvalue { i64, i64 } %loadN, 1 - %iNp123 = inttoptr i64 %ua.raw122 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp123) +dispatch.case.219: ; preds = %match.arm.49 + %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 + %iNp131 = inttoptr i64 %ua.raw130 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp131) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.190: ; preds = %match.arm.50 - %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 - %iNp126 = inttoptr i64 %ua.raw125 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp126) +dispatch.case.220: ; preds = %match.arm.49 + %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 + %iNp134 = inttoptr i64 %ua.raw133 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp134) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.191: ; preds = %match.arm.50 - %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 - %iNp129 = inttoptr i64 %ua.raw128 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp129) +dispatch.case.221: ; preds = %match.arm.49 + %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 + %iNp137 = inttoptr i64 %ua.raw136 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp137) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.192: ; preds = %match.arm.50 - %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 - %iNp132 = inttoptr i64 %ua.raw131 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp132) +dispatch.case.222: ; preds = %match.arm.49 + %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 + %iNp140 = inttoptr i64 %ua.raw139 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp140) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.193: ; preds = %match.arm.50 - %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 - %iNp135 = inttoptr i64 %ua.raw134 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp135) +dispatch.case.223: ; preds = %match.arm.49 + %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 + %iNp143 = inttoptr i64 %ua.raw142 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp143) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.194: ; preds = %match.arm.50 - %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 - %iNp138 = inttoptr i64 %ua.raw137 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Dog(ptr %0, ptr %iNp138) +dispatch.case.224: ; preds = %match.arm.49 + %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 + %iNp146 = inttoptr i64 %ua.raw145 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Dog(ptr %0, ptr %iNp146) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.195: ; preds = %match.arm.50 - %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 - %iNp141 = inttoptr i64 %ua.raw140 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Cat(ptr %0, ptr %iNp141) +dispatch.case.225: ; preds = %match.arm.49 + %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 + %iNp149 = inttoptr i64 %ua.raw148 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Cat(ptr %0, ptr %iNp149) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.196: ; preds = %match.arm.50 - %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 - %iNp144 = inttoptr i64 %ua.raw143 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp144) +dispatch.case.226: ; preds = %match.arm.49 + %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 + %iNp152 = inttoptr i64 %ua.raw151 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp152) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.197: ; preds = %match.arm.50 - %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 - %iNp147 = inttoptr i64 %ua.raw146 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp147) +dispatch.case.227: ; preds = %match.arm.49 + %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 + %iNp155 = inttoptr i64 %ua.raw154 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp155) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.198: ; preds = %match.arm.50 - %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 - %iNp150 = inttoptr i64 %ua.raw149 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp150) +dispatch.case.228: ; preds = %match.arm.49 + %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 + %iNp158 = inttoptr i64 %ua.raw157 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp158) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.199: ; preds = %match.arm.50 - %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 - %iNp153 = inttoptr i64 %ua.raw152 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp153) +dispatch.case.229: ; preds = %match.arm.49 + %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 + %iNp161 = inttoptr i64 %ua.raw160 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp161) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.200: ; preds = %match.arm.50 - %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 - %iNp156 = inttoptr i64 %ua.raw155 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_2_Any(ptr %0, ptr %iNp156) +dispatch.case.230: ; preds = %match.arm.49 + %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 + %iNp164 = inttoptr i64 %ua.raw163 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_2_Any(ptr %0, ptr %iNp164) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.201: ; preds = %match.arm.50 - %ua.raw158 = extractvalue { i64, i64 } %loadN, 1 - %iNp159 = inttoptr i64 %ua.raw158 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp159) +dispatch.case.231: ; preds = %match.arm.49 + %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 + %iNp167 = inttoptr i64 %ua.raw166 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp167) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.202: ; preds = %match.arm.50 - %ua.raw161 = extractvalue { i64, i64 } %loadN, 1 - %iNp162 = inttoptr i64 %ua.raw161 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Dog(ptr %0, ptr %iNp162) +dispatch.case.232: ; preds = %match.arm.49 + %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 + %iNp170 = inttoptr i64 %ua.raw169 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Dog(ptr %0, ptr %iNp170) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.203: ; preds = %match.arm.50 - %ua.raw164 = extractvalue { i64, i64 } %loadN, 1 - %iNp165 = inttoptr i64 %ua.raw164 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Cat(ptr %0, ptr %iNp165) +dispatch.case.233: ; preds = %match.arm.49 + %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 + %iNp173 = inttoptr i64 %ua.raw172 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Cat(ptr %0, ptr %iNp173) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.204: ; preds = %match.arm.50 - %ua.raw167 = extractvalue { i64, i64 } %loadN, 1 - %iNp168 = inttoptr i64 %ua.raw167 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp168) +dispatch.case.234: ; preds = %match.arm.49 + %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.184 + br label %dispatch.merge.214 -dispatch.case.205: ; preds = %match.arm.50 - %ua.raw170 = extractvalue { i64, i64 } %loadN, 1 - %iNp171 = inttoptr i64 %ua.raw170 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp171) +dispatch.case.235: ; preds = %match.arm.49 + %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 + %iNp179 = inttoptr i64 %ua.raw178 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp179) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.206: ; preds = %match.arm.50 - %ua.raw173 = extractvalue { i64, i64 } %loadN, 1 - %iNp174 = inttoptr i64 %ua.raw173 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp174) +dispatch.case.236: ; preds = %match.arm.49 + %ua.raw181 = extractvalue { i64, i64 } %loadN, 1 + %iNp182 = inttoptr i64 %ua.raw181 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp182) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.207: ; preds = %match.arm.50 - %ua.raw176 = extractvalue { i64, i64 } %loadN, 1 - %iNp177 = inttoptr i64 %ua.raw176 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp177) +dispatch.case.237: ; preds = %match.arm.49 + %ua.raw184 = extractvalue { i64, i64 } %loadN, 1 + %iNp185 = inttoptr i64 %ua.raw184 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp185) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 } ; Function Attrs: nounwind @@ -1529,7 +1739,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.93, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.96, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1560,7 +1770,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1578,9 +1788,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1618,14 +1828,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, 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 @@ -1633,7 +1843,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, 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 @@ -1643,13 +1853,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, 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 @@ -1657,7 +1867,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1669,83 +1879,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, 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.100, 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.101, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1773,18 +1907,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.105, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1797,6 +1968,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, 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.107, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, 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.109, 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 @@ -1805,11 +2015,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1887,14 +2097,14 @@ entry: %ba.tmp = alloca { i64 }, align 8 store { i64 } %load, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 %igp.ptr = getelementptr { i64, i64 }, ptr %allocaN, i64 0 store { i64, i64 } %ba.val, ptr %igp.ptr, align 8 %loadN = load { i64 }, ptr %allocaN, align 8 %ba.tmp4 = alloca { i64 }, align 8 store { i64 } %loadN, ptr %ba.tmp4, align 8 %ba.p2i5 = ptrtoint ptr %ba.tmp4 to i64 - %ba.val6 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i5, 1 + %ba.val6 = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i5, 1 %igp.ptr7 = getelementptr { i64, i64 }, ptr %allocaN, i64 1 store { i64, i64 } %ba.val6, ptr %igp.ptr7, align 8 %allocaN = alloca { ptr, i64 }, align 8 @@ -1917,96 +2127,6 @@ entry: ; Function Attrs: nounwind define internal void @print__ct_sa93836785e55c522__pack_s64(ptr %0, i64 %1) #0 { -entry: - %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.108, i64 11 }, ptr %alloca, align 8 - %allocaN = alloca i64, align 8 - store i64 %1, ptr %allocaN, align 8 - %allocaN = alloca [1 x { i64, i64 }], align 8 - %load = load i64, ptr %allocaN, align 8 - %ba.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %load, 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.109, 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 8) - %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 i64, ptr %allocaN, align 8 - %ba.val12 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %loadN, 1 - %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val12) - %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 10, 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_0(ptr %0) #0 { -entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.110, i64 11 }) - ret { ptr, i64 } %call -} - -; Function Attrs: nounwind -define internal i64 @pair_sum__pack_Cat_Dog(ptr %0, { i64 } %1, { i64 } %2) #0 { -entry: - %alloca = alloca { i64 }, align 8 - store { i64 } %1, ptr %alloca, align 8 - %allocaN = alloca { i64 }, align 8 - store { i64 } %2, ptr %allocaN, align 8 - %allocaN = alloca [2 x { i64, i64 }], align 8 - %load = load { i64 }, ptr %alloca, align 8 - %ba.tmp = alloca { i64 }, align 8 - store { i64 } %load, ptr %ba.tmp, align 8 - %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 - %igp.ptr = getelementptr { i64, i64 }, ptr %allocaN, i64 0 - store { i64, i64 } %ba.val, ptr %igp.ptr, align 8 - %loadN = load { i64 }, ptr %allocaN, align 8 - %ba.tmp4 = alloca { i64 }, align 8 - store { i64 } %loadN, ptr %ba.tmp4, align 8 - %ba.p2i5 = ptrtoint ptr %ba.tmp4 to i64 - %ba.val6 = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i5, 1 - %igp.ptr7 = getelementptr { i64, i64 }, ptr %allocaN, i64 1 - store { i64, i64 } %ba.val6, ptr %igp.ptr7, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - %igp.ptr9 = getelementptr { i64, i64 }, ptr %allocaN, i64 0 - %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 - store ptr %igp.ptr9, ptr %gep, align 8 - %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 - store i64 2, ptr %gepN, align 8 - %loadN = load { i64 }, ptr %alloca, align 8 - %allocaN = alloca { i64 }, align 8 - store { i64 } %loadN, ptr %allocaN, align 8 - %call = call i64 @Cat.greet(ptr %0, ptr %allocaN) - %loadN = load { i64 }, ptr %allocaN, align 8 - %allocaN = alloca { i64 }, align 8 - store { i64 } %loadN, ptr %allocaN, align 8 - %callN = call i64 @Dog.greet(ptr %0, ptr %allocaN) - %add = add i64 %call, %callN - ret i64 %add -} - -; Function Attrs: nounwind -define internal void @print__ct_sdcda2f2aa37cf168__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.111, i64 11 }, ptr %alloca, align 8 @@ -2049,14 +2169,14 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_1(ptr %0) #0 { +define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.113, i64 11 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal i64 @pair_sum__pack_Dog_Dog(ptr %0, { i64 } %1, { i64 } %2) #0 { +define internal i64 @pair_sum__pack_Cat_Dog(ptr %0, { i64 } %1, { i64 } %2) #0 { entry: %alloca = alloca { i64 }, align 8 store { i64 } %1, ptr %alloca, align 8 @@ -2067,14 +2187,14 @@ entry: %ba.tmp = alloca { i64 }, align 8 store { i64 } %load, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 1 %igp.ptr = getelementptr { i64, i64 }, ptr %allocaN, i64 0 store { i64, i64 } %ba.val, ptr %igp.ptr, align 8 %loadN = load { i64 }, ptr %allocaN, align 8 %ba.tmp4 = alloca { i64 }, align 8 store { i64 } %loadN, ptr %ba.tmp4, align 8 %ba.p2i5 = ptrtoint ptr %ba.tmp4 to i64 - %ba.val6 = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i5, 1 + %ba.val6 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i5, 1 %igp.ptr7 = getelementptr { i64, i64 }, ptr %allocaN, i64 1 store { i64, i64 } %ba.val6, ptr %igp.ptr7, align 8 %allocaN = alloca { ptr, i64 }, align 8 @@ -2086,7 +2206,7 @@ entry: %loadN = load { i64 }, ptr %alloca, align 8 %allocaN = alloca { i64 }, align 8 store { i64 } %loadN, ptr %allocaN, align 8 - %call = call i64 @Dog.greet(ptr %0, ptr %allocaN) + %call = call i64 @Cat.greet(ptr %0, ptr %allocaN) %loadN = load { i64 }, ptr %allocaN, align 8 %allocaN = alloca { i64 }, align 8 store { i64 } %loadN, ptr %allocaN, align 8 @@ -2096,7 +2216,7 @@ entry: } ; Function Attrs: nounwind -define internal void @print__ct_s1a602d8c97d1af91__pack_s64(ptr %0, i64 %1) #0 { +define internal void @print__ct_sdcda2f2aa37cf168__pack_s64(ptr %0, i64 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.114, i64 11 }, ptr %alloca, align 8 @@ -2139,46 +2259,136 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_2(ptr %0) #0 { +define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.116, i64 11 }) ret { ptr, i64 } %call } +; Function Attrs: nounwind +define internal i64 @pair_sum__pack_Dog_Dog(ptr %0, { i64 } %1, { i64 } %2) #0 { +entry: + %alloca = alloca { i64 }, align 8 + store { i64 } %1, ptr %alloca, align 8 + %allocaN = alloca { i64 }, align 8 + store { i64 } %2, ptr %allocaN, align 8 + %allocaN = alloca [2 x { i64, i64 }], align 8 + %load = load { i64 }, ptr %alloca, align 8 + %ba.tmp = alloca { i64 }, align 8 + store { i64 } %load, ptr %ba.tmp, align 8 + %ba.p2i = ptrtoint ptr %ba.tmp to i64 + %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %igp.ptr = getelementptr { i64, i64 }, ptr %allocaN, i64 0 + store { i64, i64 } %ba.val, ptr %igp.ptr, align 8 + %loadN = load { i64 }, ptr %allocaN, align 8 + %ba.tmp4 = alloca { i64 }, align 8 + store { i64 } %loadN, ptr %ba.tmp4, align 8 + %ba.p2i5 = ptrtoint ptr %ba.tmp4 to i64 + %ba.val6 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i5, 1 + %igp.ptr7 = getelementptr { i64, i64 }, ptr %allocaN, i64 1 + store { i64, i64 } %ba.val6, ptr %igp.ptr7, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + %igp.ptr9 = getelementptr { i64, i64 }, ptr %allocaN, i64 0 + %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 + store ptr %igp.ptr9, ptr %gep, align 8 + %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 + store i64 2, ptr %gepN, align 8 + %loadN = load { i64 }, ptr %alloca, align 8 + %allocaN = alloca { i64 }, align 8 + store { i64 } %loadN, ptr %allocaN, align 8 + %call = call i64 @Dog.greet(ptr %0, ptr %allocaN) + %loadN = load { i64 }, ptr %allocaN, align 8 + %allocaN = alloca { i64 }, align 8 + store { i64 } %loadN, ptr %allocaN, align 8 + %callN = call i64 @Dog.greet(ptr %0, ptr %allocaN) + %add = add i64 %call, %callN + ret i64 %add +} + +; Function Attrs: nounwind +define internal void @print__ct_s1a602d8c97d1af91__pack_s64(ptr %0, i64 %1) #0 { +entry: + %alloca = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.117, i64 11 }, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %1, ptr %allocaN, align 8 + %allocaN = alloca [1 x { i64, i64 }], align 8 + %load = load i64, ptr %allocaN, align 8 + %ba.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %load, 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.118, 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 8) + %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 i64, ptr %allocaN, align 8 + %ba.val12 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %loadN, 1 + %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val12) + %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 10, 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_2(ptr %0) #0 { +entry: + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.119, i64 11 }) + 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 store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.117, i64 15 }, { ptr, i64 } { ptr @str.118, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.120, i64 15 }, { ptr, i64 } { ptr @str.121, 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.85 + br label %while.hdr.109 -while.hdr.85: ; preds = %fv.merge, %entry +while.hdr.109: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.86, label %while.exit.87 + br i1 %icmp, label %while.body.110, label %while.exit.111 -while.body.86: ; preds = %while.hdr.85 +while.body.110: ; preds = %while.hdr.109 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.88, label %if.merge.89 + br i1 %icmpN, label %if.then.112, label %if.merge.113 -while.exit.87: ; preds = %while.hdr.85 +while.exit.111: ; preds = %while.hdr.109 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 1 }) ret { ptr, i64 } %callN -if.then.88: ; preds = %while.body.86 +if.then.112: ; preds = %while.body.110 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.89 + br label %if.merge.113 -if.merge.89: ; preds = %if.then.88, %while.body.86 +if.merge.113: ; preds = %if.then.112, %while.body.110 %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 @@ -2186,7 +2396,7 @@ if.merge.89: ; preds = %if.then.88, %while. %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.124, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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 @@ -2206,12 +2416,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.85 + br label %while.hdr.109 -fv.default: ; preds = %if.merge.89 +fv.default: ; preds = %if.merge.113 br label %fv.merge -fv.case: ; preds = %if.merge.89 +fv.case: ; preds = %if.merge.113 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2219,19 +2429,19 @@ fv.case: ; preds = %if.merge.89 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.89 +fv.case17: ; preds = %if.merge.113 %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.89 +fv.case20: ; preds = %if.merge.113 %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.89 +fv.case24: ; preds = %if.merge.113 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2245,43 +2455,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.125, i64 9 }, { ptr, i64 } { ptr @str.126, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.128, i64 9 }, { ptr, i64 } { ptr @str.129, 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.90 + br label %while.hdr.114 -while.hdr.90: ; preds = %fv.merge, %entry +while.hdr.114: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.91, label %while.exit.92 + br i1 %icmp, label %while.body.115, label %while.exit.116 -while.body.91: ; preds = %while.hdr.90 +while.body.115: ; preds = %while.hdr.114 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.93, label %if.merge.94 + br i1 %icmpN, label %if.then.117, label %if.merge.118 -while.exit.92: ; preds = %while.hdr.90 +while.exit.116: ; preds = %while.hdr.114 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 1 }) ret { ptr, i64 } %callN -if.then.93: ; preds = %while.body.91 +if.then.117: ; preds = %while.body.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.94 + br label %if.merge.118 -if.merge.94: ; preds = %if.then.93, %while.body.91 +if.merge.118: ; preds = %if.then.117, %while.body.115 %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.132, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.135, 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.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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 @@ -2300,24 +2510,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.90 + br label %while.hdr.114 -fv.default: ; preds = %if.merge.94 +fv.default: ; preds = %if.merge.118 br label %fv.merge -fv.case: ; preds = %if.merge.94 +fv.case: ; preds = %if.merge.118 %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.94 +fv.case17: ; preds = %if.merge.118 %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.94 +fv.case21: ; preds = %if.merge.118 %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 @@ -2329,43 +2539,43 @@ 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.134, i64 10 }, { ptr, i64 } { ptr @str.135, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.137, i64 10 }, { ptr, i64 } { ptr @str.138, 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.95 + br label %while.hdr.119 -while.hdr.95: ; preds = %if.merge.99, %entry +while.hdr.119: ; preds = %if.merge.123, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.96, label %while.exit.97 + br i1 %icmp, label %while.body.120, label %while.exit.121 -while.body.96: ; preds = %while.hdr.95 +while.body.120: ; preds = %while.hdr.119 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.98, label %if.merge.99 + br i1 %icmpN, label %if.then.122, label %if.merge.123 -while.exit.97: ; preds = %while.hdr.95 +while.exit.121: ; preds = %while.hdr.119 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 1 }) ret { ptr, i64 } %callN -if.then.98: ; preds = %while.body.96 +if.then.122: ; preds = %while.body.120 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.99 + br label %if.merge.123 -if.merge.99: ; preds = %if.then.98, %while.body.96 +if.merge.123: ; preds = %if.then.122, %while.body.120 %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.138, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.141, 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.139, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2376,7 +2586,7 @@ if.merge.99: ; preds = %if.then.98, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.95 + br label %while.hdr.119 } ; Function Attrs: nounwind @@ -2384,43 +2594,43 @@ 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.140, i64 3 }, { ptr, i64 } { ptr @str.141, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.143, i64 3 }, { ptr, i64 } { ptr @str.144, 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.100 + br label %while.hdr.124 -while.hdr.100: ; preds = %fv.merge, %entry +while.hdr.124: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.101, label %while.exit.102 + br i1 %icmp, label %while.body.125, label %while.exit.126 -while.body.101: ; preds = %while.hdr.100 +while.body.125: ; preds = %while.hdr.124 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.103, label %if.merge.104 + br i1 %icmpN, label %if.then.127, label %if.merge.128 -while.exit.102: ; preds = %while.hdr.100 +while.exit.126: ; preds = %while.hdr.124 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.145, i64 1 }) ret { ptr, i64 } %callN -if.then.103: ; preds = %while.body.101 +if.then.127: ; preds = %while.body.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.104 + br label %if.merge.128 -if.merge.104: ; preds = %if.then.103, %while.body.101 +if.merge.128: ; preds = %if.then.127, %while.body.125 %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.145, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.148, 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.146, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, 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 @@ -2437,12 +2647,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.100 + br label %while.hdr.124 -fv.default: ; preds = %if.merge.104 +fv.default: ; preds = %if.merge.128 br label %fv.merge -fv.case: ; preds = %if.merge.104 +fv.case: ; preds = %if.merge.128 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2453,43 +2663,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.147, i64 10 }, { ptr, i64 } { ptr @str.148, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.150, i64 10 }, { ptr, i64 } { ptr @str.151, 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.105 + br label %while.hdr.129 -while.hdr.105: ; preds = %fv.merge, %entry +while.hdr.129: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.106, label %while.exit.107 + br i1 %icmp, label %while.body.130, label %while.exit.131 -while.body.106: ; preds = %while.hdr.105 +while.body.130: ; preds = %while.hdr.129 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.108, label %if.merge.109 + br i1 %icmpN, label %if.then.132, label %if.merge.133 -while.exit.107: ; preds = %while.hdr.105 +while.exit.131: ; preds = %while.hdr.129 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 1 }) ret { ptr, i64 } %callN -if.then.108: ; preds = %while.body.106 +if.then.132: ; preds = %while.body.130 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.109 + br label %if.merge.133 -if.merge.109: ; preds = %if.then.108, %while.body.106 +if.merge.133: ; preds = %if.then.132, %while.body.130 %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.153, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.156, 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.154, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, 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 @@ -2507,18 +2717,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.105 + br label %while.hdr.129 -fv.default: ; preds = %if.merge.109 +fv.default: ; preds = %if.merge.133 br label %fv.merge -fv.case: ; preds = %if.merge.109 +fv.case: ; preds = %if.merge.133 %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.109 +fv.case17: ; preds = %if.merge.133 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2529,43 +2739,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.155, i64 5 }, { ptr, i64 } { ptr @str.156, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.158, i64 5 }, { ptr, i64 } { ptr @str.159, 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.110 + br label %while.hdr.134 -while.hdr.110: ; preds = %fv.merge, %entry +while.hdr.134: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.111, label %while.exit.112 + br i1 %icmp, label %while.body.135, label %while.exit.136 -while.body.111: ; preds = %while.hdr.110 +while.body.135: ; preds = %while.hdr.134 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.113, label %if.merge.114 + br i1 %icmpN, label %if.then.137, label %if.merge.138 -while.exit.112: ; preds = %while.hdr.110 +while.exit.136: ; preds = %while.hdr.134 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.160, i64 1 }) ret { ptr, i64 } %callN -if.then.113: ; preds = %while.body.111 +if.then.137: ; preds = %while.body.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.114 + br label %if.merge.138 -if.merge.114: ; preds = %if.then.113, %while.body.111 +if.merge.138: ; preds = %if.then.137, %while.body.135 %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.162, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.165, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, 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 @@ -2584,23 +2794,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.110 + br label %while.hdr.134 -fv.default: ; preds = %if.merge.114 +fv.default: ; preds = %if.merge.138 br label %fv.merge -fv.case: ; preds = %if.merge.114 +fv.case: ; preds = %if.merge.138 %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.114 +fv.case17: ; preds = %if.merge.138 %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.114 +fv.case20: ; preds = %if.merge.138 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2614,43 +2824,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.164, i64 8 }, { ptr, i64 } { ptr @str.165, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.167, i64 8 }, { ptr, i64 } { ptr @str.168, 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.115 + br label %while.hdr.139 -while.hdr.115: ; preds = %fv.merge, %entry +while.hdr.139: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.116, label %while.exit.117 + br i1 %icmp, label %while.body.140, label %while.exit.141 -while.body.116: ; preds = %while.hdr.115 +while.body.140: ; preds = %while.hdr.139 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.118, label %if.merge.119 + br i1 %icmpN, label %if.then.142, label %if.merge.143 -while.exit.117: ; preds = %while.hdr.115 +while.exit.141: ; preds = %while.hdr.139 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 1 }) ret { ptr, i64 } %callN -if.then.118: ; preds = %while.body.116 +if.then.142: ; preds = %while.body.140 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.119 + br label %if.merge.143 -if.merge.119: ; preds = %if.then.118, %while.body.116 +if.merge.143: ; preds = %if.then.142, %while.body.140 %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.171, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.174, 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.172, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, i64 }, ptr %alloca, align 8 @@ -2669,23 +2879,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.115 + br label %while.hdr.139 -fv.default: ; preds = %if.merge.119 +fv.default: ; preds = %if.merge.143 br label %fv.merge -fv.case: ; preds = %if.merge.119 +fv.case: ; preds = %if.merge.143 %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.119 +fv.case17: ; preds = %if.merge.143 %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.119 +fv.case20: ; preds = %if.merge.143 %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 @@ -2696,43 +2906,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.173, i64 17 }, { ptr, i64 } { ptr @str.174, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.176, i64 17 }, { ptr, i64 } { ptr @str.177, 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.120 + br label %while.hdr.144 -while.hdr.120: ; preds = %fv.merge, %entry +while.hdr.144: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.121, label %while.exit.122 + br i1 %icmp, label %while.body.145, label %while.exit.146 -while.body.121: ; preds = %while.hdr.120 +while.body.145: ; preds = %while.hdr.144 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.123, label %if.merge.124 + br i1 %icmpN, label %if.then.147, label %if.merge.148 -while.exit.122: ; preds = %while.hdr.120 +while.exit.146: ; preds = %while.hdr.144 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) ret { ptr, i64 } %callN -if.then.123: ; preds = %while.body.121 +if.then.147: ; preds = %while.body.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.124 + br label %if.merge.148 -if.merge.124: ; preds = %if.then.123, %while.body.121 +if.merge.148: ; preds = %if.then.147, %while.body.145 %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.181, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.184, 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.182, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, 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 @@ -2752,12 +2962,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.120 + br label %while.hdr.144 -fv.default: ; preds = %if.merge.124 +fv.default: ; preds = %if.merge.148 br label %fv.merge -fv.case: ; preds = %if.merge.124 +fv.case: ; preds = %if.merge.148 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2765,17 +2975,17 @@ fv.case: ; preds = %if.merge.124 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.124 +fv.case17: ; preds = %if.merge.148 %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.124 +fv.case20: ; preds = %if.merge.148 %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.124 +fv.case23: ; preds = %if.merge.148 %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 @@ -2786,43 +2996,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.183, i64 7 }, { ptr, i64 } { ptr @str.184, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.186, i64 7 }, { ptr, i64 } { ptr @str.187, 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.125 + br label %while.hdr.149 -while.hdr.125: ; preds = %fv.merge, %entry +while.hdr.149: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.126, label %while.exit.127 + br i1 %icmp, label %while.body.150, label %while.exit.151 -while.body.126: ; preds = %while.hdr.125 +while.body.150: ; preds = %while.hdr.149 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.128, label %if.merge.129 + br i1 %icmpN, label %if.then.152, label %if.merge.153 -while.exit.127: ; preds = %while.hdr.125 +while.exit.151: ; preds = %while.hdr.149 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) ret { ptr, i64 } %callN -if.then.128: ; preds = %while.body.126 +if.then.152: ; preds = %while.body.150 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) + %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 - br label %if.merge.129 + br label %if.merge.153 -if.merge.129: ; preds = %if.then.128, %while.body.126 +if.merge.153: ; preds = %if.then.152, %while.body.150 %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.189, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.192, 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.190, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { ptr, ptr, ptr }, ptr }, ptr %alloca, align 8 @@ -2840,12 +3050,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.125 + br label %while.hdr.149 -fv.default: ; preds = %if.merge.129 +fv.default: ; preds = %if.merge.153 br label %fv.merge -fv.case: ; preds = %if.merge.129 +fv.case: ; preds = %if.merge.153 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2853,7 +3063,7 @@ fv.case: ; preds = %if.merge.129 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.129 +fv.case17: ; preds = %if.merge.153 %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 @@ -2865,43 +3075,43 @@ define internal { ptr, i64 } @struct_to_string__Greeter(ptr %0, { ptr, ptr } %1) entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.191, i64 7 }, { ptr, i64 } { ptr @str.192, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.194, i64 7 }, { ptr, i64 } { ptr @str.195, 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.130 + br label %while.hdr.154 -while.hdr.130: ; preds = %fv.merge, %entry +while.hdr.154: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.131, label %while.exit.132 + br i1 %icmp, label %while.body.155, label %while.exit.156 -while.body.131: ; preds = %while.hdr.130 +while.body.155: ; preds = %while.hdr.154 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.133, label %if.merge.134 + br i1 %icmpN, label %if.then.157, label %if.merge.158 -while.exit.132: ; preds = %while.hdr.130 +while.exit.156: ; preds = %while.hdr.154 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.193, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 1 }) ret { ptr, i64 } %callN -if.then.133: ; preds = %while.body.131 +if.then.157: ; preds = %while.body.155 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.134 + br label %if.merge.158 -if.merge.134: ; preds = %if.then.133, %while.body.131 +if.merge.158: ; preds = %if.then.157, %while.body.155 %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.197, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.200, 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.198, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -2919,18 +3129,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.130 + br label %while.hdr.154 -fv.default: ; preds = %if.merge.134 +fv.default: ; preds = %if.merge.158 br label %fv.merge -fv.case: ; preds = %if.merge.134 +fv.case: ; preds = %if.merge.158 %fv.field = extractvalue { 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.134 +fv.case17: ; preds = %if.merge.158 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -2942,43 +3152,43 @@ define internal { ptr, i64 } @struct_to_string____Greeter__Vtable(ptr %0, { ptr entry: %alloca = alloca { ptr }, align 8 store { ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 17 }, { ptr, i64 } { ptr @str.200, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 17 }, { ptr, i64 } { ptr @str.203, 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.135 + br label %while.hdr.159 -while.hdr.135: ; preds = %fv.merge, %entry +while.hdr.159: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.136, label %while.exit.137 + br i1 %icmp, label %while.body.160, label %while.exit.161 -while.body.136: ; preds = %while.hdr.135 +while.body.160: ; preds = %while.hdr.159 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.138, label %if.merge.139 + br i1 %icmpN, label %if.then.162, label %if.merge.163 -while.exit.137: ; preds = %while.hdr.135 +while.exit.161: ; preds = %while.hdr.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.204, i64 1 }) ret { ptr, i64 } %callN -if.then.138: ; preds = %while.body.136 +if.then.162: ; preds = %while.body.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.205, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.139 + br label %if.merge.163 -if.merge.139: ; preds = %if.then.138, %while.body.136 +if.merge.163: ; preds = %if.then.162, %while.body.160 %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.204, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.207, 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.205, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr }, ptr %alloca, align 8 @@ -2995,12 +3205,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.159 -fv.default: ; preds = %if.merge.139 +fv.default: ; preds = %if.merge.163 br label %fv.merge -fv.case: ; preds = %if.merge.139 +fv.case: ; preds = %if.merge.163 %fv.field = extractvalue { ptr } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1 @@ -3012,43 +3222,43 @@ define internal { ptr, i64 } @struct_to_string__Dog(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.206, i64 3 }, { ptr, i64 } { ptr @str.207, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 3 }, { ptr, i64 } { ptr @str.210, 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.140 + br label %while.hdr.164 -while.hdr.140: ; preds = %fv.merge, %entry +while.hdr.164: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.141, label %while.exit.142 + br i1 %icmp, label %while.body.165, label %while.exit.166 -while.body.141: ; preds = %while.hdr.140 +while.body.165: ; preds = %while.hdr.164 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.143, label %if.merge.144 + br i1 %icmpN, label %if.then.167, label %if.merge.168 -while.exit.142: ; preds = %while.hdr.140 +while.exit.166: ; preds = %while.hdr.164 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.211, i64 1 }) ret { ptr, i64 } %callN -if.then.143: ; preds = %while.body.141 +if.then.167: ; preds = %while.body.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.212, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.144 + br label %if.merge.168 -if.merge.144: ; preds = %if.then.143, %while.body.141 +if.merge.168: ; preds = %if.then.167, %while.body.165 %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.211, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.214, 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.212, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.215, 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 @@ -3065,12 +3275,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.140 + br label %while.hdr.164 -fv.default: ; preds = %if.merge.144 +fv.default: ; preds = %if.merge.168 br label %fv.merge -fv.case: ; preds = %if.merge.144 +fv.case: ; preds = %if.merge.168 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -3081,43 +3291,43 @@ define internal { ptr, i64 } @struct_to_string__Cat(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.213, i64 3 }, { ptr, i64 } { ptr @str.214, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 3 }, { ptr, i64 } { ptr @str.217, 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.145 + br label %while.hdr.169 -while.hdr.145: ; preds = %fv.merge, %entry +while.hdr.169: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.146, label %while.exit.147 + br i1 %icmp, label %while.body.170, label %while.exit.171 -while.body.146: ; preds = %while.hdr.145 +while.body.170: ; preds = %while.hdr.169 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.148, label %if.merge.149 + br i1 %icmpN, label %if.then.172, label %if.merge.173 -while.exit.147: ; preds = %while.hdr.145 +while.exit.171: ; preds = %while.hdr.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.215, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.218, i64 1 }) ret { ptr, i64 } %callN -if.then.148: ; preds = %while.body.146 +if.then.172: ; preds = %while.body.170 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, i64 2 }) + %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 - br label %if.merge.149 + br label %if.merge.173 -if.merge.149: ; preds = %if.then.148, %while.body.146 +if.merge.173: ; preds = %if.then.172, %while.body.170 %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.218, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.221, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.222, 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 @@ -3134,50 +3344,100 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.145 + br label %while.hdr.169 -fv.default: ; preds = %if.merge.149 +fv.default: ; preds = %if.merge.173 br label %fv.merge -fv.case: ; preds = %if.merge.149 +fv.case: ; preds = %if.merge.173 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.223, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.179 + +while.hdr.179: ; preds = %if.merge.183, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.180, label %while.exit.181 + +while.body.180: ; preds = %while.hdr.179 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.182, label %if.merge.183 + +while.exit.181: ; preds = %while.hdr.179 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, i64 1 }) + ret { ptr, i64 } %call + +if.then.182: ; preds = %while.body.180 + %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 + br label %if.merge.183 + +if.merge.183: ; preds = %if.then.182, %while.body.180 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.179 +} + ; Function Attrs: nounwind define internal { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %1) #0 { entry: %alloca = alloca [2 x { i64, i64 }], align 8 store [2 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.220, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.226, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.154 + br label %while.hdr.184 -while.hdr.154: ; preds = %if.merge.158, %entry +while.hdr.184: ; preds = %if.merge.188, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.155, label %while.exit.156 + br i1 %icmp, label %while.body.185, label %while.exit.186 -while.body.155: ; preds = %while.hdr.154 +while.body.185: ; preds = %while.hdr.184 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.157, label %if.merge.158 + br i1 %icmpN, label %if.then.187, label %if.merge.188 -while.exit.156: ; preds = %while.hdr.154 +while.exit.186: ; preds = %while.hdr.184 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.221, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 1 }) ret { ptr, i64 } %call -if.then.157: ; preds = %while.body.155 +if.then.187: ; preds = %while.body.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.222, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.158 + br label %if.merge.188 -if.merge.158: ; preds = %if.then.157, %while.body.155 +if.merge.188: ; preds = %if.then.187, %while.body.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load [2 x { i64, i64 }], ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3195,7 +3455,7 @@ if.merge.158: ; preds = %if.then.157, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.154 + br label %while.hdr.184 } ; Function Attrs: nounwind @@ -3204,33 +3464,33 @@ entry: %alloca = alloca [1 x { 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.223, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.229, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.159 + br label %while.hdr.189 -while.hdr.159: ; preds = %if.merge.163, %entry +while.hdr.189: ; preds = %if.merge.193, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.160, label %while.exit.161 + br i1 %icmp, label %while.body.190, label %while.exit.191 -while.body.160: ; preds = %while.hdr.159 +while.body.190: ; preds = %while.hdr.189 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.162, label %if.merge.163 + br i1 %icmpN, label %if.then.192, label %if.merge.193 -while.exit.161: ; preds = %while.hdr.159 +while.exit.191: ; preds = %while.hdr.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.230, i64 1 }) ret { ptr, i64 } %call -if.then.162: ; preds = %while.body.160 +if.then.192: ; preds = %while.body.190 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.231, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.163 + br label %if.merge.193 -if.merge.163: ; preds = %if.then.162, %while.body.160 +if.merge.193: ; preds = %if.then.192, %while.body.190 %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 @@ -3248,7 +3508,7 @@ if.merge.163: ; preds = %if.then.162, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.159 + br label %while.hdr.189 } ; Function Attrs: nounwind @@ -3257,35 +3517,35 @@ 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.226, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.232, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.169 + br label %while.hdr.199 -while.hdr.169: ; preds = %if.merge.173, %entry +while.hdr.199: ; preds = %if.merge.203, %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.170, label %while.exit.171 + br i1 %icmp, label %while.body.200, label %while.exit.201 -while.body.170: ; preds = %while.hdr.169 +while.body.200: ; preds = %while.hdr.199 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.172, label %if.merge.173 + br i1 %icmpN, label %if.then.202, label %if.merge.203 -while.exit.171: ; preds = %while.hdr.169 +while.exit.201: ; preds = %while.hdr.199 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, i64 1 }) ret { ptr, i64 } %call -if.then.172: ; preds = %while.body.170 +if.then.202: ; preds = %while.body.200 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.234, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.173 + br label %if.merge.203 -if.merge.173: ; preds = %if.then.172, %while.body.170 +if.merge.203: ; preds = %if.then.202, %while.body.200 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3302,7 +3562,7 @@ if.merge.173: ; preds = %if.then.172, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.169 + br label %while.hdr.199 } ; Function Attrs: nounwind @@ -3311,35 +3571,35 @@ 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.229, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.235, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.174 + br label %while.hdr.204 -while.hdr.174: ; preds = %if.merge.178, %entry +while.hdr.204: ; preds = %if.merge.208, %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.175, label %while.exit.176 + br i1 %icmp, label %while.body.205, label %while.exit.206 -while.body.175: ; preds = %while.hdr.174 +while.body.205: ; preds = %while.hdr.204 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.177, label %if.merge.178 + br i1 %icmpN, label %if.then.207, label %if.merge.208 -while.exit.176: ; preds = %while.hdr.174 +while.exit.206: ; preds = %while.hdr.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.230, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 1 }) ret { ptr, i64 } %call -if.then.177: ; preds = %while.body.175 +if.then.207: ; preds = %while.body.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.231, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.237, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.178 + br label %if.merge.208 -if.merge.178: ; preds = %if.then.177, %while.body.175 +if.merge.208: ; preds = %if.then.207, %while.body.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3349,14 +3609,14 @@ if.merge.178: ; preds = %if.then.177, %while %ba.tmp = alloca { ptr, ptr }, align 8 store { ptr, ptr } %ig.val, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 36, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 37, 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.174 + br label %while.hdr.204 } ; Function Attrs: nounwind @@ -3365,35 +3625,35 @@ 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.232, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.238, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.179 + br label %while.hdr.209 -while.hdr.179: ; preds = %if.merge.183, %entry +while.hdr.209: ; preds = %if.merge.213, %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.180, label %while.exit.181 + br i1 %icmp, label %while.body.210, label %while.exit.211 -while.body.180: ; preds = %while.hdr.179 +while.body.210: ; preds = %while.hdr.209 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.182, label %if.merge.183 + br i1 %icmpN, label %if.then.212, label %if.merge.213 -while.exit.181: ; preds = %while.hdr.179 +while.exit.211: ; preds = %while.hdr.209 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.239, i64 1 }) ret { ptr, i64 } %call -if.then.182: ; preds = %while.body.180 +if.then.212: ; preds = %while.body.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.234, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.183 + br label %if.merge.213 -if.merge.183: ; preds = %if.then.182, %while.body.180 +if.merge.213: ; preds = %if.then.212, %while.body.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3410,95 +3670,11 @@ if.merge.183: ; preds = %if.then.182, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.179 + br label %while.hdr.209 } ; 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.208, label %if.else.209 - -if.then.208: ; preds = %entry - br label %if.merge.210 - -if.else.209: ; 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.237, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.210 - -if.merge.210: ; preds = %if.else.209, %if.then.208 - %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.208 ], [ %callN, %if.else.209 ] - 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.232, label %if.else.233 - -if.then.232: ; preds = %entry - br label %if.merge.234 - -if.else.233: ; 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.240, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.234 - -if.merge.234: ; preds = %if.else.233, %if.then.232 - %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] - 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.235, label %if.else.236 - -if.then.235: ; preds = %entry - br label %if.merge.237 - -if.else.236: ; 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.243, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.237 - -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] - 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 @@ -3516,12 +3692,96 @@ if.then.238: ; preds = %entry if.else.239: ; 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.246, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 5 }, { ptr, i64 } %callN) br label %if.merge.240 if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] + %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] + 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.254, label %if.else.255 + +if.then.254: ; preds = %entry + br label %if.merge.256 + +if.else.255: ; 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.246, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.256 + +if.merge.256: ; preds = %if.else.255, %if.then.254 + %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] + 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.257, label %if.else.258 + +if.then.257: ; preds = %entry + br label %if.merge.259 + +if.else.258: ; 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.249, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.259 + +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] + 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.260, label %if.else.261 + +if.then.260: ; preds = %entry + br label %if.merge.262 + +if.else.261: ; 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.252, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.262 + +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] ret { ptr, i64 } %bp } @@ -3536,20 +3796,20 @@ entry: 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.241, label %if.else.242 + br i1 %icmp, label %if.then.263, label %if.else.264 -if.then.241: ; preds = %entry - br label %if.merge.243 +if.then.263: ; preds = %entry + br label %if.merge.265 -if.else.242: ; preds = %entry +if.else.264: ; 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.249, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.243 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.265 -if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.253, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3563,20 +3823,20 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.252, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.256, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } @@ -3591,20 +3851,20 @@ entry: 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.247, label %if.else.248 + br i1 %icmp, label %if.then.269, label %if.else.270 -if.then.247: ; preds = %entry - br label %if.merge.249 +if.then.269: ; preds = %entry + br label %if.merge.271 -if.else.248: ; preds = %entry +if.else.270: ; 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.255, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.249 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.261, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.271 -if.merge.249: ; preds = %if.else.248, %if.then.247 - %bp = phi { ptr, i64 } [ { ptr @str.253, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] +if.merge.271: ; preds = %if.else.270, %if.then.269 + %bp = phi { ptr, i64 } [ { ptr @str.259, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] ret { ptr, i64 } %bp } @@ -3619,20 +3879,20 @@ entry: 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.250, label %if.else.251 + br i1 %icmp, label %if.then.272, label %if.else.273 -if.then.250: ; preds = %entry - br label %if.merge.252 +if.then.272: ; preds = %entry + br label %if.merge.274 -if.else.251: ; preds = %entry +if.else.273: ; 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.258, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.252 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.264, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.263, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.274 -if.merge.252: ; preds = %if.else.251, %if.then.250 - %bp = phi { ptr, i64 } [ { ptr @str.256, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] +if.merge.274: ; preds = %if.else.273, %if.then.272 + %bp = phi { ptr, i64 } [ { ptr @str.262, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] ret { ptr, i64 } %bp } @@ -3647,20 +3907,20 @@ entry: 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.253, label %if.else.254 + br i1 %icmp, label %if.then.275, label %if.else.276 -if.then.253: ; preds = %entry - br label %if.merge.255 +if.then.275: ; preds = %entry + br label %if.merge.277 -if.else.254: ; preds = %entry +if.else.276: ; 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.261, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.255 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.267, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.277 -if.merge.255: ; preds = %if.else.254, %if.then.253 - %bp = phi { ptr, i64 } [ { ptr @str.259, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] +if.merge.277: ; preds = %if.else.276, %if.then.275 + %bp = phi { ptr, i64 } [ { ptr @str.265, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] ret { ptr, i64 } %bp } @@ -3675,20 +3935,20 @@ entry: 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.256, label %if.else.257 + br i1 %icmp, label %if.then.278, label %if.else.279 -if.then.256: ; preds = %entry - br label %if.merge.258 +if.then.278: ; preds = %entry + br label %if.merge.280 -if.else.257: ; preds = %entry +if.else.279: ; 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.264, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.263, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.258 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.270, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.269, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.280 -if.merge.258: ; preds = %if.else.257, %if.then.256 - %bp = phi { ptr, i64 } [ { ptr @str.262, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] +if.merge.280: ; preds = %if.else.279, %if.then.278 + %bp = phi { ptr, i64 } [ { ptr @str.268, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] ret { ptr, i64 } %bp } @@ -3703,20 +3963,20 @@ entry: 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.259, label %if.else.260 + br i1 %icmp, label %if.then.281, label %if.else.282 -if.then.259: ; preds = %entry - br label %if.merge.261 +if.then.281: ; preds = %entry + br label %if.merge.283 -if.else.260: ; preds = %entry +if.else.282: ; 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.267, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.261 + %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 12 }, { ptr, i64 } %callN) + br label %if.merge.283 -if.merge.261: ; preds = %if.else.260, %if.then.259 - %bp = phi { ptr, i64 } [ { ptr @str.265, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] +if.merge.283: ; preds = %if.else.282, %if.then.281 + %bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] ret { ptr, i64 } %bp } @@ -3731,20 +3991,20 @@ entry: 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.262, label %if.else.263 + br i1 %icmp, label %if.then.284, label %if.else.285 -if.then.262: ; preds = %entry - br label %if.merge.264 +if.then.284: ; preds = %entry + br label %if.merge.286 -if.else.263: ; preds = %entry +if.else.285: ; 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.270, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.269, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.264 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.286 -if.merge.264: ; preds = %if.else.263, %if.then.262 - %bp = phi { ptr, i64 } [ { ptr @str.268, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] +if.merge.286: ; preds = %if.else.285, %if.then.284 + %bp = phi { ptr, i64 } [ { ptr @str.274, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] ret { ptr, i64 } %bp } @@ -3759,20 +4019,20 @@ entry: 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.265, label %if.else.266 + br i1 %icmp, label %if.then.287, label %if.else.288 -if.then.265: ; preds = %entry - br label %if.merge.267 +if.then.287: ; preds = %entry + br label %if.merge.289 -if.else.266: ; preds = %entry +if.else.288: ; 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 6 }, { ptr, i64 } %callN) - br label %if.merge.267 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.289 -if.merge.267: ; preds = %if.else.266, %if.then.265 - %bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] +if.merge.289: ; preds = %if.else.288, %if.then.287 + %bp = phi { ptr, i64 } [ { ptr @str.277, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] ret { ptr, i64 } %bp } @@ -3787,20 +4047,20 @@ entry: 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.268, label %if.else.269 + br i1 %icmp, label %if.then.290, label %if.else.291 -if.then.268: ; preds = %entry - br label %if.merge.270 +if.then.290: ; preds = %entry + br label %if.merge.292 -if.else.269: ; preds = %entry +if.else.291: ; 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 4 }, { ptr, i64 } %callN) - br label %if.merge.270 + %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 4 }, { ptr, i64 } %callN) + br label %if.merge.292 -if.merge.270: ; preds = %if.else.269, %if.then.268 - %bp = phi { ptr, i64 } [ { ptr @str.274, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] +if.merge.292: ; preds = %if.else.291, %if.then.290 + %bp = phi { ptr, i64 } [ { ptr @str.280, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] ret { ptr, i64 } %bp } @@ -3815,20 +4075,20 @@ entry: 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.271, label %if.else.272 + br i1 %icmp, label %if.then.293, label %if.else.294 -if.then.271: ; preds = %entry - br label %if.merge.273 +if.then.293: ; preds = %entry + br label %if.merge.295 -if.else.272: ; preds = %entry +if.else.294: ; 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 7 }, { ptr, i64 } %callN) - br label %if.merge.273 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.295 -if.merge.273: ; preds = %if.else.272, %if.then.271 - %bp = phi { ptr, i64 } [ { ptr @str.277, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] +if.merge.295: ; preds = %if.else.294, %if.then.293 + %bp = phi { ptr, i64 } [ { ptr @str.283, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] ret { ptr, i64 } %bp } @@ -3843,20 +4103,20 @@ entry: 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.274, label %if.else.275 + br i1 %icmp, label %if.then.296, label %if.else.297 -if.then.274: ; preds = %entry - br label %if.merge.276 +if.then.296: ; preds = %entry + br label %if.merge.298 -if.else.275: ; preds = %entry +if.else.297: ; 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 6 }, { ptr, i64 } %callN) - br label %if.merge.276 + %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 6 }, { ptr, i64 } %callN) + br label %if.merge.298 -if.merge.276: ; preds = %if.else.275, %if.then.274 - %bp = phi { ptr, i64 } [ { ptr @str.280, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] +if.merge.298: ; preds = %if.else.297, %if.then.296 + %bp = phi { ptr, i64 } [ { ptr @str.286, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] ret { ptr, i64 } %bp } @@ -3871,20 +4131,20 @@ entry: 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.277, label %if.else.278 + br i1 %icmp, label %if.then.299, label %if.else.300 -if.then.277: ; preds = %entry - br label %if.merge.279 +if.then.299: ; preds = %entry + br label %if.merge.301 -if.else.278: ; preds = %entry +if.else.300: ; 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 5 }, { ptr, i64 } %callN) - br label %if.merge.279 + %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 5 }, { ptr, i64 } %callN) + br label %if.merge.301 -if.merge.279: ; preds = %if.else.278, %if.then.277 - %bp = phi { ptr, i64 } [ { ptr @str.283, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] +if.merge.301: ; preds = %if.else.300, %if.then.299 + %bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.299 ], [ %callN, %if.else.300 ] ret { ptr, i64 } %bp } @@ -3899,20 +4159,20 @@ entry: 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.280, label %if.else.281 + br i1 %icmp, label %if.then.302, label %if.else.303 -if.then.280: ; preds = %entry - br label %if.merge.282 +if.then.302: ; preds = %entry + br label %if.merge.304 -if.else.281: ; preds = %entry +if.else.303: ; 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.282 + %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 5 }, { ptr, i64 } %callN) + br label %if.merge.304 -if.merge.282: ; preds = %if.else.281, %if.then.280 - %bp = phi { ptr, i64 } [ { ptr @str.286, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] +if.merge.304: ; preds = %if.else.303, %if.then.302 + %bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.302 ], [ %callN, %if.else.303 ] ret { ptr, i64 } %bp } @@ -3927,20 +4187,20 @@ entry: 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.283, label %if.else.284 + br i1 %icmp, label %if.then.305, label %if.else.306 -if.then.283: ; preds = %entry - br label %if.merge.285 +if.then.305: ; preds = %entry + br label %if.merge.307 -if.else.284: ; preds = %entry +if.else.306: ; 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 7 }, { ptr, i64 } %callN) - br label %if.merge.285 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.307 -if.merge.285: ; preds = %if.else.284, %if.then.283 - %bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] +if.merge.307: ; preds = %if.else.306, %if.then.305 + %bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.305 ], [ %callN, %if.else.306 ] ret { ptr, i64 } %bp } @@ -3955,20 +4215,20 @@ entry: 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.286, label %if.else.287 + br i1 %icmp, label %if.then.308, label %if.else.309 -if.then.286: ; preds = %entry - br label %if.merge.288 +if.then.308: ; preds = %entry + br label %if.merge.310 -if.else.287: ; preds = %entry +if.else.309: ; 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 7 }, { ptr, i64 } %callN) - br label %if.merge.288 + %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 7 }, { ptr, i64 } %callN) + br label %if.merge.310 -if.merge.288: ; preds = %if.else.287, %if.then.286 - %bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] +if.merge.310: ; preds = %if.else.309, %if.then.308 + %bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.308 ], [ %callN, %if.else.309 ] ret { ptr, i64 } %bp } @@ -3983,20 +4243,20 @@ entry: 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.289, label %if.else.290 + br i1 %icmp, label %if.then.311, label %if.else.312 -if.then.289: ; preds = %entry - br label %if.merge.291 +if.then.311: ; preds = %entry + br label %if.merge.313 -if.else.290: ; preds = %entry +if.else.312: ; 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 3 }, { ptr, i64 } %callN) - br label %if.merge.291 + %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 3 }, { ptr, i64 } %callN) + br label %if.merge.313 -if.merge.291: ; preds = %if.else.290, %if.then.289 - %bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.289 ], [ %callN, %if.else.290 ] +if.merge.313: ; preds = %if.else.312, %if.then.311 + %bp = phi { ptr, i64 } [ { ptr @str.301, i64 4 }, %if.then.311 ], [ %callN, %if.else.312 ] ret { ptr, i64 } %bp } @@ -4011,23 +4271,21 @@ entry: 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.292, label %if.else.293 + br i1 %icmp, label %if.then.314, label %if.else.315 -if.then.292: ; preds = %entry - br label %if.merge.294 +if.then.314: ; preds = %entry + br label %if.merge.316 -if.else.293: ; preds = %entry +if.else.315: ; 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 5 }, { ptr, i64 } %callN) - br label %if.merge.294 + %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 5 }, { ptr, i64 } %callN) + br label %if.merge.316 -if.merge.294: ; preds = %if.else.293, %if.then.292 - %bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.292 ], [ %callN, %if.else.293 ] +if.merge.316: ; preds = %if.else.315, %if.then.314 + %bp = phi { ptr, i64 } [ { ptr @str.304, i64 4 }, %if.then.314 ], [ %callN, %if.else.315 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0903-optionals-optional-roundtrip.ir b/examples/expected/0903-optionals-optional-roundtrip.ir index 3aa0702..25fc18b 100644 --- a/examples/expected/0903-optionals-optional-roundtrip.ir +++ b/examples/expected/0903-optionals-optional-roundtrip.ir @@ -2,334 +2,341 @@ @__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 } @__Sizable__Widget__vtable = internal constant { ptr } { ptr @__thunk_Widget_Sizable_size } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [87 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [5 x i8] c"?f32\00" -@tn.str.42 = private constant [13 x i8] c"ProposedSize\00" -@tn.str.43 = private constant [8 x i8] c"Sizable\00" -@tn.str.44 = private constant [18 x i8] c"__Sizable__Vtable\00" -@tn.str.45 = private constant [7 x i8] c"Widget\00" -@tn.str.46 = private constant [8 x i8] c"*Widget\00" -@tn.str.47 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.48 = private constant [5 x i8] c"*s64\00" -@tn.str.49 = private constant [7 x i8] c"**void\00" -@tn.str.50 = private constant [8 x i8] c"*string\00" -@tn.str.51 = private constant [6 x i8] c"[]Any\00" -@tn.str.52 = private constant [5 x i8] c"*Any\00" -@tn.str.53 = private constant [7 x i8] c"*[]Any\00" -@tn.str.54 = private constant [4 x i8] c"*u8\00" -@tn.str.55 = private constant [6 x i8] c"*bool\00" -@tn.str.56 = private constant [14 x i8] c"*ProposedSize\00" -@tn.str.57 = private constant [5 x i8] c"*f32\00" -@tn.str.58 = private constant [5 x i8] c"*f64\00" -@tn.str.59 = private constant [7 x i8] c"[1]Any\00" -@tn.str.60 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.61 = private constant [9 x i8] c"*Sizable\00" -@tn.str.62 = private constant [9 x i8] c"**Widget\00" -@tn.str.63 = private constant [19 x i8] c"*__Sizable__Vtable\00" -@tn.str.64 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.65 = private constant [11 x i8] c"*Allocator\00" -@tn.str.66 = private constant [9 x i8] c"*Context\00" -@tn.str.67 = private constant [10 x i8] c"*[]string\00" -@tn.str.68 = private constant [6 x i8] c"**GPA\00" -@tn.str.69 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.70 = private constant [8 x i8] c"**Arena\00" -@tn.str.71 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.72 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.73 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.74 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.75 = private constant [6 x i8] c"**s64\00" -@tn.str.76 = private constant [8 x i8] c"***void\00" -@tn.str.77 = private constant [9 x i8] c"**string\00" -@tn.str.78 = private constant [6 x i8] c"**Any\00" -@tn.str.79 = private constant [8 x i8] c"**[]Any\00" -@tn.str.80 = private constant [5 x i8] c"**u8\00" -@tn.str.81 = private constant [7 x i8] c"**bool\00" -@tn.str.82 = private constant [15 x i8] c"**ProposedSize\00" -@tn.str.83 = private constant [6 x i8] c"**f32\00" -@tn.str.84 = private constant [6 x i8] c"**f64\00" -@tn.str.85 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.86 = private constant [10 x i8] c"**Sizable\00" -@tn.str.87 = private constant [10 x i8] c"***Widget\00" -@tn.str.88 = private constant [20 x i8] c"**__Sizable__Vtable\00" -@tn.str.89 = private constant [6 x i8] c"*?f32\00" -@__sx_type_names = private constant [85 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 4 }, { ptr, i64 } { ptr @tn.str.42, i64 12 }, { ptr, i64 } { ptr @tn.str.43, i64 7 }, { ptr, i64 } { ptr @tn.str.44, i64 17 }, { ptr, i64 } { ptr @tn.str.45, i64 6 }, { ptr, i64 } { ptr @tn.str.46, i64 7 }, { ptr, i64 } { ptr @tn.str.47, i64 12 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 5 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 3 }, { ptr, i64 } { ptr @tn.str.55, i64 5 }, { ptr, i64 } { ptr @tn.str.56, i64 13 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 6 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 8 }, { ptr, i64 } { ptr @tn.str.62, i64 8 }, { ptr, i64 } { ptr @tn.str.63, i64 18 }, { ptr, i64 } { ptr @tn.str.64, i64 16 }, { ptr, i64 } { ptr @tn.str.65, i64 10 }, { ptr, i64 } { ptr @tn.str.66, i64 8 }, { ptr, i64 } { ptr @tn.str.67, i64 9 }, { ptr, i64 } { ptr @tn.str.68, i64 5 }, { ptr, i64 } { ptr @tn.str.69, i64 12 }, { ptr, i64 } { ptr @tn.str.70, i64 7 }, { ptr, i64 } { ptr @tn.str.71, i64 6 }, { ptr, i64 } { ptr @tn.str.72, i64 10 }, { ptr, i64 } { ptr @tn.str.73, i64 19 }, { ptr, i64 } { ptr @tn.str.74, i64 13 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 7 }, { ptr, i64 } { ptr @tn.str.80, i64 4 }, { ptr, i64 } { ptr @tn.str.81, i64 6 }, { ptr, i64 } { ptr @tn.str.82, i64 14 }, { ptr, i64 } { ptr @tn.str.83, i64 5 }, { ptr, i64 } { ptr @tn.str.84, i64 5 }, { ptr, i64 } { ptr @tn.str.85, i64 8 }, { ptr, i64 } { ptr @tn.str.86, i64 9 }, { ptr, i64 } { ptr @tn.str.87, i64 9 }, { ptr, i64 } { ptr @tn.str.88, i64 19 }, { ptr, i64 } { ptr @tn.str.89, i64 5 }] -@str.90 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.91 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.92 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [5 x i8] c"?f32\00" +@tn.str.44 = private constant [13 x i8] c"ProposedSize\00" +@tn.str.45 = private constant [8 x i8] c"Sizable\00" +@tn.str.46 = private constant [18 x i8] c"__Sizable__Vtable\00" +@tn.str.47 = private constant [7 x i8] c"Widget\00" +@tn.str.48 = private constant [8 x i8] c"*Widget\00" +@tn.str.49 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.50 = private constant [5 x i8] c"*s64\00" +@tn.str.51 = private constant [7 x i8] c"**void\00" +@tn.str.52 = private constant [8 x i8] c"*string\00" +@tn.str.53 = private constant [6 x i8] c"[]Any\00" +@tn.str.54 = private constant [5 x i8] c"*Any\00" +@tn.str.55 = private constant [7 x i8] c"*[]Any\00" +@tn.str.56 = private constant [4 x i8] c"*u8\00" +@tn.str.57 = private constant [6 x i8] c"*bool\00" +@tn.str.58 = private constant [14 x i8] c"*ProposedSize\00" +@tn.str.59 = private constant [5 x i8] c"*f32\00" +@tn.str.60 = private constant [5 x i8] c"*f64\00" +@tn.str.61 = private constant [7 x i8] c"[1]Any\00" +@tn.str.62 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.63 = private constant [9 x i8] c"*Sizable\00" +@tn.str.64 = private constant [9 x i8] c"**Widget\00" +@tn.str.65 = private constant [19 x i8] c"*__Sizable__Vtable\00" +@tn.str.66 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.67 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.68 = private constant [11 x i8] c"*Allocator\00" +@tn.str.69 = private constant [9 x i8] c"*Context\00" +@tn.str.70 = private constant [10 x i8] c"*[]string\00" +@tn.str.71 = private constant [6 x i8] c"**GPA\00" +@tn.str.72 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.73 = private constant [8 x i8] c"**Arena\00" +@tn.str.74 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.75 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.76 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.77 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.78 = private constant [6 x i8] c"**s64\00" +@tn.str.79 = private constant [8 x i8] c"***void\00" +@tn.str.80 = private constant [9 x i8] c"**string\00" +@tn.str.81 = private constant [6 x i8] c"**Any\00" +@tn.str.82 = private constant [8 x i8] c"**[]Any\00" +@tn.str.83 = private constant [5 x i8] c"**u8\00" +@tn.str.84 = private constant [7 x i8] c"**bool\00" +@tn.str.85 = private constant [15 x i8] c"**ProposedSize\00" +@tn.str.86 = private constant [6 x i8] c"**f32\00" +@tn.str.87 = private constant [6 x i8] c"**f64\00" +@tn.str.88 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.89 = private constant [10 x i8] c"**Sizable\00" +@tn.str.90 = private constant [10 x i8] c"***Widget\00" +@tn.str.91 = private constant [20 x i8] c"**__Sizable__Vtable\00" +@tn.str.92 = private constant [6 x i8] c"*?f32\00" +@__sx_type_names = private constant [87 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 4 }, { ptr, i64 } { ptr @tn.str.44, i64 12 }, { ptr, i64 } { ptr @tn.str.45, i64 7 }, { ptr, i64 } { ptr @tn.str.46, i64 17 }, { ptr, i64 } { ptr @tn.str.47, i64 6 }, { ptr, i64 } { ptr @tn.str.48, i64 7 }, { ptr, i64 } { ptr @tn.str.49, i64 12 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 7 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 4 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 3 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 13 }, { ptr, i64 } { ptr @tn.str.59, i64 4 }, { ptr, i64 } { ptr @tn.str.60, i64 4 }, { ptr, i64 } { ptr @tn.str.61, i64 6 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 8 }, { ptr, i64 } { ptr @tn.str.64, i64 8 }, { ptr, i64 } { ptr @tn.str.65, i64 18 }, { ptr, i64 } { ptr @tn.str.66, i64 7 }, { ptr, i64 } { ptr @tn.str.67, i64 16 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 9 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 12 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }, { ptr, i64 } { ptr @tn.str.75, i64 10 }, { ptr, i64 } { ptr @tn.str.76, i64 19 }, { ptr, i64 } { ptr @tn.str.77, i64 13 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 7 }, { ptr, i64 } { ptr @tn.str.80, i64 8 }, { ptr, i64 } { ptr @tn.str.81, i64 5 }, { ptr, i64 } { ptr @tn.str.82, i64 7 }, { ptr, i64 } { ptr @tn.str.83, i64 4 }, { ptr, i64 } { ptr @tn.str.84, i64 6 }, { ptr, i64 } { ptr @tn.str.85, i64 14 }, { ptr, i64 } { ptr @tn.str.86, i64 5 }, { ptr, i64 } { ptr @tn.str.87, i64 5 }, { ptr, i64 } { ptr @tn.str.88, i64 8 }, { ptr, i64 } { ptr @tn.str.89, i64 9 }, { ptr, i64 } { ptr @tn.str.90, i64 9 }, { ptr, i64 } { ptr @tn.str.91, i64 19 }, { ptr, i64 } { ptr @tn.str.92, i64 5 }] @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.94 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.95 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.96 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.97 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.98 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.99 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.100 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.101 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.102 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.103 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.96 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.97 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.98 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.99 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.100 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.101 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.102 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.103 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.104 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.105 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.106 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.107 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.109 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.110 = private unnamed_addr constant [22 x i8] c"=== Direct calls ===\0A\00", align 1 -@str.111 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.112 = private unnamed_addr constant [22 x i8] c"=== Direct calls ===\0A\00", align 1 -@str.113 = private unnamed_addr constant [9 x i8] c"d1 = {}\0A\00", align 1 +@str.110 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.112 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.113 = private unnamed_addr constant [22 x i8] c"=== Direct calls ===\0A\00", align 1 @str.114 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.115 = private unnamed_addr constant [9 x i8] c"d1 = {}\0A\00", align 1 -@str.116 = private unnamed_addr constant [9 x i8] c"d2 = {}\0A\00", align 1 +@str.115 = private unnamed_addr constant [22 x i8] c"=== Direct calls ===\0A\00", align 1 +@str.116 = private unnamed_addr constant [9 x i8] c"d1 = {}\0A\00", align 1 @str.117 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.118 = private unnamed_addr constant [9 x i8] c"d2 = {}\0A\00", align 1 -@str.119 = private unnamed_addr constant [9 x i8] c"d3 = {}\0A\00", align 1 +@str.118 = private unnamed_addr constant [9 x i8] c"d1 = {}\0A\00", align 1 +@str.119 = private unnamed_addr constant [9 x i8] c"d2 = {}\0A\00", align 1 @str.120 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.121 = private unnamed_addr constant [9 x i8] c"d3 = {}\0A\00", align 1 -@str.122 = private unnamed_addr constant [9 x i8] c"d4 = {}\0A\00", align 1 +@str.121 = private unnamed_addr constant [9 x i8] c"d2 = {}\0A\00", align 1 +@str.122 = private unnamed_addr constant [9 x i8] c"d3 = {}\0A\00", align 1 @str.123 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.124 = private unnamed_addr constant [9 x i8] c"d4 = {}\0A\00", align 1 -@str.125 = private unnamed_addr constant [27 x i8] c"=== Protocol dispatch ===\0A\00", align 1 +@str.124 = private unnamed_addr constant [9 x i8] c"d3 = {}\0A\00", align 1 +@str.125 = private unnamed_addr constant [9 x i8] c"d4 = {}\0A\00", align 1 @str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.127 = private unnamed_addr constant [27 x i8] c"=== Protocol dispatch ===\0A\00", align 1 -@str.128 = private unnamed_addr constant [9 x i8] c"r1 = {}\0A\00", align 1 +@str.127 = private unnamed_addr constant [9 x i8] c"d4 = {}\0A\00", align 1 +@str.128 = private unnamed_addr constant [27 x i8] c"=== Protocol dispatch ===\0A\00", align 1 @str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.130 = private unnamed_addr constant [9 x i8] c"r1 = {}\0A\00", align 1 -@str.131 = private unnamed_addr constant [9 x i8] c"r2 = {}\0A\00", align 1 +@str.130 = private unnamed_addr constant [27 x i8] c"=== Protocol dispatch ===\0A\00", align 1 +@str.131 = private unnamed_addr constant [9 x i8] c"r1 = {}\0A\00", align 1 @str.132 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.133 = private unnamed_addr constant [9 x i8] c"r2 = {}\0A\00", align 1 -@str.134 = private unnamed_addr constant [9 x i8] c"r3 = {}\0A\00", align 1 +@str.133 = private unnamed_addr constant [9 x i8] c"r1 = {}\0A\00", align 1 +@str.134 = private unnamed_addr constant [9 x i8] c"r2 = {}\0A\00", align 1 @str.135 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.136 = private unnamed_addr constant [9 x i8] c"r3 = {}\0A\00", align 1 -@str.137 = private unnamed_addr constant [9 x i8] c"r4 = {}\0A\00", align 1 +@str.136 = private unnamed_addr constant [9 x i8] c"r2 = {}\0A\00", align 1 +@str.137 = private unnamed_addr constant [9 x i8] c"r3 = {}\0A\00", align 1 @str.138 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.139 = private unnamed_addr constant [9 x i8] c"r4 = {}\0A\00", align 1 -@str.140 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.141 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.142 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.143 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.139 = private unnamed_addr constant [9 x i8] c"r3 = {}\0A\00", align 1 +@str.140 = private unnamed_addr constant [9 x i8] c"r4 = {}\0A\00", align 1 +@str.141 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.142 = private unnamed_addr constant [9 x i8] c"r4 = {}\0A\00", align 1 +@str.143 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.144 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.145 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.146 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.144 = private constant [5 x i8] c"line\00" -@fld.str.145 = private constant [4 x i8] c"col\00" -@fld.str.146 = 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.144, i64 4 }, { ptr, i64 } { ptr @fld.str.145, i64 3 }, { ptr, i64 } { ptr @fld.str.146, i64 4 }] -@str.147 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.148 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.149 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.151 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.152 = private constant [4 x i8] c"ctx\00" -@fld.str.153 = private constant [6 x i8] c"alloc\00" -@fld.str.154 = private constant [8 x i8] c"dealloc\00" -@field_names.155 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.152, i64 3 }, { ptr, i64 } { ptr @fld.str.153, i64 5 }, { ptr, i64 } { ptr @fld.str.154, i64 7 }] -@str.156 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.157 = private unnamed_addr constant [11 x i8] c"CAllocator\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 -@field_names.161 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.163 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.167 = private constant [12 x i8] c"alloc_count\00" -@field_names.168 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 11 }] -@str.169 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.170 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.173 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.174 = private constant [5 x i8] c"next\00" -@fld.str.175 = private constant [4 x i8] c"cap\00" -@field_names.176 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.174, i64 4 }, { ptr, i64 } { ptr @fld.str.175, i64 3 }] -@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.178 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.180 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.181 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.182 = private constant [6 x i8] c"first\00" -@fld.str.183 = private constant [10 x i8] c"end_index\00" -@fld.str.184 = private constant [7 x i8] c"parent\00" -@field_names.185 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.182, i64 5 }, { ptr, i64 } { ptr @fld.str.183, i64 9 }, { ptr, i64 } { ptr @fld.str.184, i64 6 }] -@str.186 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.187 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.188 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.189 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.190 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.191 = private constant [4 x i8] c"buf\00" -@fld.str.192 = private constant [4 x i8] c"len\00" -@fld.str.193 = private constant [4 x i8] c"pos\00" -@field_names.194 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.191, i64 3 }, { ptr, i64 } { ptr @fld.str.192, i64 3 }, { ptr, i64 } { ptr @fld.str.193, i64 3 }] -@str.195 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.196 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.197 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.198 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.199 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.200 = private constant [7 x i8] c"parent\00" -@fld.str.201 = private constant [12 x i8] c"alloc_count\00" -@fld.str.202 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.203 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.204 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.200, i64 6 }, { ptr, i64 } { ptr @fld.str.201, i64 11 }, { ptr, i64 } { ptr @fld.str.202, i64 13 }, { ptr, i64 } { ptr @fld.str.203, i64 17 }] -@str.205 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.206 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.207 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.208 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.209 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.210 = private constant [10 x i8] c"allocator\00" -@fld.str.211 = private constant [5 x i8] c"data\00" -@field_names.212 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.210, i64 9 }, { ptr, i64 } { ptr @fld.str.211, i64 4 }] -@str.213 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.214 = private unnamed_addr constant [13 x i8] c"ProposedSize\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 -@fld.str.218 = private constant [6 x i8] c"width\00" -@fld.str.219 = private constant [7 x i8] c"height\00" -@field_names.220 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.218, i64 5 }, { ptr, i64 } { ptr @fld.str.219, i64 6 }] -@str.221 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.222 = private unnamed_addr constant [8 x i8] c"Sizable\00", align 1 -@str.223 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.224 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.225 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.226 = private constant [4 x i8] c"ctx\00" -@fld.str.227 = private constant [9 x i8] c"__vtable\00" -@field_names.228 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.226, i64 3 }, { ptr, i64 } { ptr @fld.str.227, i64 8 }] -@str.229 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.230 = private unnamed_addr constant [18 x i8] c"__Sizable__Vtable\00", align 1 -@str.231 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.232 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.233 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.234 = private constant [5 x i8] c"size\00" -@field_names.235 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.234, i64 4 }] -@str.236 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.237 = private unnamed_addr constant [7 x i8] c"Widget\00", align 1 -@str.238 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.239 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.240 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.241 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.242 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.243 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.244 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.245 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.147 = private constant [5 x i8] c"line\00" +@fld.str.148 = private constant [4 x i8] c"col\00" +@fld.str.149 = 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.147, i64 4 }, { ptr, i64 } { ptr @fld.str.148, i64 3 }, { ptr, i64 } { ptr @fld.str.149, i64 4 }] +@str.150 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.151 = private unnamed_addr constant [10 x i8] c"Allocator\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 +@fld.str.155 = private constant [4 x i8] c"ctx\00" +@fld.str.156 = private constant [6 x i8] c"alloc\00" +@fld.str.157 = private constant [8 x i8] c"dealloc\00" +@field_names.158 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.155, i64 3 }, { ptr, i64 } { ptr @fld.str.156, i64 5 }, { ptr, i64 } { ptr @fld.str.157, i64 7 }] +@str.159 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.160 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.164 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.165 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.166 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.167 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.170 = private constant [12 x i8] c"alloc_count\00" +@field_names.171 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.170, i64 11 }] +@str.172 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.173 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.174 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.175 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.177 = private constant [5 x i8] c"next\00" +@fld.str.178 = private constant [4 x i8] c"cap\00" +@field_names.179 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.177, i64 4 }, { ptr, i64 } { ptr @fld.str.178, i64 3 }] +@str.180 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.181 = private unnamed_addr constant [6 x i8] c"Arena\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 [6 x i8] c"first\00" +@fld.str.186 = private constant [10 x i8] c"end_index\00" +@fld.str.187 = private constant [7 x i8] c"parent\00" +@field_names.188 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.185, i64 5 }, { ptr, i64 } { ptr @fld.str.186, i64 9 }, { ptr, i64 } { ptr @fld.str.187, i64 6 }] +@str.189 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.190 = private unnamed_addr constant [9 x i8] c"BufAlloc\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 [4 x i8] c"buf\00" +@fld.str.195 = private constant [4 x i8] c"len\00" +@fld.str.196 = private constant [4 x i8] c"pos\00" +@field_names.197 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.194, i64 3 }, { ptr, i64 } { ptr @fld.str.195, i64 3 }, { ptr, i64 } { ptr @fld.str.196, i64 3 }] +@str.198 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.199 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.201 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.203 = private constant [7 x i8] c"parent\00" +@fld.str.204 = private constant [12 x i8] c"alloc_count\00" +@fld.str.205 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.206 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.207 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.203, i64 6 }, { ptr, i64 } { ptr @fld.str.204, i64 11 }, { ptr, i64 } { ptr @fld.str.205, i64 13 }, { ptr, i64 } { ptr @fld.str.206, i64 17 }] +@str.208 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.209 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.210 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.211 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.212 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.213 = private constant [10 x i8] c"allocator\00" +@fld.str.214 = private constant [5 x i8] c"data\00" +@field_names.215 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.213, i64 9 }, { ptr, i64 } { ptr @fld.str.214, i64 4 }] +@str.216 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.217 = private unnamed_addr constant [13 x i8] c"ProposedSize\00", align 1 +@str.218 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.219 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.220 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.221 = private constant [6 x i8] c"width\00" +@fld.str.222 = private constant [7 x i8] c"height\00" +@field_names.223 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.221, i64 5 }, { ptr, i64 } { ptr @fld.str.222, i64 6 }] +@str.224 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.225 = private unnamed_addr constant [8 x i8] c"Sizable\00", align 1 +@str.226 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.227 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.228 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.229 = private constant [4 x i8] c"ctx\00" +@fld.str.230 = private constant [9 x i8] c"__vtable\00" +@field_names.231 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.229, i64 3 }, { ptr, i64 } { ptr @fld.str.230, i64 8 }] +@str.232 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.233 = private unnamed_addr constant [18 x i8] c"__Sizable__Vtable\00", align 1 +@str.234 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.235 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.236 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.237 = private constant [5 x i8] c"size\00" +@field_names.238 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.237, i64 4 }] +@str.239 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.240 = private unnamed_addr constant [7 x i8] c"Widget\00", align 1 +@str.241 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.242 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.243 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.244 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.245 = private unnamed_addr constant [3 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 @str.248 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.249 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.250 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.251 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.252 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.253 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.254 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.255 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.256 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.257 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.252 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.253 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.254 = private unnamed_addr constant [3 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 [3 x i8] c", \00", align 1 @str.258 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.259 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.259 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.260 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.261 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.262 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.262 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.263 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.264 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.265 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.265 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.266 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.267 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.268 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.268 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.269 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.270 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.271 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.271 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.272 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.273 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.274 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.274 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.275 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.276 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.277 = private unnamed_addr constant [8 x i8] c"*Widget\00", align 1 +@str.277 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.278 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.279 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.280 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.280 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.281 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.282 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.283 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.283 = private unnamed_addr constant [8 x i8] c"*Widget\00", align 1 @str.284 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.285 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.286 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.286 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.287 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.288 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.289 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.289 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.290 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.291 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.292 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.292 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.293 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.294 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.295 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.295 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.296 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.297 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.298 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.298 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.299 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.300 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.301 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.301 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.302 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.303 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.304 = private unnamed_addr constant [14 x i8] c"*ProposedSize\00", align 1 +@str.304 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.305 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.306 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.307 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 +@str.307 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 @str.308 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.309 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.310 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 +@str.310 = private unnamed_addr constant [14 x i8] c"*ProposedSize\00", align 1 @str.311 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.312 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.313 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.313 = private unnamed_addr constant [5 x i8] c"*f32\00", align 1 @str.314 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.315 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.316 = private unnamed_addr constant [9 x i8] c"*Sizable\00", align 1 +@str.316 = private unnamed_addr constant [5 x i8] c"*f64\00", align 1 @str.317 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.318 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.319 = private unnamed_addr constant [9 x i8] c"**Widget\00", align 1 +@str.319 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.320 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.321 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.322 = private unnamed_addr constant [19 x i8] c"*__Sizable__Vtable\00", align 1 +@str.322 = private unnamed_addr constant [9 x i8] c"*Sizable\00", align 1 @str.323 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.324 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.325 = private unnamed_addr constant [9 x i8] c"**Widget\00", align 1 +@str.326 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.327 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.328 = private unnamed_addr constant [19 x i8] c"*__Sizable__Vtable\00", align 1 +@str.329 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.330 = private unnamed_addr constant [5 x i8] c"null\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -468,38 +475,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -512,50 +524,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.68, label %if.merge.69 + +if.then.68: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.69: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.78 + +while.hdr.78: ; preds = %while.exit.89, %if.merge.69 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.82, label %or.rhs.81 + +while.body.79: ; preds = %or.merge.86 + %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.87 + +while.exit.80: ; preds = %or.merge.86 + %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.81: ; preds = %while.hdr.78 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.82 + +or.merge.82: ; preds = %or.rhs.81, %while.hdr.78 + %bp = phi i1 [ true, %while.hdr.78 ], [ %icmpN, %or.rhs.81 ] + br i1 %bp, label %or.merge.84, label %or.rhs.83 + +or.rhs.83: ; preds = %or.merge.82 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.84 + +or.merge.84: ; preds = %or.rhs.83, %or.merge.82 + %bpN = phi i1 [ true, %or.merge.82 ], [ %icmpN, %or.rhs.83 ] + br i1 %bpN, label %or.merge.86, label %or.rhs.85 + +or.rhs.85: ; preds = %or.merge.84 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.86 + +or.merge.86: ; preds = %or.rhs.85, %or.merge.84 + %bpN = phi i1 [ true, %or.merge.84 ], [ %icmpN, %or.rhs.85 ] + br i1 %bpN, label %while.body.79, label %while.exit.80 + +while.hdr.87: ; preds = %while.body.88, %while.body.79 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.88, label %while.exit.89 + +while.body.88: ; preds = %while.hdr.87 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.87 + +while.exit.89: ; preds = %while.hdr.87 + %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.78 +} + ; 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.66, label %if.else.67 + br i1 %load, label %if.then.90, label %if.else.91 -if.then.66: ; preds = %entry - br label %if.merge.68 +if.then.90: ; preds = %entry + br label %if.merge.92 -if.else.67: ; preds = %entry - br label %if.merge.68 +if.else.91: ; preds = %entry + br label %if.merge.92 -if.merge.68: ; preds = %if.else.67, %if.then.66 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.66 ], [ { ptr @str.2, i64 5 }, %if.else.67 ] +if.merge.92: ; preds = %if.else.91, %if.then.90 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.90 ], [ { ptr @str.3, i64 5 }, %if.else.91 ] ret { ptr, i64 } %bp } @@ -569,19 +709,19 @@ entry: %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.72, label %if.else.73 + br i1 %loadN, label %if.then.96, label %if.else.97 -if.then.72: ; preds = %entry +if.then.96: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.74 + br label %if.merge.98 -if.else.73: ; preds = %entry +if.else.97: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.74 + br label %if.merge.98 -if.merge.74: ; preds = %if.else.73, %if.then.72 - %bp = phi double [ %fsub, %if.then.72 ], [ %loadN, %if.else.73 ] +if.merge.98: ; preds = %if.else.97, %if.then.96 + %bp = phi double [ %fsub, %if.then.96 ], [ %loadN, %if.else.97 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -598,15 +738,15 @@ if.merge.74: ; preds = %if.else.73, %if.the 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.75, label %if.merge.76 + br i1 %icmp, label %if.then.99, label %if.merge.100 -if.then.75: ; preds = %if.merge.74 +if.then.99: ; preds = %if.merge.98 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.76 + br label %if.merge.100 -if.merge.76: ; preds = %if.then.75, %if.merge.74 +if.merge.100: ; preds = %if.then.99, %if.merge.98 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -624,16 +764,16 @@ if.merge.76: ; preds = %if.then.75, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.77, label %if.else.78 + br i1 %loadN, label %if.then.101, label %if.else.102 -if.then.77: ; preds = %if.merge.76 - br label %if.merge.79 +if.then.101: ; preds = %if.merge.100 + br label %if.merge.103 -if.else.78: ; preds = %if.merge.76 - br label %if.merge.79 +if.else.102: ; preds = %if.merge.100 + br label %if.merge.103 -if.merge.79: ; preds = %if.else.78, %if.then.77 - %bpN = phi i64 [ 1, %if.then.77 ], [ 0, %if.else.78 ] +if.merge.103: ; preds = %if.else.102, %if.then.101 + %bpN = phi i64 [ 1, %if.then.101 ], [ 0, %if.else.102 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -650,17 +790,17 @@ if.merge.79: ; preds = %if.else.78, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.80, label %if.merge.81 + br i1 %loadN, label %if.then.104, label %if.merge.105 -if.then.80: ; preds = %if.merge.79 +if.then.104: ; preds = %if.merge.103 %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.81 + br label %if.merge.105 -if.merge.81: ; preds = %if.then.80, %if.merge.79 +if.merge.105: ; preds = %if.then.104, %if.merge.103 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -723,39 +863,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.223 + br label %while.hdr.245 -while.hdr.223: ; preds = %if.merge.228, %entry +while.hdr.245: ; preds = %if.merge.250, %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.224, label %while.exit.225 + br i1 %icmp, label %while.body.246, label %while.exit.247 -while.body.224: ; preds = %while.hdr.223 +while.body.246: ; preds = %while.hdr.245 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.226, label %if.else.227 + br i1 %icmpN, label %if.then.248, label %if.else.249 -while.exit.225: ; preds = %while.hdr.223 +while.exit.247: ; preds = %while.hdr.245 ret void -if.then.226: ; preds = %while.body.224 +if.then.248: ; preds = %while.body.246 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.228 + br label %if.merge.250 -if.else.227: ; preds = %while.body.224 +if.else.249: ; preds = %while.body.246 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.228 + br label %if.merge.250 -if.merge.228: ; preds = %if.else.227, %if.then.226 - %bp = phi i64 [ %addN, %if.then.226 ], [ %addN, %if.else.227 ] +if.merge.250: ; preds = %if.else.249, %if.then.248 + %bp = phi i64 [ %addN, %if.then.248 ], [ %addN, %if.else.249 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -768,37 +908,29 @@ if.merge.228: ; preds = %if.else.227, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.223 + br label %while.hdr.245 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.213, label %if.merge.214 - -if.then.213: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.214: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.215, label %if.merge.216 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.70, label %if.merge.71 -if.then.215: ; preds = %if.merge.214 +if.then.70: ; 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.216 + br label %if.merge.71 -if.merge.216: ; preds = %if.then.215, %if.merge.214 +if.merge.71: ; preds = %if.then.70, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -811,15 +943,15 @@ if.merge.216: ; preds = %if.then.215, %if.me 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.217, label %if.merge.218 + br i1 %icmpN, label %if.then.72, label %if.merge.73 -if.then.217: ; preds = %if.merge.216 +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.218 + br label %if.merge.73 -if.merge.218: ; preds = %if.then.217, %if.merge.216 +if.merge.73: ; preds = %if.then.72, %if.merge.71 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -832,15 +964,15 @@ if.merge.218: ; preds = %if.then.217, %if.me 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.219, label %if.merge.220 + br i1 %icmpN, label %if.then.74, label %if.merge.75 -if.then.219: ; preds = %if.merge.218 +if.then.74: ; preds = %if.merge.73 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.220 + br label %if.merge.75 -if.merge.220: ; preds = %if.then.219, %if.merge.218 +if.merge.75: ; preds = %if.then.74, %if.merge.73 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -853,65 +985,116 @@ if.merge.220: ; preds = %if.then.219, %if.me 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.221, label %if.merge.222 + br i1 %icmpN, label %if.then.76, label %if.merge.77 -if.then.221: ; preds = %if.merge.220 +if.then.76: ; preds = %if.merge.75 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.222 + br label %if.merge.77 -if.merge.222: ; preds = %if.then.221, %if.merge.220 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.77: ; preds = %if.then.76, %if.merge.75 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.243, label %if.merge.244 + +if.then.243: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.244: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.229 + br label %while.hdr.251 -while.hdr.229: ; preds = %if.merge.233, %if.merge.222 +while.hdr.251: ; preds = %if.merge.255, %if.merge.244 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.230, label %while.exit.231 + br i1 %icmpN, label %while.body.252, label %while.exit.253 -while.body.230: ; preds = %while.hdr.229 +while.body.252: ; preds = %while.hdr.251 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.232, label %if.merge.233 + br i1 %icmpN, label %if.then.254, label %if.merge.255 -while.exit.231: ; preds = %if.then.232, %while.hdr.229 +while.exit.253: ; preds = %if.then.254, %while.hdr.251 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.232: ; preds = %while.body.230 - br label %while.exit.231 +if.then.254: ; preds = %while.body.252 + br label %while.exit.253 -if.merge.233: ; preds = %while.body.230 +if.merge.255: ; preds = %while.body.252 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.229 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.251 } ; Function Attrs: nounwind @@ -990,7 +1173,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -998,576 +1181,603 @@ entry: 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.65 [ - i64 17, label %match.arm.51 - i64 2, label %match.arm.52 - i64 3, label %match.arm.52 - i64 4, label %match.arm.52 - i64 5, label %match.arm.52 - i64 6, label %match.arm.52 - i64 7, label %match.arm.52 - i64 8, label %match.arm.52 - i64 9, label %match.arm.52 - i64 16, label %match.arm.52 - i64 15, label %match.arm.52 - i64 12, label %match.arm.53 - i64 1, label %match.arm.54 - i64 10, label %match.arm.55 - i64 11, label %match.arm.55 - i64 19, label %match.arm.56 - i64 20, label %match.arm.56 - i64 21, label %match.arm.56 - i64 23, label %match.arm.56 - i64 25, label %match.arm.56 - i64 27, label %match.arm.56 - i64 30, label %match.arm.56 - i64 32, label %match.arm.56 - i64 34, label %match.arm.56 - i64 37, label %match.arm.56 - i64 38, label %match.arm.56 - i64 39, label %match.arm.56 - i64 40, label %match.arm.56 - i64 54, label %match.arm.60 - i64 35, label %match.arm.61 + switch i64 %ua.raw, label %match.unr.64 [ + i64 17, label %match.arm.50 + i64 2, label %match.arm.51 + i64 3, label %match.arm.51 + i64 4, label %match.arm.51 + i64 5, label %match.arm.51 + i64 6, label %match.arm.51 + i64 7, label %match.arm.51 + i64 8, label %match.arm.51 + i64 9, label %match.arm.51 + i64 16, label %match.arm.51 + i64 15, label %match.arm.51 + i64 12, label %match.arm.52 + i64 1, label %match.arm.53 + i64 10, label %match.arm.54 + i64 11, label %match.arm.54 + i64 19, label %match.arm.55 + i64 20, label %match.arm.55 + i64 21, label %match.arm.55 + i64 23, label %match.arm.55 + i64 25, label %match.arm.55 + i64 27, label %match.arm.55 + i64 30, label %match.arm.55 + i64 32, label %match.arm.55 + i64 34, label %match.arm.55 + i64 38, label %match.arm.55 + i64 39, label %match.arm.55 + i64 40, label %match.arm.55 + i64 41, label %match.arm.55 + i64 35, label %match.arm.59 + i64 55, label %match.arm.59 + i64 36, label %match.arm.60 + i64 47, label %match.arm.60 + i64 18, label %match.arm.61 + i64 22, label %match.arm.61 + i64 24, label %match.arm.61 + i64 26, label %match.arm.61 + i64 28, label %match.arm.61 + i64 29, label %match.arm.61 + i64 31, label %match.arm.61 + i64 33, label %match.arm.61 + i64 42, label %match.arm.61 + i64 43, label %match.arm.61 + i64 44, label %match.arm.61 + i64 45, label %match.arm.61 i64 46, label %match.arm.61 - i64 18, label %match.arm.62 - i64 22, label %match.arm.62 - i64 24, label %match.arm.62 - i64 26, label %match.arm.62 - i64 28, label %match.arm.62 - i64 29, label %match.arm.62 - i64 31, label %match.arm.62 - i64 33, label %match.arm.62 - i64 41, label %match.arm.62 - i64 42, label %match.arm.62 - i64 43, label %match.arm.62 - i64 44, label %match.arm.62 - i64 45, label %match.arm.62 - i64 47, label %match.arm.62 - i64 48, label %match.arm.62 - i64 49, label %match.arm.62 - i64 50, label %match.arm.62 - i64 51, label %match.arm.62 - i64 52, label %match.arm.62 - i64 53, label %match.arm.62 - i64 55, label %match.arm.62 - i64 56, label %match.arm.62 - i64 57, label %match.arm.62 - i64 58, label %match.arm.62 - i64 36, label %match.arm.63 - i64 13, label %match.arm.64 + i64 48, label %match.arm.61 + i64 49, label %match.arm.61 + i64 50, label %match.arm.61 + i64 51, label %match.arm.61 + i64 52, label %match.arm.61 + i64 53, label %match.arm.61 + i64 54, label %match.arm.61 + i64 56, label %match.arm.61 + i64 57, label %match.arm.61 + i64 58, label %match.arm.61 + i64 59, label %match.arm.61 + i64 37, label %match.arm.62 + i64 13, label %match.arm.63 ] -match.merge.50: ; preds = %dispatch.merge.303, %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.162, %dispatch.merge.82, %float.merge.71, %match.unr.65, %match.arm.64, %match.arm.54, %match.arm.53, %match.arm.52, %match.arm.51 +match.merge.49: ; preds = %dispatch.merge.325, %dispatch.merge.214, %dispatch.merge.200, %dispatch.merge.186, %dispatch.merge.106, %float.merge.95, %if.merge.67, %match.unr.64, %match.arm.63, %match.arm.53, %match.arm.52, %match.arm.50 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.51: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.50 +match.arm.50: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.49 -match.arm.52: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.50 +match.arm.51: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [87 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.65, label %if.else.66 -match.arm.53: ; preds = %entry +match.arm.52: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.50 + br label %match.merge.49 -match.arm.54: ; preds = %entry +match.arm.53: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.50 + %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.49 -match.arm.55: ; preds = %entry, %entry +match.arm.54: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.69, label %fN.unbox.70 + br i1 %icmp, label %fN.unbox.93, label %fN.unbox.94 -match.arm.56: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.55: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.83 [ - i64 19, label %dispatch.case.84 - i64 20, label %dispatch.case.85 - i64 21, label %dispatch.case.86 - i64 23, label %dispatch.case.87 - i64 25, label %dispatch.case.88 - i64 27, label %dispatch.case.89 - i64 30, label %dispatch.case.90 - i64 32, label %dispatch.case.91 - i64 34, label %dispatch.case.92 - i64 37, label %dispatch.case.93 - i64 38, label %dispatch.case.94 - i64 39, label %dispatch.case.95 - i64 40, label %dispatch.case.96 + switch i64 %ua.raw16, label %dispatch.default.107 [ + i64 19, label %dispatch.case.108 + i64 20, label %dispatch.case.109 + i64 21, label %dispatch.case.110 + i64 23, label %dispatch.case.111 + i64 25, label %dispatch.case.112 + i64 27, label %dispatch.case.113 + i64 30, label %dispatch.case.114 + i64 32, label %dispatch.case.115 + i64 34, label %dispatch.case.116 + i64 38, label %dispatch.case.117 + i64 39, label %dispatch.case.118 + i64 40, label %dispatch.case.119 + i64 41, label %dispatch.case.120 ] +match.arm.56: ; No predecessors! + unreachable + match.arm.57: ; No predecessors! unreachable match.arm.58: ; No predecessors! unreachable -match.arm.59: ; No predecessors! - unreachable - -match.arm.60: ; preds = %entry +match.arm.59: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.163 [ - i64 54, label %dispatch.case.164 + switch i64 %ua.raw20, label %dispatch.default.187 [ + i64 35, label %dispatch.case.188 + i64 55, label %dispatch.case.189 ] -match.arm.61: ; preds = %entry, %entry +match.arm.60: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.171 [ - i64 35, label %dispatch.case.172 - i64 46, label %dispatch.case.173 + switch i64 %ua.raw24, label %dispatch.default.201 [ + i64 36, label %dispatch.case.202 + i64 47, label %dispatch.case.203 ] -match.arm.62: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.61: ; preds = %entry, %entry, %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.raw30 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.185 [ - i64 18, label %dispatch.case.186 - i64 22, label %dispatch.case.187 - i64 24, label %dispatch.case.188 - i64 26, label %dispatch.case.189 - i64 28, label %dispatch.case.190 - i64 29, label %dispatch.case.191 - i64 31, label %dispatch.case.192 - i64 33, label %dispatch.case.193 - i64 41, label %dispatch.case.194 - i64 42, label %dispatch.case.195 - i64 43, label %dispatch.case.196 - i64 44, label %dispatch.case.197 - i64 45, label %dispatch.case.198 - i64 47, label %dispatch.case.199 - i64 48, label %dispatch.case.200 - i64 49, label %dispatch.case.201 - i64 50, label %dispatch.case.202 - i64 51, label %dispatch.case.203 - i64 52, label %dispatch.case.204 - i64 53, label %dispatch.case.205 - i64 55, label %dispatch.case.206 - i64 56, label %dispatch.case.207 - i64 57, label %dispatch.case.208 - i64 58, label %dispatch.case.209 + switch i64 %ua.raw28, label %dispatch.default.215 [ + i64 18, label %dispatch.case.216 + i64 22, label %dispatch.case.217 + i64 24, label %dispatch.case.218 + i64 26, label %dispatch.case.219 + i64 28, label %dispatch.case.220 + i64 29, label %dispatch.case.221 + i64 31, label %dispatch.case.222 + i64 33, label %dispatch.case.223 + i64 42, label %dispatch.case.224 + i64 43, label %dispatch.case.225 + i64 44, label %dispatch.case.226 + i64 45, label %dispatch.case.227 + i64 46, label %dispatch.case.228 + i64 48, label %dispatch.case.229 + i64 49, label %dispatch.case.230 + i64 50, label %dispatch.case.231 + i64 51, label %dispatch.case.232 + i64 52, label %dispatch.case.233 + i64 53, label %dispatch.case.234 + i64 54, label %dispatch.case.235 + i64 56, label %dispatch.case.236 + i64 57, label %dispatch.case.237 + i64 58, label %dispatch.case.238 + i64 59, label %dispatch.case.239 + ] + +match.arm.62: ; preds = %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %ua.raw32 = extractvalue { i64, i64 } %loadN, 1 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw32, label %dispatch.default.326 [ + i64 37, label %dispatch.case.327 ] match.arm.63: ; preds = %entry - %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.304 [ - i64 36, label %dispatch.case.305 - ] - -match.arm.64: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [85 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [87 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -match.unr.65: ; preds = %entry - br label %match.merge.50 +match.unr.64: ; preds = %entry + br label %match.merge.49 -f32.unbox.69: ; preds = %match.arm.55 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.65: ; preds = %match.arm.51 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.67 + +if.else.66: ; preds = %match.arm.51 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.67 + +if.merge.67: ; preds = %if.else.66, %if.then.65 + br label %match.merge.49 + +f32.unbox.93: ; preds = %match.arm.54 + %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.71 + br label %float.merge.95 -f64.unbox.70: ; preds = %match.arm.55 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.94: ; preds = %match.arm.54 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.71 + br label %float.merge.95 -float.merge.71: ; preds = %fN.unbox.70, %fN.unbox.69 +float.merge.95: ; preds = %fN.unbox.94, %fN.unbox.93 %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.50 + br label %match.merge.49 -dispatch.merge.82: ; preds = %dispatch.case.96, %dispatch.case.95, %dispatch.case.94, %dispatch.case.93, %dispatch.case.92, %dispatch.case.91, %dispatch.case.90, %dispatch.case.89, %dispatch.case.88, %dispatch.case.87, %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.default.83 +dispatch.merge.106: ; preds = %dispatch.case.120, %dispatch.case.119, %dispatch.case.118, %dispatch.case.117, %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.default.107 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.83: ; preds = %match.arm.56 - store { ptr, i64 } { ptr @str.90, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.82 +dispatch.default.107: ; preds = %match.arm.55 + store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.106 -dispatch.case.84: ; preds = %match.arm.56 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 - -dispatch.case.85: ; preds = %match.arm.56 +dispatch.case.108: ; preds = %match.arm.55 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.86: ; preds = %match.arm.56 +dispatch.case.109: ; preds = %match.arm.55 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.87: ; preds = %match.arm.56 +dispatch.case.110: ; preds = %match.arm.55 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.88: ; preds = %match.arm.56 +dispatch.case.111: ; preds = %match.arm.55 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.89: ; preds = %match.arm.56 +dispatch.case.112: ; preds = %match.arm.55 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.90: ; preds = %match.arm.56 +dispatch.case.113: ; preds = %match.arm.55 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.91: ; preds = %match.arm.56 +dispatch.case.114: ; preds = %match.arm.55 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.92: ; preds = %match.arm.56 +dispatch.case.115: ; preds = %match.arm.55 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.93: ; preds = %match.arm.56 +dispatch.case.116: ; preds = %match.arm.55 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load { { float, i1 }, { float, i1 } }, ptr %ua.ptr80, align 4 - %callN = call { ptr, i64 } @struct_to_string__ProposedSize(ptr %0, { { float, i1 }, { float, i1 } } %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.94: ; preds = %match.arm.56 +dispatch.case.117: ; preds = %match.arm.55 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr - %ua.load85 = load { ptr, ptr }, ptr %ua.ptr84, align 8 - %callN = call { ptr, i64 } @struct_to_string__Sizable(ptr %0, { ptr, ptr } %ua.load85) + %ua.load85 = load { { float, i1 }, { float, i1 } }, ptr %ua.ptr84, align 4 + %callN = call { ptr, i64 } @struct_to_string__ProposedSize(ptr %0, { { float, i1 }, { float, i1 } } %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.95: ; preds = %match.arm.56 +dispatch.case.118: ; preds = %match.arm.55 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { ptr }, ptr %ua.ptr88, align 8 - %callN = call { ptr, i64 } @struct_to_string____Sizable__Vtable(ptr %0, { ptr } %ua.load89) + %ua.load89 = load { ptr, ptr }, ptr %ua.ptr88, align 8 + %callN = call { ptr, i64 } @struct_to_string__Sizable(ptr %0, { ptr, ptr } %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.96: ; preds = %match.arm.56 +dispatch.case.119: ; preds = %match.arm.55 %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__Widget(ptr %0, {} %ua.load93) + %ua.load93 = load { ptr }, ptr %ua.ptr92, align 8 + %callN = call { ptr, i64 } @struct_to_string____Sizable__Vtable(ptr %0, { ptr } %ua.load93) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.merge.162: ; preds = %dispatch.case.164, %dispatch.default.163 +dispatch.case.120: ; preds = %match.arm.55 + %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__Widget(ptr %0, {} %ua.load97) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.106 + +dispatch.merge.186: ; preds = %dispatch.case.189, %dispatch.case.188, %dispatch.default.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.163: ; preds = %match.arm.60 - store { ptr, i64 } { ptr @str.91, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.162 +dispatch.default.187: ; preds = %match.arm.59 + store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.186 -dispatch.case.164: ; preds = %match.arm.60 - %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr97 = inttoptr i64 %ua.raw96 to ptr - %ua.load98 = load [1 x { i64, i64 }], ptr %ua.ptr97, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load98) +dispatch.case.188: ; preds = %match.arm.59 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr101 = inttoptr i64 %ua.raw100 to ptr + %ua.load102 = load [4 x i64], ptr %ua.ptr101, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load102) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.162 + br label %dispatch.merge.186 -dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 +dispatch.case.189: ; preds = %match.arm.59 + %ua.raw104 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr105 = inttoptr i64 %ua.raw104 to ptr + %ua.load106 = load [1 x { i64, i64 }], ptr %ua.ptr105, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load106) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.186 + +dispatch.merge.200: ; preds = %dispatch.case.203, %dispatch.case.202, %dispatch.default.201 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.171: ; preds = %match.arm.61 - store { ptr, i64 } { ptr @str.92, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.170 +dispatch.default.201: ; preds = %match.arm.60 + store { ptr, i64 } { ptr @str.95, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.200 -dispatch.case.172: ; preds = %match.arm.61 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr - %ua.load103 = load { ptr, i64 }, ptr %ua.ptr102, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load103) +dispatch.case.202: ; preds = %match.arm.60 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr + %ua.load111 = load { ptr, i64 }, ptr %ua.ptr110, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load111) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.170 + br label %dispatch.merge.200 -dispatch.case.173: ; preds = %match.arm.61 - %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr - %ua.load107 = load { ptr, i64 }, ptr %ua.ptr106, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load107) +dispatch.case.203: ; preds = %match.arm.60 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr114 = inttoptr i64 %ua.raw113 to ptr + %ua.load115 = load { ptr, i64 }, ptr %ua.ptr114, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load115) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.170 + br label %dispatch.merge.200 -dispatch.merge.184: ; preds = %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 +dispatch.merge.214: ; preds = %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.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.default.215 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.185: ; preds = %match.arm.62 - store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.184 +dispatch.default.215: ; preds = %match.arm.61 + store { ptr, i64 } { ptr @str.96, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.214 -dispatch.case.186: ; preds = %match.arm.62 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw110 to ptr +dispatch.case.216: ; preds = %match.arm.61 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw118 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.184 + br label %dispatch.merge.214 -dispatch.case.187: ; preds = %match.arm.62 - %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 - %iNp113 = inttoptr i64 %ua.raw112 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp113) +dispatch.case.217: ; preds = %match.arm.61 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %iNp121 = inttoptr i64 %ua.raw120 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp121) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.188: ; preds = %match.arm.62 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp116 = inttoptr i64 %ua.raw115 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp116) +dispatch.case.218: ; preds = %match.arm.61 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp124 = inttoptr i64 %ua.raw123 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.189: ; preds = %match.arm.62 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %iNp119 = inttoptr i64 %ua.raw118 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp119) +dispatch.case.219: ; preds = %match.arm.61 + %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 + %iNp127 = inttoptr i64 %ua.raw126 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.190: ; preds = %match.arm.62 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp122) +dispatch.case.220: ; preds = %match.arm.61 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.191: ; preds = %match.arm.62 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp125) +dispatch.case.221: ; preds = %match.arm.61 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.192: ; preds = %match.arm.62 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp128) +dispatch.case.222: ; preds = %match.arm.61 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.193: ; preds = %match.arm.62 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp131) +dispatch.case.223: ; preds = %match.arm.61 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.194: ; preds = %match.arm.62 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Widget(ptr %0, ptr %iNp134) +dispatch.case.224: ; preds = %match.arm.61 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Widget(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.195: ; preds = %match.arm.62 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp137) +dispatch.case.225: ; preds = %match.arm.61 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.196: ; preds = %match.arm.62 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp140) +dispatch.case.226: ; preds = %match.arm.61 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.197: ; preds = %match.arm.62 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp143) +dispatch.case.227: ; preds = %match.arm.61 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.198: ; preds = %match.arm.62 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp146) +dispatch.case.228: ; preds = %match.arm.61 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.199: ; preds = %match.arm.62 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp149) +dispatch.case.229: ; preds = %match.arm.61 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.200: ; preds = %match.arm.62 - %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 - %iNp152 = inttoptr i64 %ua.raw151 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp152) +dispatch.case.230: ; preds = %match.arm.61 + %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 + %iNp160 = inttoptr i64 %ua.raw159 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp160) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.201: ; preds = %match.arm.62 - %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 - %iNp155 = inttoptr i64 %ua.raw154 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp155) +dispatch.case.231: ; preds = %match.arm.61 + %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 + %iNp163 = inttoptr i64 %ua.raw162 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp163) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.202: ; preds = %match.arm.62 - %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 - %iNp158 = inttoptr i64 %ua.raw157 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp158) +dispatch.case.232: ; preds = %match.arm.61 + %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 + %iNp166 = inttoptr i64 %ua.raw165 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp166) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.203: ; preds = %match.arm.62 - %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 - %iNp161 = inttoptr i64 %ua.raw160 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ProposedSize(ptr %0, ptr %iNp161) +dispatch.case.233: ; preds = %match.arm.61 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %iNp169 = inttoptr i64 %ua.raw168 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ProposedSize(ptr %0, ptr %iNp169) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.204: ; preds = %match.arm.62 - %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 - %iNp164 = inttoptr i64 %ua.raw163 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp164) +dispatch.case.234: ; preds = %match.arm.61 + %ua.raw171 = extractvalue { i64, i64 } %loadN, 1 + %iNp172 = inttoptr i64 %ua.raw171 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f32(ptr %0, ptr %iNp172) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.205: ; preds = %match.arm.62 - %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 - %iNp167 = inttoptr i64 %ua.raw166 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp167) +dispatch.case.235: ; preds = %match.arm.61 + %ua.raw174 = extractvalue { i64, i64 } %loadN, 1 + %iNp175 = inttoptr i64 %ua.raw174 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_f64(ptr %0, ptr %iNp175) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.206: ; preds = %match.arm.62 - %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 - %iNp170 = inttoptr i64 %ua.raw169 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp170) +dispatch.case.236: ; preds = %match.arm.61 + %ua.raw177 = extractvalue { i64, i64 } %loadN, 1 + %iNp178 = inttoptr i64 %ua.raw177 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp178) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.207: ; preds = %match.arm.62 - %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 - %iNp173 = inttoptr i64 %ua.raw172 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Sizable(ptr %0, ptr %iNp173) +dispatch.case.237: ; preds = %match.arm.61 + %ua.raw180 = extractvalue { i64, i64 } %loadN, 1 + %iNp181 = inttoptr i64 %ua.raw180 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Sizable(ptr %0, ptr %iNp181) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.208: ; preds = %match.arm.62 - %ua.raw175 = extractvalue { i64, i64 } %loadN, 1 - %iNp176 = inttoptr i64 %ua.raw175 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Widget(ptr %0, ptr %iNp176) +dispatch.case.238: ; preds = %match.arm.61 + %ua.raw183 = extractvalue { i64, i64 } %loadN, 1 + %iNp184 = inttoptr i64 %ua.raw183 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_Widget(ptr %0, ptr %iNp184) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.case.209: ; preds = %match.arm.62 - %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 - %iNp179 = inttoptr i64 %ua.raw178 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr___Sizable__Vtable(ptr %0, ptr %iNp179) +dispatch.case.239: ; preds = %match.arm.61 + %ua.raw186 = extractvalue { i64, i64 } %loadN, 1 + %iNp187 = inttoptr i64 %ua.raw186 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr___Sizable__Vtable(ptr %0, ptr %iNp187) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.184 + br label %dispatch.merge.214 -dispatch.merge.303: ; preds = %dispatch.case.305, %dispatch.default.304 +dispatch.merge.325: ; preds = %dispatch.case.327, %dispatch.default.326 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.304: ; preds = %match.arm.63 - store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.303 +dispatch.default.326: ; preds = %match.arm.62 + store { ptr, i64 } { ptr @str.97, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.325 -dispatch.case.305: ; preds = %match.arm.63 - %ua.raw182 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr183 = inttoptr i64 %ua.raw182 to ptr - %ua.load184 = load { float, i1 }, ptr %ua.ptr183, align 4 - %callN = call { ptr, i64 } @optional_to_string__opt_f32(ptr %0, { float, i1 } %ua.load184) +dispatch.case.327: ; preds = %match.arm.62 + %ua.raw190 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr191 = inttoptr i64 %ua.raw190 to ptr + %ua.load192 = load { float, i1 }, ptr %ua.ptr191, align 4 + %callN = call { ptr, i64 } @optional_to_string__opt_f32(ptr %0, { float, i1 } %ua.load192) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.303 + br label %dispatch.merge.325 } ; Function Attrs: nounwind @@ -1576,7 +1786,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.95, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.98, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1607,7 +1817,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1625,9 +1835,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1665,14 +1875,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, 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 @@ -1680,7 +1890,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, 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 @@ -1690,13 +1900,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, 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 @@ -1704,7 +1914,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1716,83 +1926,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, 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.102, 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.103, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.104, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1820,18 +1954,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1844,6 +2015,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, 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.109, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, 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.111, 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 @@ -1852,11 +2062,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1869,41 +2079,41 @@ entry: %load = load { { float, i1 }, { float, i1 } }, ptr %alloca, align 4 %sg = extractvalue { { float, i1 }, { float, i1 } } %load, 0 %oh.has = extractvalue { float, i1 } %sg, 1 - br i1 %oh.has, label %if.then.38, label %if.else.39 + br i1 %oh.has, label %if.then.37, label %if.else.38 -if.then.38: ; preds = %entry +if.then.37: ; preds = %entry %ou.val = extractvalue { float, i1 } %sg, 0 %allocaN = alloca float, align 4 store float %ou.val, ptr %allocaN, align 4 %loadN = load float, ptr %allocaN, align 4 %fpext = fpext float %loadN to double - br label %if.merge.40 + br label %if.merge.39 -if.else.39: ; preds = %entry - br label %if.merge.40 +if.else.38: ; preds = %entry + br label %if.merge.39 -if.merge.40: ; preds = %if.else.39, %if.then.38 - %bp = phi double [ %fpext, %if.then.38 ], [ 1.000000e+02, %if.else.39 ] +if.merge.39: ; preds = %if.else.38, %if.then.37 + %bp = phi double [ %fpext, %if.then.37 ], [ 1.000000e+02, %if.else.38 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load { { float, i1 }, { float, i1 } }, ptr %alloca, align 4 %sgN = extractvalue { { float, i1 }, { float, i1 } } %loadN, 1 %oh.has6 = extractvalue { float, i1 } %sgN, 1 - br i1 %oh.has6, label %if.then.41, label %if.else.42 + br i1 %oh.has6, label %if.then.40, label %if.else.41 -if.then.41: ; preds = %if.merge.40 +if.then.40: ; preds = %if.merge.39 %ou.val7 = extractvalue { float, i1 } %sgN, 0 %allocaN = alloca float, align 4 store float %ou.val7, ptr %allocaN, align 4 %loadN = load float, ptr %allocaN, align 4 %fpextN = fpext float %loadN to double - br label %if.merge.43 + br label %if.merge.42 -if.else.42: ; preds = %if.merge.40 - br label %if.merge.43 +if.else.41: ; preds = %if.merge.39 + br label %if.merge.42 -if.merge.43: ; preds = %if.else.42, %if.then.41 - %bpN = phi double [ %fpextN, %if.then.41 ], [ 1.000000e+02, %if.else.42 ] +if.merge.42: ; preds = %if.else.41, %if.then.40 + %bpN = phi double [ %fpextN, %if.then.40 ], [ 1.000000e+02, %if.else.41 ] %allocaN = alloca double, align 8 store double %bpN, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -1923,41 +2133,41 @@ entry: %load = load { { float, i1 }, { float, i1 } }, ptr %allocaN, align 4 %sg = extractvalue { { float, i1 }, { float, i1 } } %load, 0 %oh.has = extractvalue { float, i1 } %sg, 1 - br i1 %oh.has, label %if.then.44, label %if.else.45 + br i1 %oh.has, label %if.then.43, label %if.else.44 -if.then.44: ; preds = %entry +if.then.43: ; preds = %entry %ou.val = extractvalue { float, i1 } %sg, 0 %allocaN = alloca float, align 4 store float %ou.val, ptr %allocaN, align 4 %loadN = load float, ptr %allocaN, align 4 %fpext = fpext float %loadN to double - br label %if.merge.46 + br label %if.merge.45 -if.else.45: ; preds = %entry - br label %if.merge.46 +if.else.44: ; preds = %entry + br label %if.merge.45 -if.merge.46: ; preds = %if.else.45, %if.then.44 - %bp = phi double [ %fpext, %if.then.44 ], [ 1.000000e+02, %if.else.45 ] +if.merge.45: ; preds = %if.else.44, %if.then.43 + %bp = phi double [ %fpext, %if.then.43 ], [ 1.000000e+02, %if.else.44 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load { { float, i1 }, { float, i1 } }, ptr %allocaN, align 4 %sgN = extractvalue { { float, i1 }, { float, i1 } } %loadN, 1 %oh.has7 = extractvalue { float, i1 } %sgN, 1 - br i1 %oh.has7, label %if.then.47, label %if.else.48 + br i1 %oh.has7, label %if.then.46, label %if.else.47 -if.then.47: ; preds = %if.merge.46 +if.then.46: ; preds = %if.merge.45 %ou.val8 = extractvalue { float, i1 } %sgN, 0 %allocaN = alloca float, align 4 store float %ou.val8, ptr %allocaN, align 4 %loadN = load float, ptr %allocaN, align 4 %fpextN = fpext float %loadN to double - br label %if.merge.49 + br label %if.merge.48 -if.else.48: ; preds = %if.merge.46 - br label %if.merge.49 +if.else.47: ; preds = %if.merge.45 + br label %if.merge.48 -if.merge.49: ; preds = %if.else.48, %if.then.47 - %bpN = phi double [ %fpextN, %if.then.47 ], [ 1.000000e+02, %if.else.48 ] +if.merge.48: ; preds = %if.else.47, %if.then.46 + %bpN = phi double [ %fpextN, %if.then.46 ], [ 1.000000e+02, %if.else.47 ] %allocaN = alloca double, align 8 store double %bpN, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -2060,14 +2270,14 @@ entry: define internal void @print__ct_safaf8808e13137c9__pack(ptr %0) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.110, i64 21 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.113, i64 21 }, 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.111, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.114, 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 21) @@ -2083,66 +2293,12 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.112, i64 21 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.115, i64 21 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind define internal void @print__ct_sa9ba8ae6123c77ba__pack_f32(ptr %0, float %1) #0 { -entry: - %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.113, i64 8 }, ptr %alloca, align 8 - %allocaN = alloca float, align 4 - store float %1, ptr %allocaN, align 4 - %allocaN = alloca [1 x { i64, i64 }], align 8 - %load = load float, ptr %allocaN, align 4 - %fNi32 = bitcast float %load to i32 - %zN = zext i32 %fNi32 to i64 - %ba.val = insertvalue { i64, i64 } { i64 10, i64 undef }, i64 %zN, 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.114, 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 5) - %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 float, ptr %allocaN, align 4 - %fNi3212 = bitcast float %loadN to i32 - %zN = zext i32 %fNi3212 to i64 - %ba.val14 = insertvalue { i64, i64 } { i64 10, i64 undef }, i64 %zN, 1 - %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) - %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 7, 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.115, i64 8 }) - ret { ptr, i64 } %call -} - -; Function Attrs: nounwind -define internal void @print__ct_s9af257f36f17eef5__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.116, i64 8 }, ptr %alloca, align 8 @@ -2189,14 +2345,14 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_2(ptr %0) #0 { +define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.118, i64 8 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal void @print__ct_scf4d64fa60dbbfb4__pack_f32(ptr %0, float %1) #0 { +define internal void @print__ct_s9af257f36f17eef5__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.119, i64 8 }, ptr %alloca, align 8 @@ -2243,14 +2399,14 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_3(ptr %0) #0 { +define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.121, i64 8 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal void @print__ct_s1c39af9abf6a4a07__pack_f32(ptr %0, float %1) #0 { +define internal void @print__ct_scf4d64fa60dbbfb4__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.122, i64 8 }, ptr %alloca, align 8 @@ -2297,55 +2453,17 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_4(ptr %0) #0 { +define internal { ptr, i64 } @__insert_3(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.124, i64 8 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal void @print__ct_s1982bb0332b7dace__pack(ptr %0) #0 { +define internal void @print__ct_s1c39af9abf6a4a07__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.125, i64 26 }, 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.126, i64 0 }, ptr %allocaN, align 8 - %load = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load { ptr, i64 }, ptr %alloca, align 8 - %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 26) - %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_5(ptr %0) #0 { -entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 26 }) - ret { ptr, i64 } %call -} - -; Function Attrs: nounwind -define internal float @__thunk_Widget_Sizable_size(ptr %0, ptr %1, { { float, i1 }, { float, i1 } } %2) #0 { -entry: - %call = call float @Widget.size(ptr %0, ptr %1, { { float, i1 }, { float, i1 } } %2) - ret float %call -} - -; Function Attrs: nounwind -define internal void @print__ct_s328a3cec2430526b__pack_f32(ptr %0, float %1) #0 { -entry: - %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.128, i64 8 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.125, i64 8 }, ptr %alloca, align 8 %allocaN = alloca float, align 4 store float %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2362,7 +2480,7 @@ entry: %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.129, i64 0 }, ptr %allocaN, 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 5) @@ -2389,14 +2507,52 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_6(ptr %0) #0 { +define internal { ptr, i64 } @__insert_4(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 8 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 8 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal void @print__ct_sad2d86d80b81462__pack_f32(ptr %0, float %1) #0 { +define internal void @print__ct_s1982bb0332b7dace__pack(ptr %0) #0 { +entry: + %alloca = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.128, i64 26 }, 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 26) + %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_5(ptr %0) #0 { +entry: + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 26 }) + ret { ptr, i64 } %call +} + +; Function Attrs: nounwind +define internal float @__thunk_Widget_Sizable_size(ptr %0, ptr %1, { { float, i1 }, { float, i1 } } %2) #0 { +entry: + %call = call float @Widget.size(ptr %0, ptr %1, { { float, i1 }, { float, i1 } } %2) + ret float %call +} + +; Function Attrs: nounwind +define internal void @print__ct_s328a3cec2430526b__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.131, i64 8 }, ptr %alloca, align 8 @@ -2443,14 +2599,14 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_7(ptr %0) #0 { +define internal { ptr, i64 } @__insert_6(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.133, i64 8 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal void @print__ct_s356f7a97ffec319e__pack_f32(ptr %0, float %1) #0 { +define internal void @print__ct_sad2d86d80b81462__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.134, i64 8 }, ptr %alloca, align 8 @@ -2497,14 +2653,14 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_8(ptr %0) #0 { +define internal { ptr, i64 } @__insert_7(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.136, i64 8 }) ret { ptr, i64 } %call } ; Function Attrs: nounwind -define internal void @print__ct_sc1a70412aecae073__pack_f32(ptr %0, float %1) #0 { +define internal void @print__ct_s356f7a97ffec319e__pack_f32(ptr %0, float %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } { ptr @str.137, i64 8 }, ptr %alloca, align 8 @@ -2551,46 +2707,100 @@ entry: } ; Function Attrs: nounwind -define internal { ptr, i64 } @__insert_9(ptr %0) #0 { +define internal { ptr, i64 } @__insert_8(ptr %0) #0 { entry: %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.139, i64 8 }) ret { ptr, i64 } %call } +; Function Attrs: nounwind +define internal void @print__ct_sc1a70412aecae073__pack_f32(ptr %0, float %1) #0 { +entry: + %alloca = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.140, i64 8 }, ptr %alloca, align 8 + %allocaN = alloca float, align 4 + store float %1, ptr %allocaN, align 4 + %allocaN = alloca [1 x { i64, i64 }], align 8 + %load = load float, ptr %allocaN, align 4 + %fNi32 = bitcast float %load to i32 + %zN = zext i32 %fNi32 to i64 + %ba.val = insertvalue { i64, i64 } { i64 10, i64 undef }, i64 %zN, 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.141, 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 5) + %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 float, ptr %allocaN, align 4 + %fNi3212 = bitcast float %loadN to i32 + %zN = zext i32 %fNi3212 to i64 + %ba.val14 = insertvalue { i64, i64 } { i64 10, i64 undef }, i64 %zN, 1 + %callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val14) + %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 7, 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_9(ptr %0) #0 { +entry: + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.142, i64 8 }) + 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 store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.140, i64 15 }, { ptr, i64 } { ptr @str.141, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.143, i64 15 }, { ptr, i64 } { ptr @str.144, 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.97 + br label %while.hdr.121 -while.hdr.97: ; preds = %fv.merge, %entry +while.hdr.121: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.98, label %while.exit.99 + br i1 %icmp, label %while.body.122, label %while.exit.123 -while.body.98: ; preds = %while.hdr.97 +while.body.122: ; preds = %while.hdr.121 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.100, label %if.merge.101 + br i1 %icmpN, label %if.then.124, label %if.merge.125 -while.exit.99: ; preds = %while.hdr.97 +while.exit.123: ; preds = %while.hdr.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.145, i64 1 }) ret { ptr, i64 } %callN -if.then.100: ; preds = %while.body.98 +if.then.124: ; preds = %while.body.122 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.101 + br label %if.merge.125 -if.merge.101: ; preds = %if.then.100, %while.body.98 +if.merge.125: ; preds = %if.then.124, %while.body.122 %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 @@ -2598,7 +2808,7 @@ if.merge.101: ; preds = %if.then.100, %while %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.147, i64 2 }) + %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, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -2618,12 +2828,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.97 + br label %while.hdr.121 -fv.default: ; preds = %if.merge.101 +fv.default: ; preds = %if.merge.125 br label %fv.merge -fv.case: ; preds = %if.merge.101 +fv.case: ; preds = %if.merge.125 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2631,19 +2841,19 @@ fv.case: ; preds = %if.merge.101 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.101 +fv.case17: ; preds = %if.merge.125 %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.101 +fv.case20: ; preds = %if.merge.125 %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.101 +fv.case24: ; preds = %if.merge.125 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2657,43 +2867,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.148, i64 9 }, { ptr, i64 } { ptr @str.149, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.151, i64 9 }, { 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.102 + br label %while.hdr.126 -while.hdr.102: ; preds = %fv.merge, %entry +while.hdr.126: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.103, label %while.exit.104 + br i1 %icmp, label %while.body.127, label %while.exit.128 -while.body.103: ; preds = %while.hdr.102 +while.body.127: ; preds = %while.hdr.126 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.105, label %if.merge.106 + br i1 %icmpN, label %if.then.129, label %if.merge.130 -while.exit.104: ; preds = %while.hdr.102 +while.exit.128: ; preds = %while.hdr.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 1 }) ret { ptr, i64 } %callN -if.then.105: ; preds = %while.body.103 +if.then.129: ; preds = %while.body.127 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 2 }) + %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.106 + br label %if.merge.130 -if.merge.106: ; preds = %if.then.105, %while.body.103 +if.merge.130: ; preds = %if.then.129, %while.body.127 %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.155, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.158, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, 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 @@ -2712,24 +2922,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.102 + br label %while.hdr.126 -fv.default: ; preds = %if.merge.106 +fv.default: ; preds = %if.merge.130 br label %fv.merge -fv.case: ; preds = %if.merge.106 +fv.case: ; preds = %if.merge.130 %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.106 +fv.case17: ; preds = %if.merge.130 %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.106 +fv.case21: ; preds = %if.merge.130 %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 @@ -2741,43 +2951,43 @@ 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.157, i64 10 }, { ptr, i64 } { ptr @str.158, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 10 }, { ptr, i64 } { ptr @str.161, 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.107 + br label %while.hdr.131 -while.hdr.107: ; preds = %if.merge.111, %entry +while.hdr.131: ; preds = %if.merge.135, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.108, label %while.exit.109 + br i1 %icmp, label %while.body.132, label %while.exit.133 -while.body.108: ; preds = %while.hdr.107 +while.body.132: ; preds = %while.hdr.131 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.110, label %if.merge.111 + br i1 %icmpN, label %if.then.134, label %if.merge.135 -while.exit.109: ; preds = %while.hdr.107 +while.exit.133: ; preds = %while.hdr.131 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 1 }) ret { ptr, i64 } %callN -if.then.110: ; preds = %while.body.108 +if.then.134: ; preds = %while.body.132 %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 }) + %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 - br label %if.merge.111 + br label %if.merge.135 -if.merge.111: ; preds = %if.then.110, %while.body.108 +if.merge.135: ; preds = %if.then.134, %while.body.132 %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.161, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.164, 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.162, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2788,7 +2998,7 @@ if.merge.111: ; preds = %if.then.110, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.107 + br label %while.hdr.131 } ; Function Attrs: nounwind @@ -2796,43 +3006,43 @@ 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.163, i64 3 }, { ptr, i64 } { ptr @str.164, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 3 }, { ptr, i64 } { ptr @str.167, 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.112 + br label %while.hdr.136 -while.hdr.112: ; preds = %fv.merge, %entry +while.hdr.136: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.113, label %while.exit.114 + br i1 %icmp, label %while.body.137, label %while.exit.138 -while.body.113: ; preds = %while.hdr.112 +while.body.137: ; preds = %while.hdr.136 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.115, label %if.merge.116 + br i1 %icmpN, label %if.then.139, label %if.merge.140 -while.exit.114: ; preds = %while.hdr.112 +while.exit.138: ; preds = %while.hdr.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 1 }) ret { ptr, i64 } %callN -if.then.115: ; preds = %while.body.113 +if.then.139: ; preds = %while.body.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 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.116 + br label %if.merge.140 -if.merge.116: ; preds = %if.then.115, %while.body.113 +if.merge.140: ; preds = %if.then.139, %while.body.137 %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.168, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.171, 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.169, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, 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 @@ -2849,12 +3059,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.112 + br label %while.hdr.136 -fv.default: ; preds = %if.merge.116 +fv.default: ; preds = %if.merge.140 br label %fv.merge -fv.case: ; preds = %if.merge.116 +fv.case: ; preds = %if.merge.140 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2865,43 +3075,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.170, i64 10 }, { ptr, i64 } { ptr @str.171, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.173, i64 10 }, { ptr, i64 } { ptr @str.174, 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 + br label %while.hdr.141 -while.hdr.117: ; preds = %fv.merge, %entry +while.hdr.141: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.118, label %while.exit.119 + br i1 %icmp, label %while.body.142, label %while.exit.143 -while.body.118: ; preds = %while.hdr.117 +while.body.142: ; preds = %while.hdr.141 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.120, label %if.merge.121 + br i1 %icmpN, label %if.then.144, label %if.merge.145 -while.exit.119: ; preds = %while.hdr.117 +while.exit.143: ; preds = %while.hdr.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) ret { ptr, i64 } %callN -if.then.120: ; preds = %while.body.118 +if.then.144: ; preds = %while.body.142 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.121 + br label %if.merge.145 -if.merge.121: ; preds = %if.then.120, %while.body.118 +if.merge.145: ; preds = %if.then.144, %while.body.142 %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.176, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 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.177, i64 2 }) + %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 %alloca, align 8 @@ -2919,18 +3129,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.117 + br label %while.hdr.141 -fv.default: ; preds = %if.merge.121 +fv.default: ; preds = %if.merge.145 br label %fv.merge -fv.case: ; preds = %if.merge.121 +fv.case: ; preds = %if.merge.145 %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.121 +fv.case17: ; preds = %if.merge.145 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2941,43 +3151,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.178, i64 5 }, { ptr, i64 } { ptr @str.179, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.181, i64 5 }, { 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.122 + br label %while.hdr.146 -while.hdr.122: ; preds = %fv.merge, %entry +while.hdr.146: ; 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 + br i1 %icmp, label %while.body.147, label %while.exit.148 -while.body.123: ; preds = %while.hdr.122 +while.body.147: ; preds = %while.hdr.146 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.125, label %if.merge.126 + br i1 %icmpN, label %if.then.149, label %if.merge.150 -while.exit.124: ; preds = %while.hdr.122 +while.exit.148: ; preds = %while.hdr.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.180, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 1 }) ret { ptr, i64 } %callN -if.then.125: ; preds = %while.body.123 +if.then.149: ; preds = %while.body.147 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 2 }) + %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.126 + br label %if.merge.150 -if.merge.126: ; preds = %if.then.125, %while.body.123 +if.merge.150: ; preds = %if.then.149, %while.body.147 %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.185, i64 0, i64 %loadN + %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.186, i64 2 }) + %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, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2996,23 +3206,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.122 + br label %while.hdr.146 -fv.default: ; preds = %if.merge.126 +fv.default: ; preds = %if.merge.150 br label %fv.merge -fv.case: ; preds = %if.merge.126 +fv.case: ; preds = %if.merge.150 %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.126 +fv.case17: ; preds = %if.merge.150 %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.126 +fv.case20: ; preds = %if.merge.150 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -3026,43 +3236,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.187, i64 8 }, { ptr, i64 } { ptr @str.188, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 8 }, { 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.127 + br label %while.hdr.151 -while.hdr.127: ; preds = %fv.merge, %entry +while.hdr.151: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.128, label %while.exit.129 + br i1 %icmp, label %while.body.152, label %while.exit.153 -while.body.128: ; preds = %while.hdr.127 +while.body.152: ; preds = %while.hdr.151 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.130, label %if.merge.131 + br i1 %icmpN, label %if.then.154, label %if.merge.155 -while.exit.129: ; preds = %while.hdr.127 +while.exit.153: ; preds = %while.hdr.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %callN -if.then.130: ; preds = %while.body.128 +if.then.154: ; preds = %while.body.152 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + %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.131 + br label %if.merge.155 -if.merge.131: ; preds = %if.then.130, %while.body.128 +if.merge.155: ; preds = %if.then.154, %while.body.152 %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.194, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.197, 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.195, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, 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 @@ -3081,23 +3291,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.127 + br label %while.hdr.151 -fv.default: ; preds = %if.merge.131 +fv.default: ; preds = %if.merge.155 br label %fv.merge -fv.case: ; preds = %if.merge.131 +fv.case: ; preds = %if.merge.155 %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.131 +fv.case17: ; preds = %if.merge.155 %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.131 +fv.case20: ; preds = %if.merge.155 %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 @@ -3108,43 +3318,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.196, i64 17 }, { ptr, i64 } { ptr @str.197, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 17 }, { ptr, i64 } { ptr @str.200, 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 + br label %while.hdr.156 -while.hdr.132: ; preds = %fv.merge, %entry +while.hdr.156: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.133, label %while.exit.134 + br i1 %icmp, label %while.body.157, label %while.exit.158 -while.body.133: ; preds = %while.hdr.132 +while.body.157: ; preds = %while.hdr.156 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.135, label %if.merge.136 + br i1 %icmpN, label %if.then.159, label %if.merge.160 -while.exit.134: ; preds = %while.hdr.132 +while.exit.158: ; preds = %while.hdr.156 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) ret { ptr, i64 } %callN -if.then.135: ; preds = %while.body.133 +if.then.159: ; preds = %while.body.157 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.136 + br label %if.merge.160 -if.merge.136: ; preds = %if.then.135, %while.body.133 +if.merge.160: ; preds = %if.then.159, %while.body.157 %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.204, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.207, 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.205, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, 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 @@ -3164,12 +3374,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.132 + br label %while.hdr.156 -fv.default: ; preds = %if.merge.136 +fv.default: ; preds = %if.merge.160 br label %fv.merge -fv.case: ; preds = %if.merge.136 +fv.case: ; preds = %if.merge.160 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3177,17 +3387,17 @@ fv.case: ; preds = %if.merge.136 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.136 +fv.case17: ; preds = %if.merge.160 %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.136 +fv.case20: ; preds = %if.merge.160 %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.136 +fv.case23: ; preds = %if.merge.160 %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 @@ -3198,43 +3408,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.206, i64 7 }, { ptr, i64 } { ptr @str.207, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 7 }, { ptr, i64 } { ptr @str.210, 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 + br label %while.hdr.161 -while.hdr.137: ; preds = %fv.merge, %entry +while.hdr.161: ; 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 + br i1 %icmp, label %while.body.162, label %while.exit.163 -while.body.138: ; preds = %while.hdr.137 +while.body.162: ; preds = %while.hdr.161 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.140, label %if.merge.141 + br i1 %icmpN, label %if.then.164, label %if.merge.165 -while.exit.139: ; preds = %while.hdr.137 +while.exit.163: ; preds = %while.hdr.161 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.211, i64 1 }) ret { ptr, i64 } %callN -if.then.140: ; preds = %while.body.138 +if.then.164: ; preds = %while.body.162 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.209, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.212, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.141 + br label %if.merge.165 -if.merge.141: ; preds = %if.then.140, %while.body.138 +if.merge.165: ; preds = %if.then.164, %while.body.162 %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.212, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.215, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, 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 @@ -3252,12 +3462,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.137 + br label %while.hdr.161 -fv.default: ; preds = %if.merge.141 +fv.default: ; preds = %if.merge.165 br label %fv.merge -fv.case: ; preds = %if.merge.141 +fv.case: ; preds = %if.merge.165 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3265,7 +3475,7 @@ fv.case: ; preds = %if.merge.141 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.141 +fv.case17: ; preds = %if.merge.165 %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 @@ -3277,43 +3487,43 @@ define internal { ptr, i64 } @struct_to_string__ProposedSize(ptr %0, { { float, entry: %alloca = alloca { { float, i1 }, { float, i1 } }, align 8 store { { float, i1 }, { float, i1 } } %1, ptr %alloca, align 4 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 12 }, { ptr, i64 } { ptr @str.215, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 12 }, { ptr, i64 } { ptr @str.218, 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 + br label %while.hdr.166 -while.hdr.142: ; preds = %fv.merge, %entry +while.hdr.166: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.143, label %while.exit.144 + br i1 %icmp, label %while.body.167, label %while.exit.168 -while.body.143: ; preds = %while.hdr.142 +while.body.167: ; preds = %while.hdr.166 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.145, label %if.merge.146 + br i1 %icmpN, label %if.then.169, label %if.merge.170 -while.exit.144: ; preds = %while.hdr.142 +while.exit.168: ; preds = %while.hdr.166 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.219, i64 1 }) ret { ptr, i64 } %callN -if.then.145: ; preds = %while.body.143 +if.then.169: ; preds = %while.body.167 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.220, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.146 + br label %if.merge.170 -if.merge.146: ; preds = %if.then.145, %while.body.143 +if.merge.170: ; preds = %if.then.169, %while.body.167 %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.220, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.223, 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.221, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { float, i1 }, { float, i1 } }, ptr %alloca, align 4 @@ -3331,25 +3541,25 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.142 + br label %while.hdr.166 -fv.default: ; preds = %if.merge.146 +fv.default: ; preds = %if.merge.170 br label %fv.merge -fv.case: ; preds = %if.merge.146 +fv.case: ; preds = %if.merge.170 %fv.field = extractvalue { { float, i1 }, { float, i1 } } %loadN, 0 %ba.tmp = alloca { float, i1 }, align 8 store { float, i1 } %fv.field, ptr %ba.tmp, align 4 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val = insertvalue { i64, i64 } { i64 36, i64 undef }, i64 %ba.p2i, 1 + %fv.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.146 +fv.case17: ; preds = %if.merge.170 %fv.field18 = extractvalue { { float, i1 }, { float, i1 } } %loadN, 1 %ba.tmp19 = alloca { float, i1 }, align 8 store { float, i1 } %fv.field18, ptr %ba.tmp19, align 4 %ba.p2i20 = ptrtoint ptr %ba.tmp19 to i64 - %fv.val21 = insertvalue { i64, i64 } { i64 36, i64 undef }, i64 %ba.p2i20, 1 + %fv.val21 = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i20, 1 br label %fv.merge } @@ -3358,43 +3568,43 @@ define internal { ptr, i64 } @struct_to_string__Sizable(ptr %0, { ptr, ptr } %1) entry: %alloca = alloca { ptr, ptr }, align 8 store { ptr, ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 7 }, { ptr, i64 } { ptr @str.223, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 7 }, { ptr, i64 } { ptr @str.226, 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 + br label %while.hdr.171 -while.hdr.147: ; preds = %fv.merge, %entry +while.hdr.171: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.148, label %while.exit.149 + br i1 %icmp, label %while.body.172, label %while.exit.173 -while.body.148: ; preds = %while.hdr.147 +while.body.172: ; preds = %while.hdr.171 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.150, label %if.merge.151 + br i1 %icmpN, label %if.then.174, label %if.merge.175 -while.exit.149: ; preds = %while.hdr.147 +while.exit.173: ; preds = %while.hdr.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.224, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 1 }) ret { ptr, i64 } %callN -if.then.150: ; preds = %while.body.148 +if.then.174: ; preds = %while.body.172 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.151 + br label %if.merge.175 -if.merge.151: ; preds = %if.then.150, %while.body.148 +if.merge.175: ; preds = %if.then.174, %while.body.172 %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.228, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.231, 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.229, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.232, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr }, ptr %alloca, align 8 @@ -3412,18 +3622,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.147 + br label %while.hdr.171 -fv.default: ; preds = %if.merge.151 +fv.default: ; preds = %if.merge.175 br label %fv.merge -fv.case: ; preds = %if.merge.151 +fv.case: ; preds = %if.merge.175 %fv.field = extractvalue { 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.151 +fv.case17: ; preds = %if.merge.175 %fv.field18 = extractvalue { ptr, ptr } %loadN, 1 %pNi19 = ptrtoint ptr %fv.field18 to i64 %fv.val20 = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi19, 1 @@ -3435,43 +3645,43 @@ define internal { ptr, i64 } @struct_to_string____Sizable__Vtable(ptr %0, { ptr entry: %alloca = alloca { ptr }, align 8 store { ptr } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 17 }, { ptr, i64 } { ptr @str.231, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 17 }, { ptr, i64 } { ptr @str.234, 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 + br label %while.hdr.176 -while.hdr.152: ; preds = %fv.merge, %entry +while.hdr.176: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.153, label %while.exit.154 + br i1 %icmp, label %while.body.177, label %while.exit.178 -while.body.153: ; preds = %while.hdr.152 +while.body.177: ; preds = %while.hdr.176 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.155, label %if.merge.156 + br i1 %icmpN, label %if.then.179, label %if.merge.180 -while.exit.154: ; preds = %while.hdr.152 +while.exit.178: ; preds = %while.hdr.176 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.232, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.235, i64 1 }) ret { ptr, i64 } %callN -if.then.155: ; preds = %while.body.153 +if.then.179: ; preds = %while.body.177 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.233, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.156 + br label %if.merge.180 -if.merge.156: ; preds = %if.then.155, %while.body.153 +if.merge.180: ; preds = %if.then.179, %while.body.177 %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.235, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.238, 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.236, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.239, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr }, ptr %alloca, align 8 @@ -3488,12 +3698,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.152 + br label %while.hdr.176 -fv.default: ; preds = %if.merge.156 +fv.default: ; preds = %if.merge.180 br label %fv.merge -fv.case: ; preds = %if.merge.156 +fv.case: ; preds = %if.merge.180 %fv.field = extractvalue { ptr } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 18, i64 undef }, i64 %pNi, 1 @@ -3505,43 +3715,43 @@ define internal { ptr, i64 } @struct_to_string__Widget(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.237, i64 6 }, { ptr, i64 } { ptr @str.238, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 6 }, { ptr, i64 } { ptr @str.241, 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 + br label %while.hdr.181 -while.hdr.157: ; preds = %if.merge.161, %entry +while.hdr.181: ; preds = %if.merge.185, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.158, label %while.exit.159 + br i1 %icmp, label %while.body.182, label %while.exit.183 -while.body.158: ; preds = %while.hdr.157 +while.body.182: ; preds = %while.hdr.181 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.160, label %if.merge.161 + br i1 %icmpN, label %if.then.184, label %if.merge.185 -while.exit.159: ; preds = %while.hdr.157 +while.exit.183: ; preds = %while.hdr.181 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.239, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.242, i64 1 }) ret { ptr, i64 } %callN -if.then.160: ; preds = %while.body.158 +if.then.184: ; preds = %while.body.182 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.240, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.243, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.161 + br label %if.merge.185 -if.merge.161: ; preds = %if.then.160, %while.body.158 +if.merge.185: ; preds = %if.then.184, %while.body.182 %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.241, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.244, 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.242, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.245, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -3552,7 +3762,57 @@ if.merge.161: ; preds = %if.then.160, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.157 + br label %while.hdr.181 +} + +; 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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.246, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.190 + +while.hdr.190: ; preds = %if.merge.194, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.191, label %while.exit.192 + +while.body.191: ; preds = %while.hdr.190 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.193, label %if.merge.194 + +while.exit.192: ; preds = %while.hdr.190 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.247, i64 1 }) + ret { ptr, i64 } %call + +if.then.193: ; preds = %while.body.191 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.194 + +if.merge.194: ; preds = %if.then.193, %while.body.191 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.190 } ; Function Attrs: nounwind @@ -3561,33 +3821,33 @@ entry: %alloca = alloca [1 x { 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.243, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.249, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.165 + br label %while.hdr.195 -while.hdr.165: ; preds = %if.merge.169, %entry +while.hdr.195: ; preds = %if.merge.199, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.166, label %while.exit.167 + br i1 %icmp, label %while.body.196, label %while.exit.197 -while.body.166: ; preds = %while.hdr.165 +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.168, label %if.merge.169 + br i1 %icmpN, label %if.then.198, label %if.merge.199 -while.exit.167: ; preds = %while.hdr.165 +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.244, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.250, i64 1 }) ret { ptr, i64 } %call -if.then.168: ; preds = %while.body.166 +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.245, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.169 + br label %if.merge.199 -if.merge.169: ; preds = %if.then.168, %while.body.166 +if.merge.199: ; preds = %if.then.198, %while.body.196 %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 @@ -3605,7 +3865,7 @@ if.merge.169: ; preds = %if.then.168, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.165 + br label %while.hdr.195 } ; Function Attrs: nounwind @@ -3614,35 +3874,35 @@ 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.246, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.252, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.174 + br label %while.hdr.204 -while.hdr.174: ; preds = %if.merge.178, %entry +while.hdr.204: ; preds = %if.merge.208, %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.175, label %while.exit.176 + br i1 %icmp, label %while.body.205, label %while.exit.206 -while.body.175: ; preds = %while.hdr.174 +while.body.205: ; preds = %while.hdr.204 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.177, label %if.merge.178 + br i1 %icmpN, label %if.then.207, label %if.merge.208 -while.exit.176: ; preds = %while.hdr.174 +while.exit.206: ; preds = %while.hdr.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.247, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.253, i64 1 }) ret { ptr, i64 } %call -if.then.177: ; preds = %while.body.175 +if.then.207: ; preds = %while.body.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.254, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.178 + br label %if.merge.208 -if.merge.178: ; preds = %if.then.177, %while.body.175 +if.merge.208: ; preds = %if.then.207, %while.body.205 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3659,7 +3919,7 @@ if.merge.178: ; preds = %if.then.177, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.174 + br label %while.hdr.204 } ; Function Attrs: nounwind @@ -3668,35 +3928,35 @@ 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.249, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.255, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.179 + br label %while.hdr.209 -while.hdr.179: ; preds = %if.merge.183, %entry +while.hdr.209: ; preds = %if.merge.213, %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.180, label %while.exit.181 + br i1 %icmp, label %while.body.210, label %while.exit.211 -while.body.180: ; preds = %while.hdr.179 +while.body.210: ; preds = %while.hdr.209 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.182, label %if.merge.183 + br i1 %icmpN, label %if.then.212, label %if.merge.213 -while.exit.181: ; preds = %while.hdr.179 +while.exit.211: ; preds = %while.hdr.209 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.250, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.256, i64 1 }) ret { ptr, i64 } %call -if.then.182: ; preds = %while.body.180 +if.then.212: ; preds = %while.body.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.257, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.183 + br label %if.merge.213 -if.merge.183: ; preds = %if.then.182, %while.body.180 +if.merge.213: ; preds = %if.then.212, %while.body.210 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3713,95 +3973,11 @@ if.merge.183: ; preds = %if.then.182, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.179 + br label %while.hdr.209 } ; 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.210, label %if.else.211 - -if.then.210: ; preds = %entry - br label %if.merge.212 - -if.else.211: ; 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.254, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.212 - -if.merge.212: ; preds = %if.else.211, %if.then.210 - %bp = phi { ptr, i64 } [ { ptr @str.252, i64 4 }, %if.then.210 ], [ %callN, %if.else.211 ] - 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.234, label %if.else.235 - -if.then.234: ; preds = %entry - br label %if.merge.236 - -if.else.235: ; 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.257, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.236 - -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.255, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] - 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.237, label %if.else.238 - -if.then.237: ; preds = %entry - br label %if.merge.239 - -if.else.238: ; 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.260, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.239 - -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.258, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] - 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 @@ -3819,12 +3995,96 @@ if.then.240: ; preds = %entry if.else.241: ; 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.263, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.262, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.260, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 5 }, { ptr, i64 } %callN) br label %if.merge.242 if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.261, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] + %bp = phi { ptr, i64 } [ { ptr @str.258, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] + 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.256, label %if.else.257 + +if.then.256: ; preds = %entry + br label %if.merge.258 + +if.else.257: ; 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.263, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.262, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.258 + +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.261, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] + 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.259, label %if.else.260 + +if.then.259: ; preds = %entry + br label %if.merge.261 + +if.else.260: ; 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.266, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.265, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.261 + +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.264, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] + 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.262, label %if.else.263 + +if.then.262: ; preds = %entry + br label %if.merge.264 + +if.else.263: ; 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.269, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.264 + +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.267, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } @@ -3839,20 +4099,20 @@ entry: 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.243, label %if.else.244 + br i1 %icmp, label %if.then.265, label %if.else.266 -if.then.243: ; preds = %entry - br label %if.merge.245 +if.then.265: ; preds = %entry + br label %if.merge.267 -if.else.244: ; preds = %entry +if.else.266: ; 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.266, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.265, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.245 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.272, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.267 -if.merge.245: ; preds = %if.else.244, %if.then.243 - %bp = phi { ptr, i64 } [ { ptr @str.264, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] +if.merge.267: ; preds = %if.else.266, %if.then.265 + %bp = phi { ptr, i64 } [ { ptr @str.270, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] ret { ptr, i64 } %bp } @@ -3866,20 +4126,20 @@ entry: 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.246, label %if.else.247 + br i1 %icmp, label %if.then.268, label %if.else.269 -if.then.246: ; preds = %entry - br label %if.merge.248 +if.then.268: ; preds = %entry + br label %if.merge.270 -if.else.247: ; preds = %entry +if.else.269: ; 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.269, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.248 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.275, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.274, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.270 -if.merge.248: ; preds = %if.else.247, %if.then.246 - %bp = phi { ptr, i64 } [ { ptr @str.267, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] +if.merge.270: ; preds = %if.else.269, %if.then.268 + %bp = phi { ptr, i64 } [ { ptr @str.273, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] ret { ptr, i64 } %bp } @@ -3894,20 +4154,20 @@ entry: 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.249, label %if.else.250 + br i1 %icmp, label %if.then.271, label %if.else.272 -if.then.249: ; preds = %entry - br label %if.merge.251 +if.then.271: ; preds = %entry + br label %if.merge.273 -if.else.250: ; preds = %entry +if.else.272: ; 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.272, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.251 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.278, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.277, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.273 -if.merge.251: ; preds = %if.else.250, %if.then.249 - %bp = phi { ptr, i64 } [ { ptr @str.270, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] +if.merge.273: ; preds = %if.else.272, %if.then.271 + %bp = phi { ptr, i64 } [ { ptr @str.276, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] ret { ptr, i64 } %bp } @@ -3922,20 +4182,20 @@ entry: 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.252, label %if.else.253 + br i1 %icmp, label %if.then.274, label %if.else.275 -if.then.252: ; preds = %entry - br label %if.merge.254 +if.then.274: ; preds = %entry + br label %if.merge.276 -if.else.253: ; preds = %entry +if.else.275: ; 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.275, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.274, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.254 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.281, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.276 -if.merge.254: ; preds = %if.else.253, %if.then.252 - %bp = phi { ptr, i64 } [ { ptr @str.273, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] +if.merge.276: ; preds = %if.else.275, %if.then.274 + %bp = phi { ptr, i64 } [ { ptr @str.279, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] ret { ptr, i64 } %bp } @@ -3950,20 +4210,20 @@ entry: 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.255, label %if.else.256 + br i1 %icmp, label %if.then.277, label %if.else.278 -if.then.255: ; preds = %entry - br label %if.merge.257 +if.then.277: ; preds = %entry + br label %if.merge.279 -if.else.256: ; preds = %entry +if.else.278: ; 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.278, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.277, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.257 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.284, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.279 -if.merge.257: ; preds = %if.else.256, %if.then.255 - %bp = phi { ptr, i64 } [ { ptr @str.276, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] +if.merge.279: ; preds = %if.else.278, %if.then.277 + %bp = phi { ptr, i64 } [ { ptr @str.282, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] ret { ptr, i64 } %bp } @@ -3978,20 +4238,20 @@ entry: 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.258, label %if.else.259 + br i1 %icmp, label %if.then.280, label %if.else.281 -if.then.258: ; preds = %entry - br label %if.merge.260 +if.then.280: ; preds = %entry + br label %if.merge.282 -if.else.259: ; preds = %entry +if.else.281: ; 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.281, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.260 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.287, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.282 -if.merge.260: ; preds = %if.else.259, %if.then.258 - %bp = phi { ptr, i64 } [ { ptr @str.279, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] +if.merge.282: ; preds = %if.else.281, %if.then.280 + %bp = phi { ptr, i64 } [ { ptr @str.285, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] ret { ptr, i64 } %bp } @@ -4006,20 +4266,20 @@ entry: 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.261, label %if.else.262 + br i1 %icmp, label %if.then.283, label %if.else.284 -if.then.261: ; preds = %entry - br label %if.merge.263 +if.then.283: ; preds = %entry + br label %if.merge.285 -if.else.262: ; preds = %entry +if.else.284: ; 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.284, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.263 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.290, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.289, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.285 -if.merge.263: ; preds = %if.else.262, %if.then.261 - %bp = phi { ptr, i64 } [ { ptr @str.282, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] +if.merge.285: ; preds = %if.else.284, %if.then.283 + %bp = phi { ptr, i64 } [ { ptr @str.288, i64 4 }, %if.then.283 ], [ %callN, %if.else.284 ] ret { ptr, i64 } %bp } @@ -4034,20 +4294,20 @@ entry: 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 + br i1 %icmp, label %if.then.286, label %if.else.287 -if.then.264: ; preds = %entry - br label %if.merge.266 +if.then.286: ; preds = %entry + br label %if.merge.288 -if.else.265: ; preds = %entry +if.else.287: ; 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.287, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.266 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.293, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.292, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.288 -if.merge.266: ; preds = %if.else.265, %if.then.264 - %bp = phi { ptr, i64 } [ { ptr @str.285, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] +if.merge.288: ; preds = %if.else.287, %if.then.286 + %bp = phi { ptr, i64 } [ { ptr @str.291, i64 4 }, %if.then.286 ], [ %callN, %if.else.287 ] ret { ptr, i64 } %bp } @@ -4062,20 +4322,20 @@ entry: 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 + br i1 %icmp, label %if.then.289, label %if.else.290 -if.then.267: ; preds = %entry - br label %if.merge.269 +if.then.289: ; preds = %entry + br label %if.merge.291 -if.else.268: ; preds = %entry +if.else.290: ; 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.290, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.289, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.269 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.296, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.295, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.291 -if.merge.269: ; preds = %if.else.268, %if.then.267 - %bp = phi { ptr, i64 } [ { ptr @str.288, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] +if.merge.291: ; preds = %if.else.290, %if.then.289 + %bp = phi { ptr, i64 } [ { ptr @str.294, i64 4 }, %if.then.289 ], [ %callN, %if.else.290 ] ret { ptr, i64 } %bp } @@ -4090,20 +4350,20 @@ entry: 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 + br i1 %icmp, label %if.then.292, label %if.else.293 -if.then.270: ; preds = %entry - br label %if.merge.272 +if.then.292: ; preds = %entry + br label %if.merge.294 -if.else.271: ; preds = %entry +if.else.293: ; 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.293, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.292, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.272 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.299, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.298, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.294 -if.merge.272: ; preds = %if.else.271, %if.then.270 - %bp = phi { ptr, i64 } [ { ptr @str.291, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ] +if.merge.294: ; preds = %if.else.293, %if.then.292 + %bp = phi { ptr, i64 } [ { ptr @str.297, i64 4 }, %if.then.292 ], [ %callN, %if.else.293 ] ret { ptr, i64 } %bp } @@ -4118,20 +4378,20 @@ entry: 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 + br i1 %icmp, label %if.then.295, label %if.else.296 -if.then.273: ; preds = %entry - br label %if.merge.275 +if.then.295: ; preds = %entry + br label %if.merge.297 -if.else.274: ; preds = %entry +if.else.296: ; 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.296, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.295, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.275 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.302, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.297 -if.merge.275: ; preds = %if.else.274, %if.then.273 - %bp = phi { ptr, i64 } [ { ptr @str.294, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ] +if.merge.297: ; preds = %if.else.296, %if.then.295 + %bp = phi { ptr, i64 } [ { ptr @str.300, i64 4 }, %if.then.295 ], [ %callN, %if.else.296 ] ret { ptr, i64 } %bp } @@ -4146,20 +4406,20 @@ entry: 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.276, label %if.else.277 + br i1 %icmp, label %if.then.298, label %if.else.299 -if.then.276: ; preds = %entry - br label %if.merge.278 +if.then.298: ; preds = %entry + br label %if.merge.300 -if.else.277: ; preds = %entry +if.else.299: ; 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.299, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.298, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.278 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.305, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.300 -if.merge.278: ; preds = %if.else.277, %if.then.276 - %bp = phi { ptr, i64 } [ { ptr @str.297, i64 4 }, %if.then.276 ], [ %callN, %if.else.277 ] +if.merge.300: ; preds = %if.else.299, %if.then.298 + %bp = phi { ptr, i64 } [ { ptr @str.303, i64 4 }, %if.then.298 ], [ %callN, %if.else.299 ] ret { ptr, i64 } %bp } @@ -4174,20 +4434,20 @@ entry: 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 + br i1 %icmp, label %if.then.301, label %if.else.302 -if.then.279: ; preds = %entry - br label %if.merge.281 +if.then.301: ; preds = %entry + br label %if.merge.303 -if.else.280: ; preds = %entry +if.else.302: ; 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.302, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.281 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.303 -if.merge.281: ; preds = %if.else.280, %if.then.279 - %bp = phi { ptr, i64 } [ { ptr @str.300, i64 4 }, %if.then.279 ], [ %callN, %if.else.280 ] +if.merge.303: ; preds = %if.else.302, %if.then.301 + %bp = phi { ptr, i64 } [ { ptr @str.306, i64 4 }, %if.then.301 ], [ %callN, %if.else.302 ] ret { ptr, i64 } %bp } @@ -4202,20 +4462,20 @@ entry: 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 + br i1 %icmp, label %if.then.304, label %if.else.305 -if.then.282: ; preds = %entry - br label %if.merge.284 +if.then.304: ; preds = %entry + br label %if.merge.306 -if.else.283: ; preds = %entry +if.else.305: ; 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.305, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 13 }, { ptr, i64 } %callN) - br label %if.merge.284 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.311, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 13 }, { ptr, i64 } %callN) + br label %if.merge.306 -if.merge.284: ; preds = %if.else.283, %if.then.282 - %bp = phi { ptr, i64 } [ { ptr @str.303, i64 4 }, %if.then.282 ], [ %callN, %if.else.283 ] +if.merge.306: ; preds = %if.else.305, %if.then.304 + %bp = phi { ptr, i64 } [ { ptr @str.309, i64 4 }, %if.then.304 ], [ %callN, %if.else.305 ] ret { ptr, i64 } %bp } @@ -4230,20 +4490,20 @@ entry: 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 + br i1 %icmp, label %if.then.307, label %if.else.308 -if.then.285: ; preds = %entry - br label %if.merge.287 +if.then.307: ; preds = %entry + br label %if.merge.309 -if.else.286: ; preds = %entry +if.else.308: ; 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.308, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.287 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.314, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.313, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.309 -if.merge.287: ; preds = %if.else.286, %if.then.285 - %bp = phi { ptr, i64 } [ { ptr @str.306, i64 4 }, %if.then.285 ], [ %callN, %if.else.286 ] +if.merge.309: ; preds = %if.else.308, %if.then.307 + %bp = phi { ptr, i64 } [ { ptr @str.312, i64 4 }, %if.then.307 ], [ %callN, %if.else.308 ] ret { ptr, i64 } %bp } @@ -4258,20 +4518,20 @@ entry: 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 + br i1 %icmp, label %if.then.310, label %if.else.311 -if.then.288: ; preds = %entry - br label %if.merge.290 +if.then.310: ; preds = %entry + br label %if.merge.312 -if.else.289: ; preds = %entry +if.else.311: ; 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.311, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.290 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.317, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.316, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.312 -if.merge.290: ; preds = %if.else.289, %if.then.288 - %bp = phi { ptr, i64 } [ { ptr @str.309, i64 4 }, %if.then.288 ], [ %callN, %if.else.289 ] +if.merge.312: ; preds = %if.else.311, %if.then.310 + %bp = phi { ptr, i64 } [ { ptr @str.315, i64 4 }, %if.then.310 ], [ %callN, %if.else.311 ] ret { ptr, i64 } %bp } @@ -4286,20 +4546,20 @@ entry: 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 + br i1 %icmp, label %if.then.313, label %if.else.314 -if.then.291: ; preds = %entry - br label %if.merge.293 +if.then.313: ; preds = %entry + br label %if.merge.315 -if.else.292: ; preds = %entry +if.else.314: ; 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.314, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.313, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.293 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.320, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.319, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.315 -if.merge.293: ; preds = %if.else.292, %if.then.291 - %bp = phi { ptr, i64 } [ { ptr @str.312, i64 4 }, %if.then.291 ], [ %callN, %if.else.292 ] +if.merge.315: ; preds = %if.else.314, %if.then.313 + %bp = phi { ptr, i64 } [ { ptr @str.318, i64 4 }, %if.then.313 ], [ %callN, %if.else.314 ] ret { ptr, i64 } %bp } @@ -4314,20 +4574,20 @@ entry: 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 + br i1 %icmp, label %if.then.316, label %if.else.317 -if.then.294: ; preds = %entry - br label %if.merge.296 +if.then.316: ; preds = %entry + br label %if.merge.318 -if.else.295: ; preds = %entry +if.else.317: ; 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.317, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.316, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.296 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.323, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.322, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.318 -if.merge.296: ; preds = %if.else.295, %if.then.294 - %bp = phi { ptr, i64 } [ { ptr @str.315, i64 4 }, %if.then.294 ], [ %callN, %if.else.295 ] +if.merge.318: ; preds = %if.else.317, %if.then.316 + %bp = phi { ptr, i64 } [ { ptr @str.321, i64 4 }, %if.then.316 ], [ %callN, %if.else.317 ] ret { ptr, i64 } %bp } @@ -4342,20 +4602,20 @@ entry: 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 + br i1 %icmp, label %if.then.319, label %if.else.320 -if.then.297: ; preds = %entry - br label %if.merge.299 +if.then.319: ; preds = %entry + br label %if.merge.321 -if.else.298: ; preds = %entry +if.else.320: ; 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.320, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.319, i64 8 }, { ptr, i64 } %callN) - br label %if.merge.299 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.326, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.325, i64 8 }, { ptr, i64 } %callN) + br label %if.merge.321 -if.merge.299: ; preds = %if.else.298, %if.then.297 - %bp = phi { ptr, i64 } [ { ptr @str.318, i64 4 }, %if.then.297 ], [ %callN, %if.else.298 ] +if.merge.321: ; preds = %if.else.320, %if.then.319 + %bp = phi { ptr, i64 } [ { ptr @str.324, i64 4 }, %if.then.319 ], [ %callN, %if.else.320 ] ret { ptr, i64 } %bp } @@ -4370,20 +4630,20 @@ entry: 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 + br i1 %icmp, label %if.then.322, label %if.else.323 -if.then.300: ; preds = %entry - br label %if.merge.302 +if.then.322: ; preds = %entry + br label %if.merge.324 -if.else.301: ; preds = %entry +if.else.323: ; 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.323, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.322, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.302 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.329, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.328, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.324 -if.merge.302: ; preds = %if.else.301, %if.then.300 - %bp = phi { ptr, i64 } [ { ptr @str.321, i64 4 }, %if.then.300 ], [ %callN, %if.else.301 ] +if.merge.324: ; preds = %if.else.323, %if.then.322 + %bp = phi { ptr, i64 } [ { ptr @str.327, i64 4 }, %if.then.322 ], [ %callN, %if.else.323 ] ret { ptr, i64 } %bp } @@ -4395,12 +4655,12 @@ entry: %load = load { float, i1 }, ptr %alloca, align 4 %oh.has = extractvalue { float, i1 } %load, 1 %lnot = xor i1 %oh.has, true - br i1 %lnot, label %if.then.306, label %if.merge.307 + br i1 %lnot, label %if.then.328, label %if.merge.329 -if.then.306: ; preds = %entry - ret { ptr, i64 } { ptr @str.324, i64 4 } +if.then.328: ; preds = %entry + ret { ptr, i64 } { ptr @str.330, i64 4 } -if.merge.307: ; preds = %entry +if.merge.329: ; preds = %entry %loadN = load { float, i1 }, ptr %alloca, align 4 %ou.val = extractvalue { float, i1 } %loadN, 0 %fNi32 = bitcast float %ou.val to i32 @@ -4411,5 +4671,3 @@ if.merge.307: ; preds = %entry } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/0904-optionals-any-to-string-optional.ir b/examples/expected/0904-optionals-any-to-string-optional.ir index 5f6fc20..dd84d08 100644 --- a/examples/expected/0904-optionals-any-to-string-optional.ir +++ b/examples/expected/0904-optionals-any-to-string-optional.ir @@ -1,263 +1,270 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [78 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [5 x i8] c"?s64\00" -@tn.str.42 = private constant [8 x i8] c"?string\00" -@tn.str.43 = private constant [6 x i8] c"?bool\00" -@tn.str.44 = private constant [2 x i8] c"S\00" -@tn.str.45 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.46 = private constant [5 x i8] c"*s64\00" -@tn.str.47 = private constant [7 x i8] c"**void\00" -@tn.str.48 = private constant [3 x i8] c"*S\00" -@tn.str.49 = private constant [8 x i8] c"*string\00" -@tn.str.50 = private constant [6 x i8] c"[]Any\00" -@tn.str.51 = private constant [5 x i8] c"*Any\00" -@tn.str.52 = private constant [7 x i8] c"[1]Any\00" -@tn.str.53 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.54 = private constant [7 x i8] c"*[]Any\00" -@tn.str.55 = private constant [4 x i8] c"*u8\00" -@tn.str.56 = private constant [6 x i8] c"*bool\00" -@tn.str.57 = private constant [5 x i8] c"*f64\00" -@tn.str.58 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.59 = private constant [11 x i8] c"*Allocator\00" -@tn.str.60 = private constant [9 x i8] c"*Context\00" -@tn.str.61 = private constant [10 x i8] c"*[]string\00" -@tn.str.62 = private constant [6 x i8] c"**GPA\00" -@tn.str.63 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.64 = private constant [8 x i8] c"**Arena\00" -@tn.str.65 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.66 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.67 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.68 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.69 = private constant [6 x i8] c"**s64\00" -@tn.str.70 = private constant [8 x i8] c"***void\00" -@tn.str.71 = private constant [4 x i8] c"**S\00" -@tn.str.72 = private constant [9 x i8] c"**string\00" -@tn.str.73 = private constant [6 x i8] c"**Any\00" -@tn.str.74 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.75 = private constant [8 x i8] c"**[]Any\00" -@tn.str.76 = private constant [5 x i8] c"**u8\00" -@tn.str.77 = private constant [7 x i8] c"**bool\00" -@tn.str.78 = private constant [6 x i8] c"*?s64\00" -@tn.str.79 = private constant [9 x i8] c"*?string\00" -@tn.str.80 = private constant [7 x i8] c"*?bool\00" -@__sx_type_names = private constant [76 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 4 }, { ptr, i64 } { ptr @tn.str.42, i64 7 }, { ptr, i64 } { ptr @tn.str.43, i64 5 }, { ptr, i64 } { ptr @tn.str.44, i64 1 }, { ptr, i64 } { ptr @tn.str.45, i64 12 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 6 }, { ptr, i64 } { ptr @tn.str.48, i64 2 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 5 }, { ptr, i64 } { ptr @tn.str.51, i64 4 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 3 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 16 }, { ptr, i64 } { ptr @tn.str.59, i64 10 }, { ptr, i64 } { ptr @tn.str.60, i64 8 }, { ptr, i64 } { ptr @tn.str.61, i64 9 }, { ptr, i64 } { ptr @tn.str.62, i64 5 }, { ptr, i64 } { ptr @tn.str.63, i64 12 }, { ptr, i64 } { ptr @tn.str.64, i64 7 }, { ptr, i64 } { ptr @tn.str.65, i64 6 }, { ptr, i64 } { ptr @tn.str.66, i64 10 }, { ptr, i64 } { ptr @tn.str.67, i64 19 }, { ptr, i64 } { ptr @tn.str.68, i64 13 }, { ptr, i64 } { ptr @tn.str.69, i64 5 }, { ptr, i64 } { ptr @tn.str.70, i64 7 }, { ptr, i64 } { ptr @tn.str.71, i64 3 }, { ptr, i64 } { ptr @tn.str.72, i64 8 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 7 }, { ptr, i64 } { ptr @tn.str.76, i64 4 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }, { ptr, i64 } { ptr @tn.str.80, i64 6 }] -@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [5 x i8] c"?s64\00" +@tn.str.44 = private constant [8 x i8] c"?string\00" +@tn.str.45 = private constant [6 x i8] c"?bool\00" +@tn.str.46 = private constant [2 x i8] c"S\00" +@tn.str.47 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.48 = private constant [5 x i8] c"*s64\00" +@tn.str.49 = private constant [7 x i8] c"**void\00" +@tn.str.50 = private constant [3 x i8] c"*S\00" +@tn.str.51 = private constant [8 x i8] c"*string\00" +@tn.str.52 = private constant [6 x i8] c"[]Any\00" +@tn.str.53 = private constant [5 x i8] c"*Any\00" +@tn.str.54 = private constant [7 x i8] c"[1]Any\00" +@tn.str.55 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.56 = private constant [7 x i8] c"*[]Any\00" +@tn.str.57 = private constant [4 x i8] c"*u8\00" +@tn.str.58 = private constant [6 x i8] c"*bool\00" +@tn.str.59 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.60 = private constant [5 x i8] c"*f64\00" +@tn.str.61 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.62 = private constant [11 x i8] c"*Allocator\00" +@tn.str.63 = private constant [9 x i8] c"*Context\00" +@tn.str.64 = private constant [10 x i8] c"*[]string\00" +@tn.str.65 = private constant [6 x i8] c"**GPA\00" +@tn.str.66 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.67 = private constant [8 x i8] c"**Arena\00" +@tn.str.68 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.69 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.70 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.71 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.72 = private constant [6 x i8] c"**s64\00" +@tn.str.73 = private constant [8 x i8] c"***void\00" +@tn.str.74 = private constant [4 x i8] c"**S\00" +@tn.str.75 = private constant [9 x i8] c"**string\00" +@tn.str.76 = private constant [6 x i8] c"**Any\00" +@tn.str.77 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.78 = private constant [8 x i8] c"**[]Any\00" +@tn.str.79 = private constant [5 x i8] c"**u8\00" +@tn.str.80 = private constant [7 x i8] c"**bool\00" +@tn.str.81 = private constant [6 x i8] c"*?s64\00" +@tn.str.82 = private constant [9 x i8] c"*?string\00" +@tn.str.83 = private constant [7 x i8] c"*?bool\00" +@__sx_type_names = private constant [78 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 4 }, { ptr, i64 } { ptr @tn.str.44, i64 7 }, { ptr, i64 } { ptr @tn.str.45, i64 5 }, { ptr, i64 } { ptr @tn.str.46, i64 1 }, { ptr, i64 } { ptr @tn.str.47, i64 12 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 2 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 4 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 3 }, { ptr, i64 } { ptr @tn.str.58, i64 5 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 4 }, { ptr, i64 } { ptr @tn.str.61, i64 16 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 8 }, { ptr, i64 } { ptr @tn.str.64, i64 9 }, { ptr, i64 } { ptr @tn.str.65, i64 5 }, { ptr, i64 } { ptr @tn.str.66, i64 12 }, { ptr, i64 } { ptr @tn.str.67, i64 7 }, { ptr, i64 } { ptr @tn.str.68, i64 6 }, { ptr, i64 } { ptr @tn.str.69, i64 10 }, { ptr, i64 } { ptr @tn.str.70, i64 19 }, { ptr, i64 } { ptr @tn.str.71, i64 13 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 3 }, { ptr, i64 } { ptr @tn.str.75, i64 8 }, { ptr, i64 } { ptr @tn.str.76, i64 5 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 7 }, { ptr, i64 } { ptr @tn.str.79, i64 4 }, { ptr, i64 } { ptr @tn.str.80, i64 6 }, { ptr, i64 } { ptr @tn.str.81, i64 5 }, { ptr, i64 } { ptr @tn.str.82, i64 8 }, { ptr, i64 } { ptr @tn.str.83, i64 6 }] @str.84 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.85 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.86 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.90 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.91 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.92 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.93 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.94 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.86 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.87 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.88 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.89 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.93 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.94 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.95 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.96 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.97 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.98 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.99 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.100 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.101 = private unnamed_addr constant [3 x i8] c"hi\00", align 1 -@str.102 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.103 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.104 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 -@str.105 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.106 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.107 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.108 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.101 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.102 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.103 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.104 = private unnamed_addr constant [3 x i8] c"hi\00", align 1 +@str.105 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.106 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.107 = private unnamed_addr constant [4 x i8] c"{}\0A\00", align 1 +@str.108 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.109 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.110 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.111 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.109 = private constant [5 x i8] c"line\00" -@fld.str.110 = private constant [4 x i8] c"col\00" -@fld.str.111 = 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.109, i64 4 }, { ptr, i64 } { ptr @fld.str.110, i64 3 }, { ptr, i64 } { ptr @fld.str.111, i64 4 }] -@str.112 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.113 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.114 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.115 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.116 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.117 = private constant [4 x i8] c"ctx\00" -@fld.str.118 = private constant [6 x i8] c"alloc\00" -@fld.str.119 = private constant [8 x i8] c"dealloc\00" -@field_names.120 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.117, i64 3 }, { ptr, i64 } { ptr @fld.str.118, i64 5 }, { ptr, i64 } { ptr @fld.str.119, i64 7 }] -@str.121 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.122 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.123 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.124 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.126 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.127 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.128 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.130 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.132 = private constant [12 x i8] c"alloc_count\00" -@field_names.133 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.132, i64 11 }] -@str.134 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.135 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.136 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.139 = private constant [5 x i8] c"next\00" -@fld.str.140 = private constant [4 x i8] c"cap\00" -@field_names.141 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.139, i64 4 }, { ptr, i64 } { ptr @fld.str.140, i64 3 }] -@str.142 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.143 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.144 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.145 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.146 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.147 = private constant [6 x i8] c"first\00" -@fld.str.148 = private constant [10 x i8] c"end_index\00" -@fld.str.149 = private constant [7 x i8] c"parent\00" -@field_names.150 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.147, i64 5 }, { ptr, i64 } { ptr @fld.str.148, i64 9 }, { ptr, i64 } { ptr @fld.str.149, i64 6 }] -@str.151 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.152 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.153 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.154 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.156 = private constant [4 x i8] c"buf\00" -@fld.str.157 = private constant [4 x i8] c"len\00" -@fld.str.158 = private constant [4 x i8] c"pos\00" -@field_names.159 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.156, i64 3 }, { ptr, i64 } { ptr @fld.str.157, i64 3 }, { ptr, i64 } { ptr @fld.str.158, i64 3 }] -@str.160 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.161 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.162 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.163 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.165 = private constant [7 x i8] c"parent\00" -@fld.str.166 = private constant [12 x i8] c"alloc_count\00" -@fld.str.167 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.168 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.169 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.165, i64 6 }, { ptr, i64 } { ptr @fld.str.166, i64 11 }, { ptr, i64 } { ptr @fld.str.167, i64 13 }, { ptr, i64 } { ptr @fld.str.168, i64 17 }] -@str.170 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.171 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.172 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.173 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.174 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.175 = private constant [10 x i8] c"allocator\00" -@fld.str.176 = private constant [5 x i8] c"data\00" -@field_names.177 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.175, i64 9 }, { ptr, i64 } { ptr @fld.str.176, i64 4 }] -@str.178 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"S\00", align 1 -@str.180 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.181 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.182 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.183 = private constant [2 x i8] c"a\00" -@fld.str.184 = private constant [2 x i8] c"b\00" -@fld.str.185 = private constant [2 x i8] c"c\00" -@field_names.186 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.183, i64 1 }, { ptr, i64 } { ptr @fld.str.184, i64 1 }, { ptr, i64 } { ptr @fld.str.185, i64 1 }] -@str.187 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.188 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.189 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.190 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.112 = private constant [5 x i8] c"line\00" +@fld.str.113 = private constant [4 x i8] c"col\00" +@fld.str.114 = 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.112, i64 4 }, { ptr, i64 } { ptr @fld.str.113, i64 3 }, { ptr, i64 } { ptr @fld.str.114, i64 4 }] +@str.115 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.116 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.117 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.118 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.120 = private constant [4 x i8] c"ctx\00" +@fld.str.121 = private constant [6 x i8] c"alloc\00" +@fld.str.122 = private constant [8 x i8] c"dealloc\00" +@field_names.123 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.120, i64 3 }, { ptr, i64 } { ptr @fld.str.121, i64 5 }, { ptr, i64 } { ptr @fld.str.122, i64 7 }] +@str.124 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.125 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.126 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.127 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.128 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.129 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.130 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.131 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.133 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.135 = private constant [12 x i8] c"alloc_count\00" +@field_names.136 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.135, i64 11 }] +@str.137 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.138 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.139 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.141 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.142 = private constant [5 x i8] c"next\00" +@fld.str.143 = private constant [4 x i8] c"cap\00" +@field_names.144 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.142, i64 4 }, { ptr, i64 } { ptr @fld.str.143, i64 3 }] +@str.145 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.146 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.148 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.149 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.150 = private constant [6 x i8] c"first\00" +@fld.str.151 = private constant [10 x i8] c"end_index\00" +@fld.str.152 = private constant [7 x i8] c"parent\00" +@field_names.153 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.150, i64 5 }, { ptr, i64 } { ptr @fld.str.151, i64 9 }, { ptr, i64 } { ptr @fld.str.152, i64 6 }] +@str.154 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.155 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.156 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.157 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.159 = private constant [4 x i8] c"buf\00" +@fld.str.160 = private constant [4 x i8] c"len\00" +@fld.str.161 = private constant [4 x i8] c"pos\00" +@field_names.162 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.159, i64 3 }, { ptr, i64 } { ptr @fld.str.160, i64 3 }, { ptr, i64 } { ptr @fld.str.161, i64 3 }] +@str.163 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.164 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\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 [7 x i8] c"parent\00" +@fld.str.169 = private constant [12 x i8] c"alloc_count\00" +@fld.str.170 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.171 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.172 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.168, i64 6 }, { ptr, i64 } { ptr @fld.str.169, i64 11 }, { ptr, i64 } { ptr @fld.str.170, i64 13 }, { ptr, i64 } { ptr @fld.str.171, i64 17 }] +@str.173 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.174 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.175 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.176 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.178 = private constant [10 x i8] c"allocator\00" +@fld.str.179 = private constant [5 x i8] c"data\00" +@field_names.180 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.178, i64 9 }, { ptr, i64 } { ptr @fld.str.179, i64 4 }] +@str.181 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.182 = private unnamed_addr constant [2 x i8] c"S\00", align 1 +@str.183 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.186 = private constant [2 x i8] c"a\00" +@fld.str.187 = private constant [2 x i8] c"b\00" +@fld.str.188 = private constant [2 x i8] c"c\00" +@field_names.189 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.186, i64 1 }, { ptr, i64 } { ptr @fld.str.187, i64 1 }, { ptr, i64 } { ptr @fld.str.188, i64 1 }] +@str.190 = private unnamed_addr constant [3 x i8] c": \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 @str.194 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.195 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.196 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.197 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.198 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.199 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.200 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.201 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.202 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.198 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.199 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.201 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.203 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.204 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.204 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.205 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.206 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.207 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.207 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.208 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.209 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.210 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.210 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.211 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.212 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.213 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.213 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.214 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.215 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.216 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.216 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.217 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.218 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.219 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.219 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.220 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.221 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.222 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.222 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.223 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.224 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.225 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.225 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.226 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.227 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.228 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.228 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.229 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.230 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.231 = private unnamed_addr constant [3 x i8] c"*S\00", align 1 +@str.231 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.232 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.233 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.234 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.234 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.235 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.236 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.237 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.237 = private unnamed_addr constant [3 x i8] c"*S\00", align 1 @str.238 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.239 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.240 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.240 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.241 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.242 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.243 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.243 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.244 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.245 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.246 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.246 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.247 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.248 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.249 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.249 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.250 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.251 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.252 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.253 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.252 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.253 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.254 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.255 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.256 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.257 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.258 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.259 = private unnamed_addr constant [5 x i8] c"null\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -396,38 +403,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -440,50 +452,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -497,19 +637,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -526,15 +666,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -552,16 +692,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -578,17 +718,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -651,39 +791,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.187 + br label %while.hdr.209 -while.hdr.187: ; preds = %if.merge.192, %entry +while.hdr.209: ; preds = %if.merge.214, %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.188, label %while.exit.189 + br i1 %icmp, label %while.body.210, label %while.exit.211 -while.body.188: ; preds = %while.hdr.187 +while.body.210: ; preds = %while.hdr.209 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.190, label %if.else.191 + br i1 %icmpN, label %if.then.212, label %if.else.213 -while.exit.189: ; preds = %while.hdr.187 +while.exit.211: ; preds = %while.hdr.209 ret void -if.then.190: ; preds = %while.body.188 +if.then.212: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.192 + br label %if.merge.214 -if.else.191: ; preds = %while.body.188 +if.else.213: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.192 + br label %if.merge.214 -if.merge.192: ; preds = %if.else.191, %if.then.190 - %bp = phi i64 [ %addN, %if.then.190 ], [ %addN, %if.else.191 ] +if.merge.214: ; preds = %if.else.213, %if.then.212 + %bp = phi i64 [ %addN, %if.then.212 ], [ %addN, %if.else.213 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -696,37 +836,29 @@ if.merge.192: ; preds = %if.else.191, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.187 + br label %while.hdr.209 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.177, label %if.merge.178 - -if.then.177: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.178: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.179, label %if.merge.180 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.179: ; preds = %if.merge.178 +if.then.58: ; 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.180 + br label %if.merge.59 -if.merge.180: ; preds = %if.then.179, %if.merge.178 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -739,15 +871,15 @@ if.merge.180: ; preds = %if.then.179, %if.me 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.181, label %if.merge.182 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.181: ; preds = %if.merge.180 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.182 + br label %if.merge.61 -if.merge.182: ; preds = %if.then.181, %if.merge.180 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -760,15 +892,15 @@ if.merge.182: ; preds = %if.then.181, %if.me 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.183, label %if.merge.184 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.183: ; preds = %if.merge.182 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.184 + br label %if.merge.63 -if.merge.184: ; preds = %if.then.183, %if.merge.182 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -781,65 +913,116 @@ if.merge.184: ; preds = %if.then.183, %if.me 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.185, label %if.merge.186 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.185: ; preds = %if.merge.184 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.186 + br label %if.merge.65 -if.merge.186: ; preds = %if.then.185, %if.merge.184 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.207, label %if.merge.208 + +if.then.207: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.208: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.193 + br label %while.hdr.215 -while.hdr.193: ; preds = %if.merge.197, %if.merge.186 +while.hdr.215: ; preds = %if.merge.219, %if.merge.208 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.194, label %while.exit.195 + br i1 %icmpN, label %while.body.216, label %while.exit.217 -while.body.194: ; preds = %while.hdr.193 +while.body.216: ; preds = %while.hdr.215 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.196, label %if.merge.197 + br i1 %icmpN, label %if.then.218, label %if.merge.219 -while.exit.195: ; preds = %if.then.196, %while.hdr.193 +while.exit.217: ; preds = %if.then.218, %while.hdr.215 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.196: ; preds = %while.body.194 - br label %while.exit.195 +if.then.218: ; preds = %while.body.216 + br label %while.exit.217 -if.merge.197: ; preds = %while.body.194 +if.merge.219: ; preds = %while.body.216 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.193 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.215 } ; Function Attrs: nounwind @@ -918,7 +1101,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -926,512 +1109,539 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 - i64 39, label %match.arm.44 - i64 47, label %match.arm.48 - i64 35, label %match.arm.49 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 40, label %match.arm.43 + i64 35, label %match.arm.47 + i64 48, label %match.arm.47 + i64 36, label %match.arm.48 + i64 46, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 41, label %match.arm.49 + i64 42, label %match.arm.49 + i64 43, label %match.arm.49 + i64 44, label %match.arm.49 i64 45, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 40, label %match.arm.50 - i64 41, label %match.arm.50 - i64 42, label %match.arm.50 - i64 43, label %match.arm.50 - i64 44, label %match.arm.50 - i64 46, label %match.arm.50 - i64 48, label %match.arm.50 - i64 49, label %match.arm.50 - i64 50, label %match.arm.50 - i64 51, label %match.arm.50 - i64 36, label %match.arm.51 - i64 37, label %match.arm.51 - i64 38, label %match.arm.51 - i64 13, label %match.arm.52 + i64 47, label %match.arm.49 + i64 49, label %match.arm.49 + i64 50, label %match.arm.49 + i64 51, label %match.arm.49 + i64 52, label %match.arm.49 + i64 37, label %match.arm.50 + i64 38, label %match.arm.50 + i64 39, label %match.arm.50 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.249, %dispatch.merge.154, %dispatch.merge.140, %dispatch.merge.132, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.271, %dispatch.merge.184, %dispatch.merge.170, %dispatch.merge.156, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [78 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 39, label %dispatch.case.81 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 40, label %dispatch.case.105 ] +match.arm.44: ; No predecessors! + unreachable + match.arm.45: ; No predecessors! unreachable match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable - -match.arm.48: ; preds = %entry +match.arm.47: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.133 [ - i64 47, label %dispatch.case.134 + switch i64 %ua.raw20, label %dispatch.default.157 [ + i64 35, label %dispatch.case.158 + i64 48, label %dispatch.case.159 ] -match.arm.49: ; preds = %entry, %entry +match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw24 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.141 [ - i64 35, label %dispatch.case.142 - i64 45, label %dispatch.case.143 + switch i64 %ua.raw24, label %dispatch.default.171 [ + i64 36, label %dispatch.case.172 + i64 46, label %dispatch.case.173 ] -match.arm.50: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.49: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.155 [ - i64 18, label %dispatch.case.156 - i64 22, label %dispatch.case.157 - i64 24, label %dispatch.case.158 - i64 26, label %dispatch.case.159 - i64 28, label %dispatch.case.160 - i64 29, label %dispatch.case.161 - i64 31, label %dispatch.case.162 - i64 33, label %dispatch.case.163 - i64 40, label %dispatch.case.164 - i64 41, label %dispatch.case.165 - i64 42, label %dispatch.case.166 - i64 43, label %dispatch.case.167 - i64 44, label %dispatch.case.168 - i64 46, label %dispatch.case.169 - i64 48, label %dispatch.case.170 - i64 49, label %dispatch.case.171 - i64 50, label %dispatch.case.172 - i64 51, label %dispatch.case.173 + switch i64 %ua.raw28, label %dispatch.default.185 [ + i64 18, label %dispatch.case.186 + i64 22, label %dispatch.case.187 + i64 24, label %dispatch.case.188 + i64 26, label %dispatch.case.189 + i64 28, label %dispatch.case.190 + i64 29, label %dispatch.case.191 + i64 31, label %dispatch.case.192 + i64 33, label %dispatch.case.193 + i64 41, label %dispatch.case.194 + i64 42, label %dispatch.case.195 + i64 43, label %dispatch.case.196 + i64 44, label %dispatch.case.197 + i64 45, label %dispatch.case.198 + i64 47, label %dispatch.case.199 + i64 49, label %dispatch.case.200 + i64 50, label %dispatch.case.201 + i64 51, label %dispatch.case.202 + i64 52, label %dispatch.case.203 ] -match.arm.51: ; preds = %entry, %entry, %entry +match.arm.50: ; preds = %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw34 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw32 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.250 [ - i64 36, label %dispatch.case.251 - i64 37, label %dispatch.case.252 - i64 38, label %dispatch.case.253 + switch i64 %ua.raw32, label %dispatch.default.272 [ + i64 37, label %dispatch.case.273 + i64 38, label %dispatch.case.274 + i64 39, label %dispatch.case.275 ] -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [76 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [78 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, ptr %ua.ptr80, align 8 - %callN = call { ptr, i64 } @struct_to_string__S(ptr %0, { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.132: ; preds = %dispatch.case.134, %dispatch.default.133 +dispatch.case.105: ; preds = %match.arm.43 + %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr + %ua.load85 = load { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, ptr %ua.ptr84, align 8 + %callN = call { ptr, i64 } @struct_to_string__S(ptr %0, { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %ua.load85) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.156: ; preds = %dispatch.case.159, %dispatch.case.158, %dispatch.default.157 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.133: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.132 +dispatch.default.157: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.85, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.156 -dispatch.case.134: ; preds = %match.arm.48 - %ua.raw84 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr85 = inttoptr i64 %ua.raw84 to ptr - %ua.load86 = load [1 x { i64, i64 }], ptr %ua.ptr85, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load86) +dispatch.case.158: ; preds = %match.arm.47 + %ua.raw88 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr89 = inttoptr i64 %ua.raw88 to ptr + %ua.load90 = load [4 x i64], ptr %ua.ptr89, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load90) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.132 + br label %dispatch.merge.156 -dispatch.merge.140: ; preds = %dispatch.case.143, %dispatch.case.142, %dispatch.default.141 +dispatch.case.159: ; preds = %match.arm.47 + %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr93 = inttoptr i64 %ua.raw92 to ptr + %ua.load94 = load [1 x { i64, i64 }], ptr %ua.ptr93, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load94) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.156 + +dispatch.merge.170: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.default.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.141: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.140 +dispatch.default.171: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.86, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.170 -dispatch.case.142: ; preds = %match.arm.49 - %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr - %ua.load91 = load { ptr, i64 }, ptr %ua.ptr90, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load91) +dispatch.case.172: ; preds = %match.arm.48 + %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr + %ua.load99 = load { ptr, i64 }, ptr %ua.ptr98, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load99) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.case.143: ; preds = %match.arm.49 - %ua.raw93 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr94 = inttoptr i64 %ua.raw93 to ptr - %ua.load95 = load { ptr, i64 }, ptr %ua.ptr94, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load95) +dispatch.case.173: ; preds = %match.arm.48 + %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr + %ua.load103 = load { ptr, i64 }, ptr %ua.ptr102, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load103) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.140 + br label %dispatch.merge.170 -dispatch.merge.154: ; preds = %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.case.159, %dispatch.case.158, %dispatch.case.157, %dispatch.case.156, %dispatch.default.155 +dispatch.merge.184: ; preds = %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.default.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.155: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.154 +dispatch.default.185: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.87, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.184 -dispatch.case.156: ; preds = %match.arm.50 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw98 to ptr +dispatch.case.186: ; preds = %match.arm.49 + %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw106 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.154 + br label %dispatch.merge.184 -dispatch.case.157: ; preds = %match.arm.50 - %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 - %iNp101 = inttoptr i64 %ua.raw100 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp101) +dispatch.case.187: ; preds = %match.arm.49 + %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 + %iNp109 = inttoptr i64 %ua.raw108 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp109) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.158: ; preds = %match.arm.50 - %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 - %iNp104 = inttoptr i64 %ua.raw103 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp104) +dispatch.case.188: ; preds = %match.arm.49 + %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 + %iNp112 = inttoptr i64 %ua.raw111 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp112) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.159: ; preds = %match.arm.50 - %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 - %iNp107 = inttoptr i64 %ua.raw106 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp107) +dispatch.case.189: ; preds = %match.arm.49 + %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 + %iNp115 = inttoptr i64 %ua.raw114 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp115) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.160: ; preds = %match.arm.50 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %iNp110 = inttoptr i64 %ua.raw109 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp110) +dispatch.case.190: ; preds = %match.arm.49 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %iNp118 = inttoptr i64 %ua.raw117 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp118) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.161: ; preds = %match.arm.50 - %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 - %iNp113 = inttoptr i64 %ua.raw112 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp113) +dispatch.case.191: ; preds = %match.arm.49 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %iNp121 = inttoptr i64 %ua.raw120 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp121) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.162: ; preds = %match.arm.50 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp116 = inttoptr i64 %ua.raw115 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp116) +dispatch.case.192: ; preds = %match.arm.49 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp124 = inttoptr i64 %ua.raw123 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.163: ; preds = %match.arm.50 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %iNp119 = inttoptr i64 %ua.raw118 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp119) +dispatch.case.193: ; preds = %match.arm.49 + %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 + %iNp127 = inttoptr i64 %ua.raw126 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.164: ; preds = %match.arm.50 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp122) +dispatch.case.194: ; preds = %match.arm.49 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.165: ; preds = %match.arm.50 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp125) +dispatch.case.195: ; preds = %match.arm.49 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.166: ; preds = %match.arm.50 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp128) +dispatch.case.196: ; preds = %match.arm.49 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.167: ; preds = %match.arm.50 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_S(ptr %0, ptr %iNp131) +dispatch.case.197: ; preds = %match.arm.49 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_S(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.168: ; preds = %match.arm.50 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp134) +dispatch.case.198: ; preds = %match.arm.49 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.169: ; preds = %match.arm.50 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp137) +dispatch.case.199: ; preds = %match.arm.49 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.170: ; preds = %match.arm.50 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp140) +dispatch.case.200: ; preds = %match.arm.49 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.171: ; preds = %match.arm.50 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp143) +dispatch.case.201: ; preds = %match.arm.49 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.172: ; preds = %match.arm.50 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp146) +dispatch.case.202: ; preds = %match.arm.49 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.case.173: ; preds = %match.arm.50 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp149) +dispatch.case.203: ; preds = %match.arm.49 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.154 + br label %dispatch.merge.184 -dispatch.merge.249: ; preds = %dispatch.case.253, %dispatch.case.252, %dispatch.case.251, %dispatch.default.250 +dispatch.merge.271: ; preds = %dispatch.case.275, %dispatch.case.274, %dispatch.case.273, %dispatch.default.272 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.250: ; preds = %match.arm.51 - store { ptr, i64 } { ptr @str.85, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.249 +dispatch.default.272: ; preds = %match.arm.50 + store { ptr, i64 } { ptr @str.88, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.271 -dispatch.case.251: ; preds = %match.arm.51 - %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr153 = inttoptr i64 %ua.raw152 to ptr - %ua.load154 = load { i64, i1 }, ptr %ua.ptr153, align 8 - %callN = call { ptr, i64 } @optional_to_string__opt_s64(ptr %0, { i64, i1 } %ua.load154) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.249 - -dispatch.case.252: ; preds = %match.arm.51 - %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr157 = inttoptr i64 %ua.raw156 to ptr - %ua.load158 = load { { ptr, i64 }, i1 }, ptr %ua.ptr157, align 8 - %callN = call { ptr, i64 } @optional_to_string__opt_string(ptr %0, { { ptr, i64 }, i1 } %ua.load158) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.249 - -dispatch.case.253: ; preds = %match.arm.51 +dispatch.case.273: ; preds = %match.arm.50 %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr161 = inttoptr i64 %ua.raw160 to ptr - %ua.load162 = load { i1, i1 }, ptr %ua.ptr161, align 1 - %callN = call { ptr, i64 } @optional_to_string__opt_bool(ptr %0, { i1, i1 } %ua.load162) + %ua.load162 = load { i64, i1 }, ptr %ua.ptr161, align 8 + %callN = call { ptr, i64 } @optional_to_string__opt_s64(ptr %0, { i64, i1 } %ua.load162) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.249 + br label %dispatch.merge.271 + +dispatch.case.274: ; preds = %match.arm.50 + %ua.raw164 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr165 = inttoptr i64 %ua.raw164 to ptr + %ua.load166 = load { { ptr, i64 }, i1 }, ptr %ua.ptr165, align 8 + %callN = call { ptr, i64 } @optional_to_string__opt_string(ptr %0, { { ptr, i64 }, i1 } %ua.load166) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.271 + +dispatch.case.275: ; preds = %match.arm.50 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr169 = inttoptr i64 %ua.raw168 to ptr + %ua.load170 = load { i1, i1 }, ptr %ua.ptr169, align 1 + %callN = call { ptr, i64 } @optional_to_string__opt_bool(ptr %0, { i1, i1 } %ua.load170) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.271 } ; Function Attrs: nounwind @@ -1440,7 +1650,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.86, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.89, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1471,7 +1681,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1489,9 +1699,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1529,14 +1739,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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 @@ -1544,7 +1754,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, 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 @@ -1554,13 +1764,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, 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 @@ -1568,7 +1778,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1580,83 +1790,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, 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.93, 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.94, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1684,18 +1818,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1708,6 +1879,45 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, 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.100, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, 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.102, 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 @@ -1716,11 +1926,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1729,7 +1939,7 @@ if.merge.37: ; preds = %if.then.36, %while. define i32 @main() #0 { entry: %alloca = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8 - store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } { { i64, i1 } { i64 42, i1 true }, { { ptr, i64 }, i1 } { { ptr, i64 } { ptr @str.101, i64 2 }, i1 true }, { i1, i1 } { i1 true, i1 true } }, ptr %alloca, align 8 + store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } { { i64, i1 } { i64 42, i1 true }, { { ptr, i64 }, i1 } { { ptr, i64 } { ptr @str.104, i64 2 }, i1 true }, { i1, i1 } { i1 true, i1 true } }, ptr %alloca, align 8 %load = load { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, ptr %alloca, align 8 call void @print__ct_sbc6305862a3a863d__pack_S(ptr @__sx_default_context, { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %load) %allocaN = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8 @@ -1757,7 +1967,7 @@ entry: define internal void @print__ct_sbc6305862a3a863d__pack_S(ptr %0, { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.102, i64 3 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.105, i64 3 }, ptr %alloca, align 8 %allocaN = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8 store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %1, ptr %allocaN, align 8 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1765,7 +1975,7 @@ entry: %ba.tmp = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8 store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %load, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %ba.val = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i, 1 + %ba.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 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 @@ -1775,13 +1985,13 @@ entry: %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.103, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.106, i64 0 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, ptr %allocaN, align 8 %ba.tmp9 = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8 store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, ptr %ba.tmp9, align 8 %ba.p2i10 = ptrtoint ptr %ba.tmp9 to i64 - %ba.val11 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i10, 1 + %ba.val11 = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i10, 1 %call = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %ba.val11) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %call) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1800,7 +2010,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.104, i64 3 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.107, i64 3 }) ret { ptr, i64 } %call } @@ -1809,35 +2019,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.105, i64 15 }, { ptr, i64 } { ptr @str.106, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.108, i64 15 }, { ptr, i64 } { ptr @str.109, 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.82 + br label %while.hdr.106 -while.hdr.82: ; preds = %fv.merge, %entry +while.hdr.106: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.83, label %while.exit.84 + br i1 %icmp, label %while.body.107, label %while.exit.108 -while.body.83: ; preds = %while.hdr.82 +while.body.107: ; preds = %while.hdr.106 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.85, label %if.merge.86 + br i1 %icmpN, label %if.then.109, label %if.merge.110 -while.exit.84: ; preds = %while.hdr.82 +while.exit.108: ; preds = %while.hdr.106 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 1 }) ret { ptr, i64 } %callN -if.then.85: ; preds = %while.body.83 +if.then.109: ; preds = %while.body.107 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.86 + br label %if.merge.110 -if.merge.86: ; preds = %if.then.85, %while.body.83 +if.merge.110: ; preds = %if.then.109, %while.body.107 %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 @@ -1845,7 +2055,7 @@ if.merge.86: ; preds = %if.then.85, %while. %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.112, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -1865,12 +2075,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.82 + br label %while.hdr.106 -fv.default: ; preds = %if.merge.86 +fv.default: ; preds = %if.merge.110 br label %fv.merge -fv.case: ; preds = %if.merge.86 +fv.case: ; preds = %if.merge.110 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1878,19 +2088,19 @@ fv.case: ; preds = %if.merge.86 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.86 +fv.case17: ; preds = %if.merge.110 %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.86 +fv.case20: ; preds = %if.merge.110 %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.86 +fv.case24: ; preds = %if.merge.110 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1904,43 +2114,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.113, i64 9 }, { ptr, i64 } { ptr @str.114, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.116, i64 9 }, { ptr, i64 } { ptr @str.117, 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.87 + br label %while.hdr.111 -while.hdr.87: ; preds = %fv.merge, %entry +while.hdr.111: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.88, label %while.exit.89 + br i1 %icmp, label %while.body.112, label %while.exit.113 -while.body.88: ; preds = %while.hdr.87 +while.body.112: ; preds = %while.hdr.111 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.90, label %if.merge.91 + br i1 %icmpN, label %if.then.114, label %if.merge.115 -while.exit.89: ; preds = %while.hdr.87 +while.exit.113: ; preds = %while.hdr.111 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 1 }) ret { ptr, i64 } %callN -if.then.90: ; preds = %while.body.88 +if.then.114: ; preds = %while.body.112 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.91 + br label %if.merge.115 -if.merge.91: ; preds = %if.then.90, %while.body.88 +if.merge.115: ; preds = %if.then.114, %while.body.112 %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.120, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.123, 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.121, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, 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 @@ -1959,24 +2169,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.87 + br label %while.hdr.111 -fv.default: ; preds = %if.merge.91 +fv.default: ; preds = %if.merge.115 br label %fv.merge -fv.case: ; preds = %if.merge.91 +fv.case: ; preds = %if.merge.115 %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.91 +fv.case17: ; preds = %if.merge.115 %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.91 +fv.case21: ; preds = %if.merge.115 %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 @@ -1988,43 +2198,43 @@ 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.122, i64 10 }, { ptr, i64 } { ptr @str.123, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.125, i64 10 }, { ptr, i64 } { ptr @str.126, 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.92 + br label %while.hdr.116 -while.hdr.92: ; preds = %if.merge.96, %entry +while.hdr.116: ; preds = %if.merge.120, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.93, label %while.exit.94 + br i1 %icmp, label %while.body.117, label %while.exit.118 -while.body.93: ; preds = %while.hdr.92 +while.body.117: ; preds = %while.hdr.116 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.95, label %if.merge.96 + br i1 %icmpN, label %if.then.119, label %if.merge.120 -while.exit.94: ; preds = %while.hdr.92 +while.exit.118: ; preds = %while.hdr.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 1 }) ret { ptr, i64 } %callN -if.then.95: ; preds = %while.body.93 +if.then.119: ; preds = %while.body.117 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.96 + br label %if.merge.120 -if.merge.96: ; preds = %if.then.95, %while.body.93 +if.merge.120: ; preds = %if.then.119, %while.body.117 %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.126, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.129, 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.127, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2035,7 +2245,7 @@ if.merge.96: ; preds = %if.then.95, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.92 + br label %while.hdr.116 } ; Function Attrs: nounwind @@ -2043,43 +2253,43 @@ 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.128, i64 3 }, { ptr, i64 } { ptr @str.129, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.131, i64 3 }, { ptr, i64 } { ptr @str.132, 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.97 + br label %while.hdr.121 -while.hdr.97: ; preds = %fv.merge, %entry +while.hdr.121: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.98, label %while.exit.99 + br i1 %icmp, label %while.body.122, label %while.exit.123 -while.body.98: ; preds = %while.hdr.97 +while.body.122: ; preds = %while.hdr.121 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.100, label %if.merge.101 + br i1 %icmpN, label %if.then.124, label %if.merge.125 -while.exit.99: ; preds = %while.hdr.97 +while.exit.123: ; preds = %while.hdr.121 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 1 }) ret { ptr, i64 } %callN -if.then.100: ; preds = %while.body.98 +if.then.124: ; preds = %while.body.122 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.101 + br label %if.merge.125 -if.merge.101: ; preds = %if.then.100, %while.body.98 +if.merge.125: ; preds = %if.then.124, %while.body.122 %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.133, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.136, 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.134, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i64 }, ptr %alloca, align 8 @@ -2096,12 +2306,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.97 + br label %while.hdr.121 -fv.default: ; preds = %if.merge.101 +fv.default: ; preds = %if.merge.125 br label %fv.merge -fv.case: ; preds = %if.merge.101 +fv.case: ; preds = %if.merge.125 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2112,43 +2322,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.135, i64 10 }, { ptr, i64 } { ptr @str.136, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 10 }, { ptr, i64 } { ptr @str.139, 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.102 + br label %while.hdr.126 -while.hdr.102: ; preds = %fv.merge, %entry +while.hdr.126: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.103, label %while.exit.104 + br i1 %icmp, label %while.body.127, label %while.exit.128 -while.body.103: ; preds = %while.hdr.102 +while.body.127: ; preds = %while.hdr.126 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.105, label %if.merge.106 + br i1 %icmpN, label %if.then.129, label %if.merge.130 -while.exit.104: ; preds = %while.hdr.102 +while.exit.128: ; preds = %while.hdr.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 1 }) ret { ptr, i64 } %callN -if.then.105: ; preds = %while.body.103 +if.then.129: ; preds = %while.body.127 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) + %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 - br label %if.merge.106 + br label %if.merge.130 -if.merge.106: ; preds = %if.then.105, %while.body.103 +if.merge.130: ; preds = %if.then.129, %while.body.127 %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.141, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.144, 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.142, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 @@ -2166,18 +2376,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.102 + br label %while.hdr.126 -fv.default: ; preds = %if.merge.106 +fv.default: ; preds = %if.merge.130 br label %fv.merge -fv.case: ; preds = %if.merge.106 +fv.case: ; preds = %if.merge.130 %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.106 +fv.case17: ; preds = %if.merge.130 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2188,43 +2398,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.143, i64 5 }, { ptr, i64 } { ptr @str.144, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.146, i64 5 }, { ptr, i64 } { ptr @str.147, 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.107 + br label %while.hdr.131 -while.hdr.107: ; preds = %fv.merge, %entry +while.hdr.131: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.108, label %while.exit.109 + br i1 %icmp, label %while.body.132, label %while.exit.133 -while.body.108: ; preds = %while.hdr.107 +while.body.132: ; preds = %while.hdr.131 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.110, label %if.merge.111 + br i1 %icmpN, label %if.then.134, label %if.merge.135 -while.exit.109: ; preds = %while.hdr.107 +while.exit.133: ; preds = %while.hdr.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.145, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 1 }) ret { ptr, i64 } %callN -if.then.110: ; preds = %while.body.108 +if.then.134: ; preds = %while.body.132 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.111 + br label %if.merge.135 -if.merge.111: ; preds = %if.then.110, %while.body.108 +if.merge.135: ; preds = %if.then.134, %while.body.132 %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.150, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.153, 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.151, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2243,23 +2453,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.107 + br label %while.hdr.131 -fv.default: ; preds = %if.merge.111 +fv.default: ; preds = %if.merge.135 br label %fv.merge -fv.case: ; preds = %if.merge.111 +fv.case: ; preds = %if.merge.135 %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.111 +fv.case17: ; preds = %if.merge.135 %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.111 +fv.case20: ; preds = %if.merge.135 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2273,43 +2483,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.152, i64 8 }, { ptr, i64 } { ptr @str.153, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.155, i64 8 }, { ptr, i64 } { ptr @str.156, 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.112 + br label %while.hdr.136 -while.hdr.112: ; preds = %fv.merge, %entry +while.hdr.136: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.113, label %while.exit.114 + br i1 %icmp, label %while.body.137, label %while.exit.138 -while.body.113: ; preds = %while.hdr.112 +while.body.137: ; preds = %while.hdr.136 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.115, label %if.merge.116 + br i1 %icmpN, label %if.then.139, label %if.merge.140 -while.exit.114: ; preds = %while.hdr.112 +while.exit.138: ; preds = %while.hdr.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 1 }) ret { ptr, i64 } %callN -if.then.115: ; preds = %while.body.113 +if.then.139: ; preds = %while.body.137 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.116 + br label %if.merge.140 -if.merge.116: ; preds = %if.then.115, %while.body.113 +if.merge.140: ; preds = %if.then.139, %while.body.137 %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.159, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 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.160, i64 2 }) + %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 { ptr, i64, i64 }, ptr %alloca, align 8 @@ -2328,23 +2538,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.112 + br label %while.hdr.136 -fv.default: ; preds = %if.merge.116 +fv.default: ; preds = %if.merge.140 br label %fv.merge -fv.case: ; preds = %if.merge.116 +fv.case: ; preds = %if.merge.140 %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.116 +fv.case17: ; preds = %if.merge.140 %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.116 +fv.case20: ; preds = %if.merge.140 %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 @@ -2355,43 +2565,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.161, i64 17 }, { ptr, i64 } { ptr @str.162, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.164, i64 17 }, { 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.117 + br label %while.hdr.141 -while.hdr.117: ; preds = %fv.merge, %entry +while.hdr.141: ; 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 + br i1 %icmp, label %while.body.142, label %while.exit.143 -while.body.118: ; preds = %while.hdr.117 +while.body.142: ; preds = %while.hdr.141 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.120, label %if.merge.121 + br i1 %icmpN, label %if.then.144, label %if.merge.145 -while.exit.119: ; preds = %while.hdr.117 +while.exit.143: ; preds = %while.hdr.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 1 }) ret { ptr, i64 } %callN -if.then.120: ; preds = %while.body.118 +if.then.144: ; preds = %while.body.142 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, i64 2 }) + %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.121 + br label %if.merge.145 -if.merge.121: ; preds = %if.then.120, %while.body.118 +if.merge.145: ; preds = %if.then.144, %while.body.142 %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.169, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.172, 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.170, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, 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 @@ -2411,12 +2621,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.117 + br label %while.hdr.141 -fv.default: ; preds = %if.merge.121 +fv.default: ; preds = %if.merge.145 br label %fv.merge -fv.case: ; preds = %if.merge.121 +fv.case: ; preds = %if.merge.145 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2424,17 +2634,17 @@ fv.case: ; preds = %if.merge.121 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.121 +fv.case17: ; preds = %if.merge.145 %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.121 +fv.case20: ; preds = %if.merge.145 %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.121 +fv.case23: ; preds = %if.merge.145 %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 @@ -2445,43 +2655,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.171, i64 7 }, { ptr, i64 } { ptr @str.172, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.174, i64 7 }, { ptr, i64 } { ptr @str.175, 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 + br label %while.hdr.146 -while.hdr.122: ; preds = %fv.merge, %entry +while.hdr.146: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.123, label %while.exit.124 + br i1 %icmp, label %while.body.147, label %while.exit.148 -while.body.123: ; preds = %while.hdr.122 +while.body.147: ; preds = %while.hdr.146 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.125, label %if.merge.126 + br i1 %icmpN, label %if.then.149, label %if.merge.150 -while.exit.124: ; preds = %while.hdr.122 +while.exit.148: ; preds = %while.hdr.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 1 }) ret { ptr, i64 } %callN -if.then.125: ; preds = %while.body.123 +if.then.149: ; preds = %while.body.147 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.126 + br label %if.merge.150 -if.merge.126: ; preds = %if.then.125, %while.body.123 +if.merge.150: ; preds = %if.then.149, %while.body.147 %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.177, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.180, 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.178, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, 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 @@ -2499,12 +2709,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.122 + br label %while.hdr.146 -fv.default: ; preds = %if.merge.126 +fv.default: ; preds = %if.merge.150 br label %fv.merge -fv.case: ; preds = %if.merge.126 +fv.case: ; preds = %if.merge.150 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2512,7 +2722,7 @@ fv.case: ; preds = %if.merge.126 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.126 +fv.case17: ; preds = %if.merge.150 %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 @@ -2524,43 +2734,43 @@ define internal { ptr, i64 } @struct_to_string__S(ptr %0, { { i64, i1 }, { { ptr entry: %alloca = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8 store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.179, i64 1 }, { ptr, i64 } { ptr @str.180, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 1 }, { ptr, i64 } { ptr @str.183, 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 + br label %while.hdr.151 -while.hdr.127: ; preds = %fv.merge, %entry +while.hdr.151: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.128, label %while.exit.129 + br i1 %icmp, label %while.body.152, label %while.exit.153 -while.body.128: ; preds = %while.hdr.127 +while.body.152: ; preds = %while.hdr.151 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.130, label %if.merge.131 + br i1 %icmpN, label %if.then.154, label %if.merge.155 -while.exit.129: ; preds = %while.hdr.127 +while.exit.153: ; preds = %while.hdr.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) ret { ptr, i64 } %callN -if.then.130: ; preds = %while.body.128 +if.then.154: ; preds = %while.body.152 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.131 + br label %if.merge.155 -if.merge.131: ; preds = %if.then.130, %while.body.128 +if.merge.155: ; preds = %if.then.154, %while.body.152 %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.186, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.189, 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.187, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, ptr %alloca, align 8 @@ -2579,69 +2789,119 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.127 + br label %while.hdr.151 -fv.default: ; preds = %if.merge.131 +fv.default: ; preds = %if.merge.155 br label %fv.merge -fv.case: ; preds = %if.merge.131 +fv.case: ; preds = %if.merge.155 %fv.field = extractvalue { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, 0 %ba.tmp = alloca { i64, i1 }, align 8 store { i64, i1 } %fv.field, ptr %ba.tmp, align 8 %ba.p2i = ptrtoint ptr %ba.tmp to i64 - %fv.val = insertvalue { i64, i64 } { i64 36, i64 undef }, i64 %ba.p2i, 1 + %fv.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.131 +fv.case17: ; preds = %if.merge.155 %fv.field18 = extractvalue { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, 1 %ba.tmp19 = alloca { { ptr, i64 }, i1 }, align 8 store { { ptr, i64 }, i1 } %fv.field18, ptr %ba.tmp19, align 8 %ba.p2i20 = ptrtoint ptr %ba.tmp19 to i64 - %fv.val21 = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i20, 1 + %fv.val21 = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i20, 1 br label %fv.merge -fv.case22: ; preds = %if.merge.131 +fv.case22: ; preds = %if.merge.155 %fv.field23 = extractvalue { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, 2 %ba.tmp24 = alloca { i1, i1 }, align 8 store { i1, i1 } %fv.field23, ptr %ba.tmp24, align 1 %ba.p2i25 = ptrtoint ptr %ba.tmp24 to i64 - %fv.val26 = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i25, 1 + %fv.val26 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i25, 1 br label %fv.merge } +; 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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.160 + +while.hdr.160: ; preds = %if.merge.164, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.161, label %while.exit.162 + +while.body.161: ; preds = %while.hdr.160 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.163, label %if.merge.164 + +while.exit.162: ; preds = %while.hdr.160 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) + ret { ptr, i64 } %call + +if.then.163: ; preds = %while.body.161 + %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.164 + +if.merge.164: ; preds = %if.then.163, %while.body.161 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.160 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.188, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.194, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 -while.hdr.135: ; preds = %if.merge.139, %entry +while.hdr.165: ; preds = %if.merge.169, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.136, label %while.exit.137 + br i1 %icmp, label %while.body.166, label %while.exit.167 -while.body.136: ; preds = %while.hdr.135 +while.body.166: ; preds = %while.hdr.165 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.138, label %if.merge.139 + br i1 %icmpN, label %if.then.168, label %if.merge.169 -while.exit.137: ; preds = %while.hdr.135 +while.exit.167: ; preds = %while.hdr.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.189, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 1 }) ret { ptr, i64 } %call -if.then.138: ; preds = %while.body.136 +if.then.168: ; preds = %while.body.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.139 + br label %if.merge.169 -if.merge.139: ; preds = %if.then.138, %while.body.136 +if.merge.169: ; preds = %if.then.168, %while.body.166 %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 @@ -2659,7 +2919,7 @@ if.merge.139: ; preds = %if.then.138, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.135 + br label %while.hdr.165 } ; Function Attrs: nounwind @@ -2668,35 +2928,35 @@ 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.191, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.197, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 -while.hdr.144: ; preds = %if.merge.148, %entry +while.hdr.174: ; preds = %if.merge.178, %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.145, label %while.exit.146 + br i1 %icmp, label %while.body.175, label %while.exit.176 -while.body.145: ; preds = %while.hdr.144 +while.body.175: ; preds = %while.hdr.174 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.147, label %if.merge.148 + br i1 %icmpN, label %if.then.177, label %if.merge.178 -while.exit.146: ; preds = %while.hdr.144 +while.exit.176: ; preds = %while.hdr.174 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 1 }) ret { ptr, i64 } %call -if.then.147: ; preds = %while.body.145 +if.then.177: ; preds = %while.body.175 %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 }) + %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 - br label %if.merge.148 + br label %if.merge.178 -if.merge.148: ; preds = %if.then.147, %while.body.145 +if.merge.178: ; preds = %if.then.177, %while.body.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2713,7 +2973,7 @@ if.merge.148: ; preds = %if.then.147, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.144 + br label %while.hdr.174 } ; Function Attrs: nounwind @@ -2722,35 +2982,35 @@ 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.194, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.200, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 -while.hdr.149: ; preds = %if.merge.153, %entry +while.hdr.179: ; preds = %if.merge.183, %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.150, label %while.exit.151 + br i1 %icmp, label %while.body.180, label %while.exit.181 -while.body.150: ; preds = %while.hdr.149 +while.body.180: ; preds = %while.hdr.179 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.152, label %if.merge.153 + br i1 %icmpN, label %if.then.182, label %if.merge.183 -while.exit.151: ; preds = %while.hdr.149 +while.exit.181: ; preds = %while.hdr.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) ret { ptr, i64 } %call -if.then.152: ; preds = %while.body.150 +if.then.182: ; preds = %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.153 + br label %if.merge.183 -if.merge.153: ; preds = %if.then.152, %while.body.150 +if.merge.183: ; preds = %if.then.182, %while.body.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2767,95 +3027,11 @@ if.merge.153: ; preds = %if.then.152, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.149 + br label %while.hdr.179 } ; 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.174, label %if.else.175 - -if.then.174: ; preds = %entry - br label %if.merge.176 - -if.else.175: ; 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.199, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.176 - -if.merge.176: ; preds = %if.else.175, %if.then.174 - %bp = phi { ptr, i64 } [ { ptr @str.197, i64 4 }, %if.then.174 ], [ %callN, %if.else.175 ] - 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.198, label %if.else.199 - -if.then.198: ; preds = %entry - br label %if.merge.200 - -if.else.199: ; 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.202, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.201, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.200 - -if.merge.200: ; preds = %if.else.199, %if.then.198 - %bp = phi { ptr, i64 } [ { ptr @str.200, i64 4 }, %if.then.198 ], [ %callN, %if.else.199 ] - 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.201, label %if.else.202 - -if.then.201: ; preds = %entry - br label %if.merge.203 - -if.else.202: ; 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.205, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.203 - -if.merge.203: ; preds = %if.else.202, %if.then.201 - %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.201 ], [ %callN, %if.else.202 ] - 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 @@ -2873,12 +3049,96 @@ if.then.204: ; preds = %entry if.else.205: ; 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.208, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 5 }, { ptr, i64 } %callN) br label %if.merge.206 if.merge.206: ; preds = %if.else.205, %if.then.204 - %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.204 ], [ %callN, %if.else.205 ] + %bp = phi { ptr, i64 } [ { ptr @str.203, i64 4 }, %if.then.204 ], [ %callN, %if.else.205 ] + 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.220, label %if.else.221 + +if.then.220: ; preds = %entry + br label %if.merge.222 + +if.else.221: ; 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.208, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.222 + +if.merge.222: ; preds = %if.else.221, %if.then.220 + %bp = phi { ptr, i64 } [ { ptr @str.206, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] + 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.223, label %if.else.224 + +if.then.223: ; preds = %entry + br label %if.merge.225 + +if.else.224: ; 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.211, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.225 + +if.merge.225: ; preds = %if.else.224, %if.then.223 + %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] + 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.226, label %if.else.227 + +if.then.226: ; preds = %entry + br label %if.merge.228 + +if.else.227: ; 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.214, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.228 + +if.merge.228: ; preds = %if.else.227, %if.then.226 + %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] ret { ptr, i64 } %bp } @@ -2893,20 +3153,20 @@ entry: 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.207, label %if.else.208 + br i1 %icmp, label %if.then.229, label %if.else.230 -if.then.207: ; preds = %entry - br label %if.merge.209 +if.then.229: ; preds = %entry + br label %if.merge.231 -if.else.208: ; preds = %entry +if.else.230: ; 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.211, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.209 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.231 -if.merge.209: ; preds = %if.else.208, %if.then.207 - %bp = phi { ptr, i64 } [ { ptr @str.209, i64 4 }, %if.then.207 ], [ %callN, %if.else.208 ] +if.merge.231: ; preds = %if.else.230, %if.then.229 + %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] ret { ptr, i64 } %bp } @@ -2920,20 +3180,20 @@ entry: 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.210, label %if.else.211 + br i1 %icmp, label %if.then.232, label %if.else.233 -if.then.210: ; preds = %entry - br label %if.merge.212 +if.then.232: ; preds = %entry + br label %if.merge.234 -if.else.211: ; preds = %entry +if.else.233: ; 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.214, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.212 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.234 -if.merge.212: ; preds = %if.else.211, %if.then.210 - %bp = phi { ptr, i64 } [ { ptr @str.212, i64 4 }, %if.then.210 ], [ %callN, %if.else.211 ] +if.merge.234: ; preds = %if.else.233, %if.then.232 + %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] ret { ptr, i64 } %bp } @@ -2948,20 +3208,20 @@ entry: 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.213, label %if.else.214 + br i1 %icmp, label %if.then.235, label %if.else.236 -if.then.213: ; preds = %entry - br label %if.merge.215 +if.then.235: ; preds = %entry + br label %if.merge.237 -if.else.214: ; preds = %entry +if.else.236: ; 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.217, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.215 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.237 -if.merge.215: ; preds = %if.else.214, %if.then.213 - %bp = phi { ptr, i64 } [ { ptr @str.215, i64 4 }, %if.then.213 ], [ %callN, %if.else.214 ] +if.merge.237: ; preds = %if.else.236, %if.then.235 + %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] ret { ptr, i64 } %bp } @@ -2976,20 +3236,20 @@ entry: 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.216, label %if.else.217 + br i1 %icmp, label %if.then.238, label %if.else.239 -if.then.216: ; preds = %entry - br label %if.merge.218 +if.then.238: ; preds = %entry + br label %if.merge.240 -if.else.217: ; preds = %entry +if.else.239: ; 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.220, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.218 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.240 -if.merge.218: ; preds = %if.else.217, %if.then.216 - %bp = phi { ptr, i64 } [ { ptr @str.218, i64 4 }, %if.then.216 ], [ %callN, %if.else.217 ] +if.merge.240: ; preds = %if.else.239, %if.then.238 + %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] ret { ptr, i64 } %bp } @@ -3004,20 +3264,20 @@ entry: 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.219, label %if.else.220 + br i1 %icmp, label %if.then.241, label %if.else.242 -if.then.219: ; preds = %entry - br label %if.merge.221 +if.then.241: ; preds = %entry + br label %if.merge.243 -if.else.220: ; preds = %entry +if.else.242: ; 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.223, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.221 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.243 -if.merge.221: ; preds = %if.else.220, %if.then.219 - %bp = phi { ptr, i64 } [ { ptr @str.221, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] +if.merge.243: ; preds = %if.else.242, %if.then.241 + %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] ret { ptr, i64 } %bp } @@ -3032,20 +3292,20 @@ entry: 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.222, label %if.else.223 + br i1 %icmp, label %if.then.244, label %if.else.245 -if.then.222: ; preds = %entry - br label %if.merge.224 +if.then.244: ; preds = %entry + br label %if.merge.246 -if.else.223: ; preds = %entry +if.else.245: ; 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.226, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.224 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.246 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.224, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] ret { ptr, i64 } %bp } @@ -3060,20 +3320,20 @@ entry: 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.225, label %if.else.226 + br i1 %icmp, label %if.then.247, label %if.else.248 -if.then.225: ; preds = %entry - br label %if.merge.227 +if.then.247: ; preds = %entry + br label %if.merge.249 -if.else.226: ; preds = %entry +if.else.248: ; 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.229, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.227 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.249 -if.merge.227: ; preds = %if.else.226, %if.then.225 - %bp = phi { ptr, i64 } [ { ptr @str.227, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] +if.merge.249: ; preds = %if.else.248, %if.then.247 + %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] ret { ptr, i64 } %bp } @@ -3088,20 +3348,20 @@ entry: 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.228, label %if.else.229 + br i1 %icmp, label %if.then.250, label %if.else.251 -if.then.228: ; preds = %entry - br label %if.merge.230 +if.then.250: ; preds = %entry + br label %if.merge.252 -if.else.229: ; preds = %entry +if.else.251: ; 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.232, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 2 }, { ptr, i64 } %callN) - br label %if.merge.230 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 2 }, { ptr, i64 } %callN) + br label %if.merge.252 -if.merge.230: ; preds = %if.else.229, %if.then.228 - %bp = phi { ptr, i64 } [ { ptr @str.230, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] +if.merge.252: ; preds = %if.else.251, %if.then.250 + %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] ret { ptr, i64 } %bp } @@ -3116,20 +3376,20 @@ entry: 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.231, label %if.else.232 + br i1 %icmp, label %if.then.253, label %if.else.254 -if.then.231: ; preds = %entry - br label %if.merge.233 +if.then.253: ; preds = %entry + br label %if.merge.255 -if.else.232: ; preds = %entry +if.else.254: ; 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.235, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.233 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.255 -if.merge.233: ; preds = %if.else.232, %if.then.231 - %bp = phi { ptr, i64 } [ { ptr @str.233, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] +if.merge.255: ; preds = %if.else.254, %if.then.253 + %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] ret { ptr, i64 } %bp } @@ -3144,20 +3404,20 @@ entry: 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.234, label %if.else.235 + br i1 %icmp, label %if.then.256, label %if.else.257 -if.then.234: ; preds = %entry - br label %if.merge.236 +if.then.256: ; preds = %entry + br label %if.merge.258 -if.else.235: ; preds = %entry +if.else.257: ; 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.238, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.236 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.258 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.236, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] ret { ptr, i64 } %bp } @@ -3172,20 +3432,20 @@ entry: 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.237, label %if.else.238 + br i1 %icmp, label %if.then.259, label %if.else.260 -if.then.237: ; preds = %entry - br label %if.merge.239 +if.then.259: ; preds = %entry + br label %if.merge.261 -if.else.238: ; preds = %entry +if.else.260: ; 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.241, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.239 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.261 -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.239, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] ret { ptr, i64 } %bp } @@ -3200,20 +3460,20 @@ entry: 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.240, label %if.else.241 + br i1 %icmp, label %if.then.262, label %if.else.263 -if.then.240: ; preds = %entry - br label %if.merge.242 +if.then.262: ; preds = %entry + br label %if.merge.264 -if.else.241: ; preds = %entry +if.else.263: ; 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.244, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.242 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.264 -if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.242, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } @@ -3228,20 +3488,20 @@ entry: 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.243, label %if.else.244 + br i1 %icmp, label %if.then.265, label %if.else.266 -if.then.243: ; preds = %entry - br label %if.merge.245 +if.then.265: ; preds = %entry + br label %if.merge.267 -if.else.244: ; preds = %entry +if.else.266: ; 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.247, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.245 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.267 -if.merge.245: ; preds = %if.else.244, %if.then.243 - %bp = phi { ptr, i64 } [ { ptr @str.245, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] +if.merge.267: ; preds = %if.else.266, %if.then.265 + %bp = phi { ptr, i64 } [ { ptr @str.251, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] ret { ptr, i64 } %bp } @@ -3256,20 +3516,20 @@ entry: 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.246, label %if.else.247 + br i1 %icmp, label %if.then.268, label %if.else.269 -if.then.246: ; preds = %entry - br label %if.merge.248 +if.then.268: ; preds = %entry + br label %if.merge.270 -if.else.247: ; preds = %entry +if.else.269: ; 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.250, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.248 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.270 -if.merge.248: ; preds = %if.else.247, %if.then.246 - %bp = phi { ptr, i64 } [ { ptr @str.248, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] +if.merge.270: ; preds = %if.else.269, %if.then.268 + %bp = phi { ptr, i64 } [ { ptr @str.254, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] ret { ptr, i64 } %bp } @@ -3281,12 +3541,12 @@ entry: %load = load { i64, i1 }, ptr %alloca, align 8 %oh.has = extractvalue { i64, i1 } %load, 1 %lnot = xor i1 %oh.has, true - br i1 %lnot, label %if.then.254, label %if.merge.255 + br i1 %lnot, label %if.then.276, label %if.merge.277 -if.then.254: ; preds = %entry - ret { ptr, i64 } { ptr @str.251, i64 4 } +if.then.276: ; preds = %entry + ret { ptr, i64 } { ptr @str.257, i64 4 } -if.merge.255: ; preds = %entry +if.merge.277: ; preds = %entry %loadN = load { i64, i1 }, ptr %alloca, align 8 %ou.val = extractvalue { i64, i1 } %loadN, 0 %ba.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %ou.val, 1 @@ -3302,12 +3562,12 @@ entry: %load = load { { ptr, i64 }, i1 }, ptr %alloca, align 8 %oh.has = extractvalue { { ptr, i64 }, i1 } %load, 1 %lnot = xor i1 %oh.has, true - br i1 %lnot, label %if.then.256, label %if.merge.257 + br i1 %lnot, label %if.then.278, label %if.merge.279 -if.then.256: ; preds = %entry - ret { ptr, i64 } { ptr @str.252, i64 4 } +if.then.278: ; preds = %entry + ret { ptr, i64 } { ptr @str.258, i64 4 } -if.merge.257: ; preds = %entry +if.merge.279: ; preds = %entry %loadN = load { { ptr, i64 }, i1 }, ptr %alloca, align 8 %ou.val = extractvalue { { ptr, i64 }, i1 } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 @@ -3326,12 +3586,12 @@ entry: %load = load { i1, i1 }, ptr %alloca, align 1 %oh.has = extractvalue { i1, i1 } %load, 1 %lnot = xor i1 %oh.has, true - br i1 %lnot, label %if.then.258, label %if.merge.259 + br i1 %lnot, label %if.then.280, label %if.merge.281 -if.then.258: ; preds = %entry - ret { ptr, i64 } { ptr @str.253, i64 4 } +if.then.280: ; preds = %entry + ret { ptr, i64 } { ptr @str.259, i64 4 } -if.merge.259: ; preds = %entry +if.merge.281: ; preds = %entry %loadN = load { i1, i1 }, ptr %alloca, align 1 %ou.val = extractvalue { i1, i1 } %loadN, 0 %zN = zext i1 %ou.val to i64 @@ -3341,5 +3601,3 @@ if.merge.259: ; preds = %entry } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/1004-errors-try.ir b/examples/expected/1004-errors-try.ir index e3cfce4..022b131 100644 --- a/examples/expected/1004-errors-try.ir +++ b/examples/expected/1004-errors-try.ir @@ -1,260 +1,267 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [75 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] @tag.str = private constant [1 x i8] zeroinitializer -@tag.str.6 = private constant [4 x i8] c"Bad\00" -@tag.str.7 = private constant [6 x i8] c"Worse\00" -@tag_names = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @tag.str, i64 0 }, { ptr, i64 } { ptr @tag.str.6, i64 3 }, { ptr, i64 } { ptr @tag.str.7, i64 5 }] +@tag.str.7 = private constant [4 x i8] c"Bad\00" +@tag.str.8 = private constant [6 x i8] c"Worse\00" +@tag_names = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @tag.str, i64 0 }, { ptr, i64 } { ptr @tag.str.7, i64 3 }, { ptr, i64 } { ptr @tag.str.8, i64 5 }] @tn.str = private constant [13 x i8] c"\00" -@tn.str.8 = private constant [5 x i8] c"bool\00" -@tn.str.9 = private constant [3 x i8] c"s8\00" -@tn.str.10 = private constant [4 x i8] c"s16\00" -@tn.str.11 = private constant [4 x i8] c"s32\00" -@tn.str.12 = private constant [4 x i8] c"s64\00" -@tn.str.13 = private constant [3 x i8] c"u8\00" -@tn.str.14 = private constant [4 x i8] c"u16\00" -@tn.str.15 = private constant [4 x i8] c"u32\00" -@tn.str.16 = private constant [4 x i8] c"u64\00" -@tn.str.17 = private constant [4 x i8] c"f32\00" -@tn.str.18 = private constant [4 x i8] c"f64\00" -@tn.str.19 = private constant [7 x i8] c"string\00" -@tn.str.20 = private constant [4 x i8] c"Any\00" -@tn.str.21 = private constant [9 x i8] c"noreturn\00" -@tn.str.22 = private constant [6 x i8] c"isize\00" -@tn.str.23 = private constant [6 x i8] c"usize\00" -@tn.str.24 = private constant [5 x i8] c"void\00" -@tn.str.25 = private constant [6 x i8] c"*void\00" -@tn.str.26 = private constant [16 x i8] c"Source_Location\00" -@tn.str.27 = private constant [10 x i8] c"Allocator\00" -@tn.str.28 = private constant [11 x i8] c"CAllocator\00" -@tn.str.29 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.30 = private constant [4 x i8] c"GPA\00" -@tn.str.31 = private constant [5 x i8] c"*GPA\00" -@tn.str.32 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.33 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.34 = private constant [6 x i8] c"Arena\00" -@tn.str.35 = private constant [7 x i8] c"*Arena\00" -@tn.str.36 = private constant [6 x i8] c"[*]u8\00" -@tn.str.37 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.38 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.39 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.40 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.41 = private constant [8 x i8] c"Context\00" -@tn.str.42 = private constant [9 x i8] c"[]string\00" -@tn.str.43 = private constant [2 x i8] c"E\00" -@tn.str.44 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.45 = private constant [5 x i8] c"*s64\00" -@tn.str.46 = private constant [7 x i8] c"**void\00" -@tn.str.47 = private constant [5 x i8] c"*s32\00" -@tn.str.48 = private constant [3 x i8] c"*E\00" -@tn.str.49 = private constant [8 x i8] c"*string\00" -@tn.str.50 = private constant [6 x i8] c"[]Any\00" -@tn.str.51 = private constant [5 x i8] c"*Any\00" -@tn.str.52 = private constant [7 x i8] c"[1]Any\00" -@tn.str.53 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.54 = private constant [7 x i8] c"*[]Any\00" -@tn.str.55 = private constant [4 x i8] c"*u8\00" -@tn.str.56 = private constant [6 x i8] c"*bool\00" -@tn.str.57 = private constant [5 x i8] c"*f64\00" -@tn.str.58 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.59 = private constant [11 x i8] c"*Allocator\00" -@tn.str.60 = private constant [9 x i8] c"*Context\00" -@tn.str.61 = private constant [5 x i8] c"*u32\00" -@tn.str.62 = private constant [10 x i8] c"*[]string\00" -@tn.str.63 = private constant [6 x i8] c"**GPA\00" -@tn.str.64 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.65 = private constant [8 x i8] c"**Arena\00" -@tn.str.66 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.67 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.68 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.69 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.70 = private constant [6 x i8] c"**s64\00" -@tn.str.71 = private constant [8 x i8] c"***void\00" -@tn.str.72 = private constant [6 x i8] c"**s32\00" -@tn.str.73 = private constant [4 x i8] c"**E\00" -@tn.str.74 = private constant [9 x i8] c"**string\00" -@tn.str.75 = private constant [6 x i8] c"**Any\00" -@tn.str.76 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.77 = private constant [8 x i8] c"**[]Any\00" -@tn.str.78 = private constant [5 x i8] c"**u8\00" -@tn.str.79 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [73 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.8, i64 4 }, { ptr, i64 } { ptr @tn.str.9, i64 2 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { ptr, i64 } { ptr @tn.str.13, i64 2 }, { 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 3 }, { ptr, i64 } { ptr @tn.str.19, i64 6 }, { ptr, i64 } { ptr @tn.str.20, i64 3 }, { ptr, i64 } { ptr @tn.str.21, i64 8 }, { ptr, i64 } { ptr @tn.str.22, i64 5 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 4 }, { ptr, i64 } { ptr @tn.str.25, i64 5 }, { ptr, i64 } { ptr @tn.str.26, i64 15 }, { ptr, i64 } { ptr @tn.str.27, i64 9 }, { ptr, i64 } { ptr @tn.str.28, i64 10 }, { ptr, i64 } { ptr @tn.str.29, i64 11 }, { ptr, i64 } { ptr @tn.str.30, i64 3 }, { ptr, i64 } { ptr @tn.str.31, i64 4 }, { ptr, i64 } { ptr @tn.str.32, i64 10 }, { ptr, i64 } { ptr @tn.str.33, i64 11 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 6 }, { ptr, i64 } { ptr @tn.str.36, i64 5 }, { ptr, i64 } { ptr @tn.str.37, i64 8 }, { ptr, i64 } { ptr @tn.str.38, i64 9 }, { ptr, i64 } { ptr @tn.str.39, i64 17 }, { ptr, i64 } { ptr @tn.str.40, i64 18 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 8 }, { ptr, i64 } { ptr @tn.str.43, i64 1 }, { ptr, i64 } { ptr @tn.str.44, i64 12 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 2 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 5 }, { ptr, i64 } { ptr @tn.str.51, i64 4 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 3 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 16 }, { ptr, i64 } { ptr @tn.str.59, i64 10 }, { ptr, i64 } { ptr @tn.str.60, i64 8 }, { ptr, i64 } { ptr @tn.str.61, i64 4 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 5 }, { ptr, i64 } { ptr @tn.str.64, i64 12 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 10 }, { ptr, i64 } { ptr @tn.str.68, i64 19 }, { ptr, i64 } { ptr @tn.str.69, i64 13 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 3 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 8 }, { ptr, i64 } { ptr @tn.str.77, i64 7 }, { ptr, i64 } { ptr @tn.str.78, i64 4 }, { ptr, i64 } { ptr @tn.str.79, i64 6 }] -@str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@tn.str.9 = private constant [5 x i8] c"bool\00" +@tn.str.10 = private constant [3 x i8] c"s8\00" +@tn.str.11 = private constant [4 x i8] c"s16\00" +@tn.str.12 = private constant [4 x i8] c"s32\00" +@tn.str.13 = private constant [4 x i8] c"s64\00" +@tn.str.14 = private constant [3 x i8] c"u8\00" +@tn.str.15 = private constant [4 x i8] c"u16\00" +@tn.str.16 = private constant [4 x i8] c"u32\00" +@tn.str.17 = private constant [4 x i8] c"u64\00" +@tn.str.18 = private constant [4 x i8] c"f32\00" +@tn.str.19 = private constant [4 x i8] c"f64\00" +@tn.str.20 = private constant [7 x i8] c"string\00" +@tn.str.21 = private constant [4 x i8] c"Any\00" +@tn.str.22 = private constant [9 x i8] c"noreturn\00" +@tn.str.23 = private constant [6 x i8] c"isize\00" +@tn.str.24 = private constant [6 x i8] c"usize\00" +@tn.str.25 = private constant [5 x i8] c"void\00" +@tn.str.26 = private constant [6 x i8] c"*void\00" +@tn.str.27 = private constant [16 x i8] c"Source_Location\00" +@tn.str.28 = private constant [10 x i8] c"Allocator\00" +@tn.str.29 = private constant [11 x i8] c"CAllocator\00" +@tn.str.30 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.31 = private constant [4 x i8] c"GPA\00" +@tn.str.32 = private constant [5 x i8] c"*GPA\00" +@tn.str.33 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.34 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.35 = private constant [6 x i8] c"Arena\00" +@tn.str.36 = private constant [7 x i8] c"*Arena\00" +@tn.str.37 = private constant [6 x i8] c"[*]u8\00" +@tn.str.38 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.39 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.40 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.41 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.42 = private constant [8 x i8] c"Context\00" +@tn.str.43 = private constant [7 x i8] c"[4]s64\00" +@tn.str.44 = private constant [9 x i8] c"[]string\00" +@tn.str.45 = private constant [2 x i8] c"E\00" +@tn.str.46 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.47 = private constant [5 x i8] c"*s64\00" +@tn.str.48 = private constant [7 x i8] c"**void\00" +@tn.str.49 = private constant [5 x i8] c"*s32\00" +@tn.str.50 = private constant [3 x i8] c"*E\00" +@tn.str.51 = private constant [8 x i8] c"*string\00" +@tn.str.52 = private constant [6 x i8] c"[]Any\00" +@tn.str.53 = private constant [5 x i8] c"*Any\00" +@tn.str.54 = private constant [7 x i8] c"[1]Any\00" +@tn.str.55 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.56 = private constant [7 x i8] c"*[]Any\00" +@tn.str.57 = private constant [4 x i8] c"*u8\00" +@tn.str.58 = private constant [6 x i8] c"*bool\00" +@tn.str.59 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.60 = private constant [5 x i8] c"*f64\00" +@tn.str.61 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.62 = private constant [11 x i8] c"*Allocator\00" +@tn.str.63 = private constant [9 x i8] c"*Context\00" +@tn.str.64 = private constant [5 x i8] c"*u32\00" +@tn.str.65 = private constant [10 x i8] c"*[]string\00" +@tn.str.66 = private constant [6 x i8] c"**GPA\00" +@tn.str.67 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.68 = private constant [8 x i8] c"**Arena\00" +@tn.str.69 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.70 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.71 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.72 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.73 = private constant [6 x i8] c"**s64\00" +@tn.str.74 = private constant [8 x i8] c"***void\00" +@tn.str.75 = private constant [6 x i8] c"**s32\00" +@tn.str.76 = private constant [4 x i8] c"**E\00" +@tn.str.77 = private constant [9 x i8] c"**string\00" +@tn.str.78 = private constant [6 x i8] c"**Any\00" +@tn.str.79 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.80 = private constant [8 x i8] c"**[]Any\00" +@tn.str.81 = private constant [5 x i8] c"**u8\00" +@tn.str.82 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [75 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.9, i64 4 }, { ptr, i64 } { ptr @tn.str.10, i64 2 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { ptr, i64 } { ptr @tn.str.13, i64 3 }, { ptr, i64 } { ptr @tn.str.14, i64 2 }, { 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 3 }, { ptr, i64 } { ptr @tn.str.19, i64 3 }, { ptr, i64 } { ptr @tn.str.20, i64 6 }, { ptr, i64 } { ptr @tn.str.21, i64 3 }, { ptr, i64 } { ptr @tn.str.22, i64 8 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 5 }, { ptr, i64 } { ptr @tn.str.25, i64 4 }, { ptr, i64 } { ptr @tn.str.26, i64 5 }, { ptr, i64 } { ptr @tn.str.27, i64 15 }, { ptr, i64 } { ptr @tn.str.28, i64 9 }, { ptr, i64 } { ptr @tn.str.29, i64 10 }, { ptr, i64 } { ptr @tn.str.30, i64 11 }, { ptr, i64 } { ptr @tn.str.31, i64 3 }, { ptr, i64 } { ptr @tn.str.32, i64 4 }, { ptr, i64 } { ptr @tn.str.33, i64 10 }, { ptr, i64 } { ptr @tn.str.34, i64 11 }, { ptr, i64 } { ptr @tn.str.35, i64 5 }, { ptr, i64 } { ptr @tn.str.36, i64 6 }, { ptr, i64 } { ptr @tn.str.37, i64 5 }, { ptr, i64 } { ptr @tn.str.38, i64 8 }, { ptr, i64 } { ptr @tn.str.39, i64 9 }, { ptr, i64 } { ptr @tn.str.40, i64 17 }, { ptr, i64 } { ptr @tn.str.41, i64 18 }, { ptr, i64 } { ptr @tn.str.42, i64 7 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 8 }, { ptr, i64 } { ptr @tn.str.45, i64 1 }, { ptr, i64 } { ptr @tn.str.46, i64 12 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 2 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 4 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 3 }, { ptr, i64 } { ptr @tn.str.58, i64 5 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 4 }, { ptr, i64 } { ptr @tn.str.61, i64 16 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 8 }, { ptr, i64 } { ptr @tn.str.64, i64 4 }, { ptr, i64 } { ptr @tn.str.65, i64 9 }, { ptr, i64 } { ptr @tn.str.66, i64 5 }, { ptr, i64 } { ptr @tn.str.67, i64 12 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 6 }, { ptr, i64 } { ptr @tn.str.70, i64 10 }, { ptr, i64 } { ptr @tn.str.71, i64 19 }, { ptr, i64 } { ptr @tn.str.72, i64 13 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 7 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 3 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }, { ptr, i64 } { ptr @tn.str.80, i64 7 }, { ptr, i64 } { ptr @tn.str.81, i64 4 }, { ptr, i64 } { ptr @tn.str.82, i64 6 }] @str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.84 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.85 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.86 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.87 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.88 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.89 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.84 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.85 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.86 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.87 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.88 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.89 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.90 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.91 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.92 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.93 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.94 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.95 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.96 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.97 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.98 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.99 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.100 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.101 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @frame.str = private unnamed_addr constant [19 x i8] c"1004-errors-try.sx\00" -@frame.str.99 = private unnamed_addr constant [6 x i8] c"inner\00" -@frame.str.100 = private unnamed_addr constant [34 x i8] c" if n < 0 { raise error.Bad; }\00" -@trace.frame = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 18 }, i32 13, i32 16, { ptr, i64 } { ptr @frame.str.99, i64 5 }, { ptr, i64 } { ptr @frame.str.100, i64 33 } } -@frame.str.101 = private unnamed_addr constant [6 x i8] c"outer\00" -@frame.str.102 = private unnamed_addr constant [18 x i8] c" try inner(n);\00" -@trace.frame.103 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 18 }, i32 19, i32 5, { ptr, i64 } { ptr @frame.str.101, i64 5 }, { ptr, i64 } { ptr @frame.str.102, i64 17 } } -@str.104 = private unnamed_addr constant [16 x i8] c"try result: {}\0A\00", align 1 -@str.105 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.106 = private unnamed_addr constant [16 x i8] c"try result: {}\0A\00", align 1 -@str.107 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.108 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.109 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@frame.str.102 = private unnamed_addr constant [6 x i8] c"inner\00" +@frame.str.103 = private unnamed_addr constant [34 x i8] c" if n < 0 { raise error.Bad; }\00" +@trace.frame = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 18 }, i32 13, i32 16, { ptr, i64 } { ptr @frame.str.102, i64 5 }, { ptr, i64 } { ptr @frame.str.103, i64 33 } } +@frame.str.104 = private unnamed_addr constant [6 x i8] c"outer\00" +@frame.str.105 = private unnamed_addr constant [18 x i8] c" try inner(n);\00" +@trace.frame.106 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 18 }, i32 19, i32 5, { ptr, i64 } { ptr @frame.str.104, i64 5 }, { ptr, i64 } { ptr @frame.str.105, i64 17 } } +@str.107 = private unnamed_addr constant [16 x i8] c"try result: {}\0A\00", align 1 +@str.108 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.109 = private unnamed_addr constant [16 x i8] c"try result: {}\0A\00", align 1 +@str.110 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.111 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.112 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.113 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.111 = private constant [5 x i8] c"line\00" -@fld.str.112 = private constant [4 x i8] c"col\00" -@fld.str.113 = 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.111, i64 4 }, { ptr, i64 } { ptr @fld.str.112, i64 3 }, { ptr, i64 } { ptr @fld.str.113, i64 4 }] -@str.114 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.115 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.116 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.117 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.119 = private constant [4 x i8] c"ctx\00" -@fld.str.120 = private constant [6 x i8] c"alloc\00" -@fld.str.121 = private constant [8 x i8] c"dealloc\00" -@field_names.122 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.119, i64 3 }, { ptr, i64 } { ptr @fld.str.120, i64 5 }, { ptr, i64 } { ptr @fld.str.121, i64 7 }] -@str.123 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.124 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.125 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.126 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.128 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.130 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.134 = private constant [12 x i8] c"alloc_count\00" -@field_names.135 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 11 }] -@str.136 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.137 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.138 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.139 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.141 = private constant [5 x i8] c"next\00" -@fld.str.142 = private constant [4 x i8] c"cap\00" -@field_names.143 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.141, i64 4 }, { ptr, i64 } { ptr @fld.str.142, i64 3 }] -@str.144 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.145 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.146 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.147 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.149 = private constant [6 x i8] c"first\00" -@fld.str.150 = private constant [10 x i8] c"end_index\00" -@fld.str.151 = private constant [7 x i8] c"parent\00" -@field_names.152 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.149, i64 5 }, { ptr, i64 } { ptr @fld.str.150, i64 9 }, { ptr, i64 } { ptr @fld.str.151, i64 6 }] -@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.154 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.158 = private constant [4 x i8] c"buf\00" -@fld.str.159 = private constant [4 x i8] c"len\00" -@fld.str.160 = private constant [4 x i8] c"pos\00" -@field_names.161 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 3 }, { ptr, i64 } { ptr @fld.str.159, i64 3 }, { ptr, i64 } { ptr @fld.str.160, i64 3 }] -@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.163 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.167 = private constant [7 x i8] c"parent\00" -@fld.str.168 = private constant [12 x i8] c"alloc_count\00" -@fld.str.169 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.170 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.171 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 6 }, { ptr, i64 } { ptr @fld.str.168, i64 11 }, { ptr, i64 } { ptr @fld.str.169, i64 13 }, { ptr, i64 } { ptr @fld.str.170, i64 17 }] -@str.172 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.173 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.174 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.175 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.176 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.177 = private constant [10 x i8] c"allocator\00" -@fld.str.178 = private constant [5 x i8] c"data\00" -@field_names.179 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.177, i64 9 }, { ptr, i64 } { ptr @fld.str.178, i64 4 }] -@str.180 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.181 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.182 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.183 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.114 = private constant [5 x i8] c"line\00" +@fld.str.115 = private constant [4 x i8] c"col\00" +@fld.str.116 = 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.114, i64 4 }, { ptr, i64 } { ptr @fld.str.115, i64 3 }, { ptr, i64 } { ptr @fld.str.116, i64 4 }] +@str.117 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.118 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.119 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.120 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.122 = private constant [4 x i8] c"ctx\00" +@fld.str.123 = private constant [6 x i8] c"alloc\00" +@fld.str.124 = private constant [8 x i8] c"dealloc\00" +@field_names.125 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.122, i64 3 }, { ptr, i64 } { ptr @fld.str.123, i64 5 }, { ptr, i64 } { ptr @fld.str.124, i64 7 }] +@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.127 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.131 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.132 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.133 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.134 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.135 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.136 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.137 = private constant [12 x i8] c"alloc_count\00" +@field_names.138 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.137, i64 11 }] +@str.139 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.140 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.141 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.142 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.143 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.144 = private constant [5 x i8] c"next\00" +@fld.str.145 = private constant [4 x i8] c"cap\00" +@field_names.146 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.144, i64 4 }, { ptr, i64 } { ptr @fld.str.145, i64 3 }] +@str.147 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.148 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.149 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.150 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.151 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.152 = private constant [6 x i8] c"first\00" +@fld.str.153 = private constant [10 x i8] c"end_index\00" +@fld.str.154 = private constant [7 x i8] c"parent\00" +@field_names.155 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.152, i64 5 }, { ptr, i64 } { ptr @fld.str.153, i64 9 }, { ptr, i64 } { ptr @fld.str.154, i64 6 }] +@str.156 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.157 = private unnamed_addr constant [9 x i8] c"BufAlloc\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 [4 x i8] c"buf\00" +@fld.str.162 = private constant [4 x i8] c"len\00" +@fld.str.163 = private constant [4 x i8] c"pos\00" +@field_names.164 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.161, i64 3 }, { ptr, i64 } { ptr @fld.str.162, i64 3 }, { ptr, i64 } { ptr @fld.str.163, i64 3 }] +@str.165 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.166 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.167 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.168 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.170 = private constant [7 x i8] c"parent\00" +@fld.str.171 = private constant [12 x i8] c"alloc_count\00" +@fld.str.172 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.173 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.174 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.170, i64 6 }, { ptr, i64 } { ptr @fld.str.171, i64 11 }, { ptr, i64 } { ptr @fld.str.172, i64 13 }, { ptr, i64 } { ptr @fld.str.173, i64 17 }] +@str.175 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.176 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.177 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.178 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.179 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.180 = private constant [10 x i8] c"allocator\00" +@fld.str.181 = private constant [5 x i8] c"data\00" +@field_names.182 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.180, i64 9 }, { ptr, i64 } { ptr @fld.str.181, i64 4 }] +@str.183 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.184 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.185 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.186 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.187 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.188 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.189 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.190 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.191 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.192 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.193 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.194 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.195 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.190 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.191 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.192 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.193 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.194 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.195 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.196 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.197 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.197 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.198 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.199 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.200 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.200 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.201 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.202 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.203 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.203 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.204 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.205 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.206 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.206 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.207 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.208 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.209 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.209 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.210 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.211 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.212 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.212 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.213 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.214 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.215 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.215 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.216 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.217 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.218 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.218 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.219 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.220 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.221 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.221 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.222 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.223 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.224 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.224 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.225 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.226 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.227 = private unnamed_addr constant [11 x i8] c"*error_set\00", align 1 +@str.227 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.228 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.229 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.230 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.230 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 @str.231 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.232 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.233 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.233 = private unnamed_addr constant [11 x i8] c"*error_set\00", align 1 @str.234 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.235 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.236 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.236 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.237 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.238 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.239 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.239 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.240 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.241 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.242 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.242 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.243 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.244 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.245 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.245 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.246 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.247 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.248 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.249 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.250 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.251 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.252 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -393,38 +400,43 @@ if.merge.25: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.26, label %if.else.27 - -if.then.26: ; preds = %if.merge.25 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.28 - -if.else.27: ; preds = %if.merge.25 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.28 - -if.merge.28: ; preds = %if.else.27, %if.then.26 - %bp = phi i64 [ %sub, %if.then.26 ], [ %loadN, %if.else.27 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.29 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.26 -while.hdr.29: ; preds = %while.body.30, %if.merge.28 +while.hdr.26: ; preds = %if.merge.30, %if.merge.25 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.30, label %while.exit.31 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.27, label %while.exit.28 -while.body.30: ; preds = %while.hdr.29 +while.body.27: ; preds = %while.hdr.26 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.29, label %if.merge.30 + +while.exit.28: ; preds = %while.hdr.26 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.31, label %if.merge.32 + +if.then.29: ; preds = %while.body.27 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.30 + +if.merge.30: ; preds = %if.then.29, %while.body.27 + %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 @@ -437,50 +449,178 @@ while.body.30: ; preds = %while.hdr.29 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.29 + br label %while.hdr.26 -while.exit.31: ; preds = %while.hdr.29 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.32, label %if.merge.33 - -if.then.32: ; preds = %while.exit.31 +if.then.31: ; preds = %while.exit.28 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.33 + br label %if.merge.32 -if.merge.33: ; preds = %if.then.32, %while.exit.31 +if.merge.32: ; preds = %if.then.31, %while.exit.28 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.66, label %if.merge.67 + +if.then.66: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.67: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.76 + +while.hdr.76: ; preds = %while.exit.87, %if.merge.67 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.80, label %or.rhs.79 + +while.body.77: ; preds = %or.merge.84 + %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.85 + +while.exit.78: ; preds = %or.merge.84 + %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.79: ; preds = %while.hdr.76 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.80 + +or.merge.80: ; preds = %or.rhs.79, %while.hdr.76 + %bp = phi i1 [ true, %while.hdr.76 ], [ %icmpN, %or.rhs.79 ] + br i1 %bp, label %or.merge.82, label %or.rhs.81 + +or.rhs.81: ; preds = %or.merge.80 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.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 %or.merge.84, label %or.rhs.83 + +or.rhs.83: ; preds = %or.merge.82 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.84 + +or.merge.84: ; preds = %or.rhs.83, %or.merge.82 + %bpN = phi i1 [ true, %or.merge.82 ], [ %icmpN, %or.rhs.83 ] + br i1 %bpN, label %while.body.77, label %while.exit.78 + +while.hdr.85: ; preds = %while.body.86, %while.body.77 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.86, label %while.exit.87 + +while.body.86: ; preds = %while.hdr.85 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.85 + +while.exit.87: ; preds = %while.hdr.85 + %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.76 +} + ; 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.64, label %if.else.65 + br i1 %load, label %if.then.88, label %if.else.89 -if.then.64: ; preds = %entry - br label %if.merge.66 +if.then.88: ; preds = %entry + br label %if.merge.90 -if.else.65: ; preds = %entry - br label %if.merge.66 +if.else.89: ; preds = %entry + br label %if.merge.90 -if.merge.66: ; preds = %if.else.65, %if.then.64 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.64 ], [ { ptr @str.2, i64 5 }, %if.else.65 ] +if.merge.90: ; preds = %if.else.89, %if.then.88 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.88 ], [ { ptr @str.3, i64 5 }, %if.else.89 ] ret { ptr, i64 } %bp } @@ -494,19 +634,19 @@ entry: %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.70, label %if.else.71 + br i1 %loadN, label %if.then.94, label %if.else.95 -if.then.70: ; preds = %entry +if.then.94: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.72 + br label %if.merge.96 -if.else.71: ; preds = %entry +if.else.95: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.72 + br label %if.merge.96 -if.merge.72: ; preds = %if.else.71, %if.then.70 - %bp = phi double [ %fsub, %if.then.70 ], [ %loadN, %if.else.71 ] +if.merge.96: ; preds = %if.else.95, %if.then.94 + %bp = phi double [ %fsub, %if.then.94 ], [ %loadN, %if.else.95 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -523,15 +663,15 @@ if.merge.72: ; preds = %if.else.71, %if.the 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.73, label %if.merge.74 + br i1 %icmp, label %if.then.97, label %if.merge.98 -if.then.73: ; preds = %if.merge.72 +if.then.97: ; preds = %if.merge.96 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.74 + br label %if.merge.98 -if.merge.74: ; preds = %if.then.73, %if.merge.72 +if.merge.98: ; preds = %if.then.97, %if.merge.96 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -549,16 +689,16 @@ if.merge.74: ; preds = %if.then.73, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.75, label %if.else.76 + br i1 %loadN, label %if.then.99, label %if.else.100 -if.then.75: ; preds = %if.merge.74 - br label %if.merge.77 +if.then.99: ; preds = %if.merge.98 + br label %if.merge.101 -if.else.76: ; preds = %if.merge.74 - br label %if.merge.77 +if.else.100: ; preds = %if.merge.98 + br label %if.merge.101 -if.merge.77: ; preds = %if.else.76, %if.then.75 - %bpN = phi i64 [ 1, %if.then.75 ], [ 0, %if.else.76 ] +if.merge.101: ; preds = %if.else.100, %if.then.99 + %bpN = phi i64 [ 1, %if.then.99 ], [ 0, %if.else.100 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -575,17 +715,17 @@ if.merge.77: ; preds = %if.else.76, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.78, label %if.merge.79 + br i1 %loadN, label %if.then.102, label %if.merge.103 -if.then.78: ; preds = %if.merge.77 +if.then.102: ; preds = %if.merge.101 %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.79 + br label %if.merge.103 -if.merge.79: ; preds = %if.then.78, %if.merge.77 +if.merge.103: ; preds = %if.then.102, %if.merge.101 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -648,39 +788,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.192 + br label %while.hdr.214 -while.hdr.192: ; preds = %if.merge.197, %entry +while.hdr.214: ; preds = %if.merge.219, %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.193, label %while.exit.194 + br i1 %icmp, label %while.body.215, label %while.exit.216 -while.body.193: ; preds = %while.hdr.192 +while.body.215: ; preds = %while.hdr.214 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.195, label %if.else.196 + br i1 %icmpN, label %if.then.217, label %if.else.218 -while.exit.194: ; preds = %while.hdr.192 +while.exit.216: ; preds = %while.hdr.214 ret void -if.then.195: ; preds = %while.body.193 +if.then.217: ; preds = %while.body.215 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.197 + br label %if.merge.219 -if.else.196: ; preds = %while.body.193 +if.else.218: ; preds = %while.body.215 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.197 + br label %if.merge.219 -if.merge.197: ; preds = %if.else.196, %if.then.195 - %bp = phi i64 [ %addN, %if.then.195 ], [ %addN, %if.else.196 ] +if.merge.219: ; preds = %if.else.218, %if.then.217 + %bp = phi i64 [ %addN, %if.then.217 ], [ %addN, %if.else.218 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -693,37 +833,29 @@ if.merge.197: ; preds = %if.else.196, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.192 + br label %while.hdr.214 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.182, label %if.merge.183 - -if.then.182: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.183: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.184, label %if.merge.185 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.68, label %if.merge.69 -if.then.184: ; preds = %if.merge.183 +if.then.68: ; 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.185 + br label %if.merge.69 -if.merge.185: ; preds = %if.then.184, %if.merge.183 +if.merge.69: ; preds = %if.then.68, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -736,15 +868,15 @@ if.merge.185: ; preds = %if.then.184, %if.me 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.186, label %if.merge.187 + br i1 %icmpN, label %if.then.70, label %if.merge.71 -if.then.186: ; preds = %if.merge.185 +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.187 + br label %if.merge.71 -if.merge.187: ; preds = %if.then.186, %if.merge.185 +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 @@ -757,15 +889,15 @@ if.merge.187: ; preds = %if.then.186, %if.me 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.188, label %if.merge.189 + br i1 %icmpN, label %if.then.72, label %if.merge.73 -if.then.188: ; preds = %if.merge.187 +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.189 + br label %if.merge.73 -if.merge.189: ; preds = %if.then.188, %if.merge.187 +if.merge.73: ; preds = %if.then.72, %if.merge.71 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -778,65 +910,116 @@ if.merge.189: ; preds = %if.then.188, %if.me 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.190, label %if.merge.191 + br i1 %icmpN, label %if.then.74, label %if.merge.75 -if.then.190: ; preds = %if.merge.189 +if.then.74: ; preds = %if.merge.73 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.191 + br label %if.merge.75 -if.merge.191: ; preds = %if.then.190, %if.merge.189 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.75: ; preds = %if.then.74, %if.merge.73 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.212, label %if.merge.213 + +if.then.212: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.213: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.198 + br label %while.hdr.220 -while.hdr.198: ; preds = %if.merge.202, %if.merge.191 +while.hdr.220: ; preds = %if.merge.224, %if.merge.213 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.199, label %while.exit.200 + br i1 %icmpN, label %while.body.221, label %while.exit.222 -while.body.199: ; preds = %while.hdr.198 +while.body.221: ; preds = %while.hdr.220 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.201, label %if.merge.202 + br i1 %icmpN, label %if.then.223, label %if.merge.224 -while.exit.200: ; preds = %if.then.201, %while.hdr.198 +while.exit.222: ; preds = %if.then.223, %while.hdr.220 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.201: ; preds = %while.body.199 - br label %while.exit.200 +if.then.223: ; preds = %while.body.221 + br label %while.exit.222 -if.merge.202: ; preds = %while.body.199 +if.merge.224: ; preds = %while.body.221 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.198 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.220 } ; Function Attrs: nounwind @@ -915,7 +1098,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -923,478 +1106,505 @@ entry: 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.63 [ - i64 17, label %match.arm.49 - i64 2, label %match.arm.50 - i64 3, label %match.arm.50 - i64 4, label %match.arm.50 - i64 5, label %match.arm.50 - i64 6, label %match.arm.50 - i64 7, label %match.arm.50 - i64 8, label %match.arm.50 - i64 9, label %match.arm.50 - i64 16, label %match.arm.50 - i64 15, label %match.arm.50 - i64 12, label %match.arm.51 - i64 1, label %match.arm.52 - i64 10, label %match.arm.53 - i64 11, label %match.arm.53 - i64 19, label %match.arm.54 - i64 20, label %match.arm.54 - i64 21, label %match.arm.54 - i64 23, label %match.arm.54 - i64 25, label %match.arm.54 - i64 27, label %match.arm.54 - i64 30, label %match.arm.54 - i64 32, label %match.arm.54 - i64 34, label %match.arm.54 - i64 36, label %match.arm.56 - i64 45, label %match.arm.58 - i64 35, label %match.arm.59 + switch i64 %ua.raw, label %match.unr.62 [ + i64 17, label %match.arm.48 + i64 2, label %match.arm.49 + i64 3, label %match.arm.49 + i64 4, label %match.arm.49 + i64 5, label %match.arm.49 + i64 6, label %match.arm.49 + i64 7, label %match.arm.49 + i64 8, label %match.arm.49 + i64 9, label %match.arm.49 + i64 16, label %match.arm.49 + i64 15, label %match.arm.49 + i64 12, label %match.arm.50 + i64 1, label %match.arm.51 + i64 10, label %match.arm.52 + i64 11, label %match.arm.52 + i64 19, label %match.arm.53 + i64 20, label %match.arm.53 + i64 21, label %match.arm.53 + i64 23, label %match.arm.53 + i64 25, label %match.arm.53 + i64 27, label %match.arm.53 + i64 30, label %match.arm.53 + i64 32, label %match.arm.53 + i64 34, label %match.arm.53 + i64 37, label %match.arm.55 + i64 35, label %match.arm.57 + i64 46, label %match.arm.57 + i64 36, label %match.arm.58 + i64 44, label %match.arm.58 + i64 18, label %match.arm.59 + i64 22, label %match.arm.59 + i64 24, label %match.arm.59 + i64 26, label %match.arm.59 + i64 28, label %match.arm.59 + i64 29, label %match.arm.59 + i64 31, label %match.arm.59 + i64 33, label %match.arm.59 + i64 38, label %match.arm.59 + i64 39, label %match.arm.59 + i64 40, label %match.arm.59 + i64 41, label %match.arm.59 + i64 42, label %match.arm.59 i64 43, label %match.arm.59 - i64 18, label %match.arm.60 - i64 22, label %match.arm.60 - i64 24, label %match.arm.60 - i64 26, label %match.arm.60 - i64 28, label %match.arm.60 - i64 29, label %match.arm.60 - i64 31, label %match.arm.60 - i64 33, label %match.arm.60 - i64 37, label %match.arm.60 - i64 38, label %match.arm.60 - i64 39, label %match.arm.60 - i64 40, label %match.arm.60 - i64 41, label %match.arm.60 - i64 42, label %match.arm.60 - i64 44, label %match.arm.60 - i64 46, label %match.arm.60 - i64 47, label %match.arm.60 - i64 48, label %match.arm.60 - i64 49, label %match.arm.60 - i64 13, label %match.arm.62 + i64 45, label %match.arm.59 + i64 47, label %match.arm.59 + i64 48, label %match.arm.59 + i64 49, label %match.arm.59 + i64 50, label %match.arm.59 + i64 13, label %match.arm.61 ] -match.merge.48: ; preds = %dispatch.merge.158, %dispatch.merge.144, %dispatch.merge.136, %dispatch.merge.80, %float.merge.69, %match.unr.63, %match.arm.62, %match.arm.56, %match.arm.52, %match.arm.51, %match.arm.50, %match.arm.49 +match.merge.47: ; preds = %dispatch.merge.188, %dispatch.merge.174, %dispatch.merge.160, %dispatch.merge.104, %float.merge.93, %if.merge.65, %match.unr.62, %match.arm.61, %match.arm.55, %match.arm.51, %match.arm.50, %match.arm.48 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.49: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.48 +match.arm.48: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.47 -match.arm.50: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.48 +match.arm.49: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [75 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.63, label %if.else.64 -match.arm.51: ; preds = %entry +match.arm.50: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.48 + br label %match.merge.47 -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.48 + %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.47 -match.arm.53: ; preds = %entry, %entry +match.arm.52: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.67, label %fN.unbox.68 + br i1 %icmp, label %fN.unbox.91, label %fN.unbox.92 -match.arm.54: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.53: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.81 [ - i64 19, label %dispatch.case.82 - i64 20, label %dispatch.case.83 - i64 21, label %dispatch.case.84 - i64 23, label %dispatch.case.85 - i64 25, label %dispatch.case.86 - i64 27, label %dispatch.case.87 - i64 30, label %dispatch.case.88 - i64 32, label %dispatch.case.89 - i64 34, label %dispatch.case.90 + switch i64 %ua.raw16, label %dispatch.default.105 [ + i64 19, label %dispatch.case.106 + i64 20, label %dispatch.case.107 + i64 21, label %dispatch.case.108 + i64 23, label %dispatch.case.109 + i64 25, label %dispatch.case.110 + i64 27, label %dispatch.case.111 + i64 30, label %dispatch.case.112 + i64 32, label %dispatch.case.113 + i64 34, label %dispatch.case.114 ] -match.arm.55: ; No predecessors! +match.arm.54: ; No predecessors! unreachable -match.arm.56: ; preds = %entry +match.arm.55: ; preds = %entry %allocaN = alloca i32, align 4 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw23 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw23 to i32 + %ua.raw21 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw21 to i32 store i32 %trN, ptr %allocaN, align 4 %loadN = load i32, ptr %allocaN, align 4 %etn.idx = zext i32 %loadN to i64 %etn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @tag_names, i64 0, i64 %etn.idx %etn.load = load { ptr, i64 }, ptr %etn.gep, align 8 store { ptr, i64 } %etn.load, ptr %allocaN, align 8 - br label %match.merge.48 + br label %match.merge.47 -match.arm.57: ; No predecessors! +match.arm.56: ; No predecessors! unreachable -match.arm.58: ; preds = %entry +match.arm.57: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw27 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw25 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw27, label %dispatch.default.137 [ - i64 45, label %dispatch.case.138 + switch i64 %ua.raw25, label %dispatch.default.161 [ + i64 35, label %dispatch.case.162 + i64 46, label %dispatch.case.163 ] -match.arm.59: ; preds = %entry, %entry +match.arm.58: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw31 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw29 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw31, label %dispatch.default.145 [ - i64 35, label %dispatch.case.146 - i64 43, label %dispatch.case.147 + switch i64 %ua.raw29, label %dispatch.default.175 [ + i64 36, label %dispatch.case.176 + i64 44, label %dispatch.case.177 ] -match.arm.60: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.59: ; preds = %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.raw35 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw35, label %dispatch.default.159 [ - i64 18, label %dispatch.case.160 - i64 22, label %dispatch.case.161 - i64 24, label %dispatch.case.162 - i64 26, label %dispatch.case.163 - i64 28, label %dispatch.case.164 - i64 29, label %dispatch.case.165 - i64 31, label %dispatch.case.166 - i64 33, label %dispatch.case.167 - i64 37, label %dispatch.case.168 - i64 38, label %dispatch.case.169 - i64 39, label %dispatch.case.170 - i64 40, label %dispatch.case.171 - i64 41, label %dispatch.case.172 - i64 42, label %dispatch.case.173 - i64 44, label %dispatch.case.174 - i64 46, label %dispatch.case.175 - i64 47, label %dispatch.case.176 - i64 48, label %dispatch.case.177 - i64 49, label %dispatch.case.178 + switch i64 %ua.raw33, label %dispatch.default.189 [ + i64 18, label %dispatch.case.190 + i64 22, label %dispatch.case.191 + i64 24, label %dispatch.case.192 + i64 26, label %dispatch.case.193 + i64 28, label %dispatch.case.194 + i64 29, label %dispatch.case.195 + i64 31, label %dispatch.case.196 + i64 33, label %dispatch.case.197 + i64 38, label %dispatch.case.198 + i64 39, label %dispatch.case.199 + i64 40, label %dispatch.case.200 + i64 41, label %dispatch.case.201 + i64 42, label %dispatch.case.202 + i64 43, label %dispatch.case.203 + i64 45, label %dispatch.case.204 + i64 47, label %dispatch.case.205 + i64 48, label %dispatch.case.206 + i64 49, label %dispatch.case.207 + i64 50, label %dispatch.case.208 ] -match.arm.61: ; No predecessors! +match.arm.60: ; No predecessors! unreachable -match.arm.62: ; preds = %entry +match.arm.61: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [73 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [75 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.48 + br label %match.merge.47 -match.unr.63: ; preds = %entry - br label %match.merge.48 +match.unr.62: ; preds = %entry + br label %match.merge.47 -f32.unbox.67: ; preds = %match.arm.53 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw39 to i32 +if.then.63: ; preds = %match.arm.49 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw38) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.65 + +if.else.64: ; preds = %match.arm.49 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw41 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw41) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.65 + +if.merge.65: ; preds = %if.else.64, %if.then.63 + br label %match.merge.47 + +f32.unbox.91: ; preds = %match.arm.52 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw43 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.69 + br label %float.merge.93 -f64.unbox.68: ; preds = %match.arm.53 - %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw40 to double +f64.unbox.92: ; preds = %match.arm.52 + %ua.raw44 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw44 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.69 + br label %float.merge.93 -float.merge.69: ; preds = %fN.unbox.68, %fN.unbox.67 +float.merge.93: ; preds = %fN.unbox.92, %fN.unbox.91 %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.48 + br label %match.merge.47 -dispatch.merge.80: ; preds = %dispatch.case.90, %dispatch.case.89, %dispatch.case.88, %dispatch.case.87, %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.default.81 +dispatch.merge.104: ; preds = %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.default.105 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.48 + br label %match.merge.47 -dispatch.default.81: ; preds = %match.arm.54 - store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.80 +dispatch.default.105: ; preds = %match.arm.53 + store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.104 -dispatch.case.82: ; preds = %match.arm.54 - %ua.raw44 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr45 = inttoptr i64 %ua.raw44 to ptr - %ua.load46 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr45, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load46) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 - -dispatch.case.83: ; preds = %match.arm.54 +dispatch.case.106: ; preds = %match.arm.53 %ua.raw48 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr49 = inttoptr i64 %ua.raw48 to ptr - %ua.load50 = load { ptr, ptr, ptr }, ptr %ua.ptr49, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load50) + %ua.load50 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr49, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load50) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.84: ; preds = %match.arm.54 +dispatch.case.107: ; preds = %match.arm.53 %ua.raw52 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr53 = inttoptr i64 %ua.raw52 to ptr - %ua.load54 = load {}, ptr %ua.ptr53, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load54) + %ua.load54 = load { ptr, ptr, ptr }, ptr %ua.ptr53, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load54) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.85: ; preds = %match.arm.54 +dispatch.case.108: ; preds = %match.arm.53 %ua.raw56 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr57 = inttoptr i64 %ua.raw56 to ptr - %ua.load58 = load { i64 }, ptr %ua.ptr57, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load58) + %ua.load58 = load {}, ptr %ua.ptr57, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load58) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.86: ; preds = %match.arm.54 +dispatch.case.109: ; preds = %match.arm.53 %ua.raw60 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr61 = inttoptr i64 %ua.raw60 to ptr - %ua.load62 = load { ptr, i64 }, ptr %ua.ptr61, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load62) + %ua.load62 = load { i64 }, ptr %ua.ptr61, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load62) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.87: ; preds = %match.arm.54 +dispatch.case.110: ; preds = %match.arm.53 %ua.raw64 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr65 = inttoptr i64 %ua.raw64 to ptr - %ua.load66 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr65, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load66) + %ua.load66 = load { ptr, i64 }, ptr %ua.ptr65, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load66) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.88: ; preds = %match.arm.54 +dispatch.case.111: ; preds = %match.arm.53 %ua.raw68 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr69 = inttoptr i64 %ua.raw68 to ptr - %ua.load70 = load { ptr, i64, i64 }, ptr %ua.ptr69, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load70) + %ua.load70 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr69, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load70) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.89: ; preds = %match.arm.54 +dispatch.case.112: ; preds = %match.arm.53 %ua.raw72 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr73 = inttoptr i64 %ua.raw72 to ptr - %ua.load74 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr73, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load74) + %ua.load74 = load { ptr, i64, i64 }, ptr %ua.ptr73, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load74) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.case.90: ; preds = %match.arm.54 +dispatch.case.113: ; preds = %match.arm.53 %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load78) + %ua.load78 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr77, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load78) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.80 + br label %dispatch.merge.104 -dispatch.merge.136: ; preds = %dispatch.case.138, %dispatch.default.137 +dispatch.case.114: ; preds = %match.arm.53 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load82) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.104 + +dispatch.merge.160: ; preds = %dispatch.case.163, %dispatch.case.162, %dispatch.default.161 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.48 + br label %match.merge.47 -dispatch.default.137: ; preds = %match.arm.58 - store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.136 +dispatch.default.161: ; preds = %match.arm.57 + store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.160 -dispatch.case.138: ; preds = %match.arm.58 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load [1 x { i64, i64 }], ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load83) +dispatch.case.162: ; preds = %match.arm.57 + %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr + %ua.load87 = load [4 x i64], ptr %ua.ptr86, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load87) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.136 + br label %dispatch.merge.160 -dispatch.merge.144: ; preds = %dispatch.case.147, %dispatch.case.146, %dispatch.default.145 +dispatch.case.163: ; preds = %match.arm.57 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load [1 x { i64, i64 }], ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load91) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.160 + +dispatch.merge.174: ; preds = %dispatch.case.177, %dispatch.case.176, %dispatch.default.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.48 + br label %match.merge.47 -dispatch.default.145: ; preds = %match.arm.59 - store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.144 +dispatch.default.175: ; preds = %match.arm.58 + store { ptr, i64 } { ptr @str.85, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.174 -dispatch.case.146: ; preds = %match.arm.59 - %ua.raw86 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr87 = inttoptr i64 %ua.raw86 to ptr - %ua.load88 = load { ptr, i64 }, ptr %ua.ptr87, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load88) +dispatch.case.176: ; preds = %match.arm.58 + %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr95 = inttoptr i64 %ua.raw94 to ptr + %ua.load96 = load { ptr, i64 }, ptr %ua.ptr95, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load96) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 + br label %dispatch.merge.174 -dispatch.case.147: ; preds = %match.arm.59 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr91 = inttoptr i64 %ua.raw90 to ptr - %ua.load92 = load { ptr, i64 }, ptr %ua.ptr91, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load92) +dispatch.case.177: ; preds = %match.arm.58 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr99 = inttoptr i64 %ua.raw98 to ptr + %ua.load100 = load { ptr, i64 }, ptr %ua.ptr99, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load100) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 + br label %dispatch.merge.174 -dispatch.merge.158: ; preds = %dispatch.case.178, %dispatch.case.177, %dispatch.case.176, %dispatch.case.175, %dispatch.case.174, %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.case.161, %dispatch.case.160, %dispatch.default.159 +dispatch.merge.188: ; preds = %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.default.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.48 + br label %match.merge.47 -dispatch.default.159: ; preds = %match.arm.60 - store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.158 +dispatch.default.189: ; preds = %match.arm.59 + store { ptr, i64 } { ptr @str.86, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.188 -dispatch.case.160: ; preds = %match.arm.60 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw95 to ptr +dispatch.case.190: ; preds = %match.arm.59 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw103 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.158 + br label %dispatch.merge.188 -dispatch.case.161: ; preds = %match.arm.60 - %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 - %iNp98 = inttoptr i64 %ua.raw97 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp98) +dispatch.case.191: ; preds = %match.arm.59 + %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 + %iNp106 = inttoptr i64 %ua.raw105 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp106) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.162: ; preds = %match.arm.60 - %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 - %iNp101 = inttoptr i64 %ua.raw100 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp101) +dispatch.case.192: ; preds = %match.arm.59 + %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 + %iNp109 = inttoptr i64 %ua.raw108 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp109) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.163: ; preds = %match.arm.60 - %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 - %iNp104 = inttoptr i64 %ua.raw103 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp104) +dispatch.case.193: ; preds = %match.arm.59 + %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 + %iNp112 = inttoptr i64 %ua.raw111 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp112) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.164: ; preds = %match.arm.60 - %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 - %iNp107 = inttoptr i64 %ua.raw106 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp107) +dispatch.case.194: ; preds = %match.arm.59 + %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 + %iNp115 = inttoptr i64 %ua.raw114 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp115) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.165: ; preds = %match.arm.60 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %iNp110 = inttoptr i64 %ua.raw109 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp110) +dispatch.case.195: ; preds = %match.arm.59 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %iNp118 = inttoptr i64 %ua.raw117 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp118) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.166: ; preds = %match.arm.60 - %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 - %iNp113 = inttoptr i64 %ua.raw112 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp113) +dispatch.case.196: ; preds = %match.arm.59 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %iNp121 = inttoptr i64 %ua.raw120 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp121) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.167: ; preds = %match.arm.60 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp116 = inttoptr i64 %ua.raw115 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp116) +dispatch.case.197: ; preds = %match.arm.59 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp124 = inttoptr i64 %ua.raw123 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.168: ; preds = %match.arm.60 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %iNp119 = inttoptr i64 %ua.raw118 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp119) +dispatch.case.198: ; preds = %match.arm.59 + %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 + %iNp127 = inttoptr i64 %ua.raw126 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.169: ; preds = %match.arm.60 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp122) +dispatch.case.199: ; preds = %match.arm.59 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.170: ; preds = %match.arm.60 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp125) +dispatch.case.200: ; preds = %match.arm.59 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.171: ; preds = %match.arm.60 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp128) +dispatch.case.201: ; preds = %match.arm.59 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.172: ; preds = %match.arm.60 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_error_set(ptr %0, ptr %iNp131) +dispatch.case.202: ; preds = %match.arm.59 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_error_set(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.173: ; preds = %match.arm.60 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp134) +dispatch.case.203: ; preds = %match.arm.59 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.174: ; preds = %match.arm.60 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp137) +dispatch.case.204: ; preds = %match.arm.59 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.175: ; preds = %match.arm.60 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp140) +dispatch.case.205: ; preds = %match.arm.59 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.176: ; preds = %match.arm.60 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp143) +dispatch.case.206: ; preds = %match.arm.59 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.177: ; preds = %match.arm.60 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp146) +dispatch.case.207: ; preds = %match.arm.59 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 -dispatch.case.178: ; preds = %match.arm.60 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp149) +dispatch.case.208: ; preds = %match.arm.59 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.188 } ; Function Attrs: nounwind @@ -1403,7 +1613,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.84, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.87, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1434,7 +1644,7 @@ while.exit.12: ; preds = %while.hdr.10 %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.46, label %if.merge.47 + br i1 %icmpN, label %if.then.45, label %if.merge.46 if.then.13: ; preds = %while.body.11 %loadN = load i64, ptr %allocaN, align 8 @@ -1452,9 +1662,9 @@ if.else.14: ; preds = %while.body.11 %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.37, label %if.else.38 + br i1 %icmpN, label %if.then.36, label %if.else.37 -if.merge.15: ; preds = %if.merge.39, %if.merge.18 +if.merge.15: ; preds = %if.merge.38, %if.merge.18 br label %while.hdr.10 if.then.16: ; preds = %if.then.13 @@ -1492,14 +1702,14 @@ if.else.20: ; preds = %if.then.16 %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.34, label %if.else.35 + br i1 %icmpN, label %if.then.33, label %if.else.34 -if.merge.21: ; preds = %if.merge.36, %if.merge.23 +if.merge.21: ; preds = %if.merge.35, %if.merge.23 br label %if.merge.18 if.then.22: ; preds = %if.then.19 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, 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 @@ -1507,7 +1717,7 @@ if.then.22: ; preds = %if.then.19 %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.86, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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 @@ -1517,13 +1727,13 @@ if.then.22: ; preds = %if.then.19 %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.87, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.23 if.merge.23: ; preds = %if.then.22, %if.then.19 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, 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 @@ -1531,7 +1741,7 @@ if.merge.23: ; preds = %if.then.22, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1543,83 +1753,7 @@ if.merge.23: ; preds = %if.then.22, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.21 -if.then.34: ; preds = %if.else.20 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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.91, 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.92, 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.36 - -if.else.35: ; preds = %if.else.20 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.36 - -if.merge.36: ; preds = %if.else.35, %if.then.34 - br label %if.merge.21 - -if.then.37: ; preds = %if.else.14 - %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.40, label %if.else.41 - -if.else.38: ; 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.39 - -if.merge.39: ; preds = %if.merge.42, %if.else.38 - br label %if.merge.15 - -if.then.40: ; preds = %if.then.37 - %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.43, label %if.else.44 - -if.else.41: ; preds = %if.then.37 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.42 - -if.merge.42: ; preds = %if.merge.45, %if.else.41 - br label %if.merge.39 - -if.then.43: ; preds = %if.then.40 +if.then.33: ; preds = %if.else.20 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1647,18 +1781,55 @@ if.then.43: ; preds = %if.then.40 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.45 + br label %if.merge.35 -if.else.44: ; preds = %if.then.40 +if.else.34: ; preds = %if.else.20 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.45 + br label %if.merge.35 -if.merge.45: ; preds = %if.else.44, %if.then.43 - br label %if.merge.42 +if.merge.35: ; preds = %if.else.34, %if.then.33 + br label %if.merge.21 -if.then.46: ; preds = %while.exit.12 +if.then.36: ; preds = %if.else.14 + %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.39, label %if.else.40 + +if.else.37: ; 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.38 + +if.merge.38: ; preds = %if.merge.41, %if.else.37 + br label %if.merge.15 + +if.then.39: ; preds = %if.then.36 + %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.42, label %if.else.43 + +if.else.40: ; preds = %if.then.36 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.41 + +if.merge.41: ; preds = %if.merge.44, %if.else.40 + br label %if.merge.38 + +if.then.42: ; preds = %if.then.39 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1671,6 +1842,45 @@ if.then.46: ; preds = %while.exit.12 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, 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.98, 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.44 + +if.else.43: ; preds = %if.then.39 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.44 + +if.merge.44: ; preds = %if.else.43, %if.then.42 + br label %if.merge.41 + +if.then.45: ; preds = %while.exit.12 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, 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.100, 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 @@ -1679,11 +1889,11 @@ if.then.46: ; preds = %while.exit.12 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.47 + br label %if.merge.46 -if.merge.47: ; preds = %if.then.46, %while.exit.12 +if.merge.46: ; preds = %if.then.45, %while.exit.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1790,7 +2000,7 @@ entry: define internal void @print__ct_s1c36e8f510df0c92__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.104, i64 15 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.107, i64 15 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1806,7 +2016,7 @@ entry: %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.105, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.108, 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) @@ -1834,7 +2044,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.106, i64 15 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.109, i64 15 }) ret { ptr, i64 } %call } @@ -1843,35 +2053,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.107, i64 15 }, { ptr, i64 } { ptr @str.108, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.110, i64 15 }, { ptr, i64 } { ptr @str.111, 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.91 + br label %while.hdr.115 -while.hdr.91: ; preds = %fv.merge, %entry +while.hdr.115: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.92, label %while.exit.93 + br i1 %icmp, label %while.body.116, label %while.exit.117 -while.body.92: ; preds = %while.hdr.91 +while.body.116: ; preds = %while.hdr.115 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.94, label %if.merge.95 + br i1 %icmpN, label %if.then.118, label %if.merge.119 -while.exit.93: ; preds = %while.hdr.91 +while.exit.117: ; preds = %while.hdr.115 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 1 }) ret { ptr, i64 } %callN -if.then.94: ; preds = %while.body.92 +if.then.118: ; preds = %while.body.116 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.95 + br label %if.merge.119 -if.merge.95: ; preds = %if.then.94, %while.body.92 +if.merge.119: ; preds = %if.then.118, %while.body.116 %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 @@ -1879,7 +2089,7 @@ if.merge.95: ; preds = %if.then.94, %while. %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.114, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, 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 @@ -1899,12 +2109,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.91 + br label %while.hdr.115 -fv.default: ; preds = %if.merge.95 +fv.default: ; preds = %if.merge.119 br label %fv.merge -fv.case: ; preds = %if.merge.95 +fv.case: ; preds = %if.merge.119 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1912,19 +2122,19 @@ fv.case: ; preds = %if.merge.95 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.95 +fv.case17: ; preds = %if.merge.119 %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.95 +fv.case20: ; preds = %if.merge.119 %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.95 +fv.case24: ; preds = %if.merge.119 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1938,43 +2148,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.115, i64 9 }, { ptr, i64 } { ptr @str.116, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.118, i64 9 }, { ptr, i64 } { ptr @str.119, 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.96 + br label %while.hdr.120 -while.hdr.96: ; preds = %fv.merge, %entry +while.hdr.120: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.97, label %while.exit.98 + br i1 %icmp, label %while.body.121, label %while.exit.122 -while.body.97: ; preds = %while.hdr.96 +while.body.121: ; preds = %while.hdr.120 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.99, label %if.merge.100 + br i1 %icmpN, label %if.then.123, label %if.merge.124 -while.exit.98: ; preds = %while.hdr.96 +while.exit.122: ; preds = %while.hdr.120 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 1 }) ret { ptr, i64 } %callN -if.then.99: ; preds = %while.body.97 +if.then.123: ; preds = %while.body.121 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.100 + br label %if.merge.124 -if.merge.100: ; preds = %if.then.99, %while.body.97 +if.merge.124: ; preds = %if.then.123, %while.body.121 %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.122, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.125, 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.123, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, ptr, ptr }, ptr %alloca, align 8 @@ -1993,24 +2203,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.96 + br label %while.hdr.120 -fv.default: ; preds = %if.merge.100 +fv.default: ; preds = %if.merge.124 br label %fv.merge -fv.case: ; preds = %if.merge.100 +fv.case: ; preds = %if.merge.124 %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.100 +fv.case17: ; preds = %if.merge.124 %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.100 +fv.case21: ; preds = %if.merge.124 %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 @@ -2022,43 +2232,43 @@ 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.124, i64 10 }, { ptr, i64 } { ptr @str.125, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.127, i64 10 }, { ptr, i64 } { ptr @str.128, 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.101 + br label %while.hdr.125 -while.hdr.101: ; preds = %if.merge.105, %entry +while.hdr.125: ; preds = %if.merge.129, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.102, label %while.exit.103 + br i1 %icmp, label %while.body.126, label %while.exit.127 -while.body.102: ; preds = %while.hdr.101 +while.body.126: ; preds = %while.hdr.125 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.104, label %if.merge.105 + br i1 %icmpN, label %if.then.128, label %if.merge.129 -while.exit.103: ; preds = %while.hdr.101 +while.exit.127: ; preds = %while.hdr.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 1 }) ret { ptr, i64 } %callN -if.then.104: ; preds = %while.body.102 +if.then.128: ; preds = %while.body.126 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.105 + br label %if.merge.129 -if.merge.105: ; preds = %if.then.104, %while.body.102 +if.merge.129: ; preds = %if.then.128, %while.body.126 %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.128, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.131, 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.129, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2069,7 +2279,7 @@ if.merge.105: ; preds = %if.then.104, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.101 + br label %while.hdr.125 } ; Function Attrs: nounwind @@ -2077,43 +2287,43 @@ 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.130, i64 3 }, { ptr, i64 } { ptr @str.131, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.133, i64 3 }, { ptr, i64 } { ptr @str.134, 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.106 + br label %while.hdr.130 -while.hdr.106: ; preds = %fv.merge, %entry +while.hdr.130: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.107, label %while.exit.108 + br i1 %icmp, label %while.body.131, label %while.exit.132 -while.body.107: ; preds = %while.hdr.106 +while.body.131: ; preds = %while.hdr.130 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.109, label %if.merge.110 + br i1 %icmpN, label %if.then.133, label %if.merge.134 -while.exit.108: ; preds = %while.hdr.106 +while.exit.132: ; preds = %while.hdr.130 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, i64 1 }) ret { ptr, i64 } %callN -if.then.109: ; preds = %while.body.107 +if.then.133: ; preds = %while.body.131 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.110 + br label %if.merge.134 -if.merge.110: ; preds = %if.then.109, %while.body.107 +if.merge.134: ; preds = %if.then.133, %while.body.131 %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.135, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.138, 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.136, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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 @@ -2130,12 +2340,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.106 + br label %while.hdr.130 -fv.default: ; preds = %if.merge.110 +fv.default: ; preds = %if.merge.134 br label %fv.merge -fv.case: ; preds = %if.merge.110 +fv.case: ; preds = %if.merge.134 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2146,43 +2356,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.137, i64 10 }, { ptr, i64 } { ptr @str.138, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.140, i64 10 }, { ptr, i64 } { ptr @str.141, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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.143, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.146, 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.144, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, 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 @@ -2200,18 +2410,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %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.115 +fv.case17: ; preds = %if.merge.139 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2222,43 +2432,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.145, i64 5 }, { ptr, i64 } { ptr @str.146, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.148, i64 5 }, { ptr, i64 } { ptr @str.149, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.152, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 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.153, i64 2 }) + %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, i64, { ptr, ptr, ptr } }, ptr %alloca, align 8 @@ -2277,23 +2487,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %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.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case20: ; preds = %if.merge.144 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2307,43 +2517,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.154, i64 8 }, { ptr, i64 } { ptr @str.155, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.157, i64 8 }, { 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %fv.merge, %entry +while.hdr.145: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) + %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.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.161, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.164, 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.162, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, 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 @@ -2362,23 +2572,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 -fv.default: ; preds = %if.merge.125 +fv.default: ; preds = %if.merge.149 br label %fv.merge -fv.case: ; preds = %if.merge.125 +fv.case: ; preds = %if.merge.149 %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.125 +fv.case17: ; preds = %if.merge.149 %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.125 +fv.case20: ; preds = %if.merge.149 %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 @@ -2389,43 +2599,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.163, i64 17 }, { ptr, i64 } { ptr @str.164, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 17 }, { ptr, i64 } { ptr @str.167, 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.126 + br label %while.hdr.150 -while.hdr.126: ; preds = %fv.merge, %entry +while.hdr.150: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.127, label %while.exit.128 + br i1 %icmp, label %while.body.151, label %while.exit.152 -while.body.127: ; preds = %while.hdr.126 +while.body.151: ; preds = %while.hdr.150 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.129, label %if.merge.130 + br i1 %icmpN, label %if.then.153, label %if.merge.154 -while.exit.128: ; preds = %while.hdr.126 +while.exit.152: ; preds = %while.hdr.150 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 1 }) ret { ptr, i64 } %callN -if.then.129: ; preds = %while.body.127 +if.then.153: ; preds = %while.body.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.130 + br label %if.merge.154 -if.merge.130: ; preds = %if.then.129, %while.body.127 +if.merge.154: ; preds = %if.then.153, %while.body.151 %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.171, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.174, 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.172, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %alloca, align 8 @@ -2445,12 +2655,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.126 + br label %while.hdr.150 -fv.default: ; preds = %if.merge.130 +fv.default: ; preds = %if.merge.154 br label %fv.merge -fv.case: ; preds = %if.merge.130 +fv.case: ; preds = %if.merge.154 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2458,17 +2668,17 @@ fv.case: ; preds = %if.merge.130 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.130 +fv.case17: ; preds = %if.merge.154 %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.130 +fv.case20: ; preds = %if.merge.154 %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.130 +fv.case23: ; preds = %if.merge.154 %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 @@ -2479,43 +2689,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.173, i64 7 }, { ptr, i64 } { ptr @str.174, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.176, i64 7 }, { ptr, i64 } { ptr @str.177, 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.131 + br label %while.hdr.155 -while.hdr.131: ; preds = %fv.merge, %entry +while.hdr.155: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.132, label %while.exit.133 + br i1 %icmp, label %while.body.156, label %while.exit.157 -while.body.132: ; preds = %while.hdr.131 +while.body.156: ; preds = %while.hdr.155 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.134, label %if.merge.135 + br i1 %icmpN, label %if.then.158, label %if.merge.159 -while.exit.133: ; preds = %while.hdr.131 +while.exit.157: ; preds = %while.hdr.155 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 1 }) ret { ptr, i64 } %callN -if.then.134: ; preds = %while.body.132 +if.then.158: ; preds = %while.body.156 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.179, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.135 + br label %if.merge.159 -if.merge.135: ; preds = %if.then.134, %while.body.132 +if.merge.159: ; preds = %if.then.158, %while.body.156 %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.179, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.182, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, 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 @@ -2533,12 +2743,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.131 + br label %while.hdr.155 -fv.default: ; preds = %if.merge.135 +fv.default: ; preds = %if.merge.159 br label %fv.merge -fv.case: ; preds = %if.merge.135 +fv.case: ; preds = %if.merge.159 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2546,46 +2756,96 @@ fv.case: ; preds = %if.merge.135 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.135 +fv.case17: ; preds = %if.merge.159 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.184, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.164 + +while.hdr.164: ; preds = %if.merge.168, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.165, label %while.exit.166 + +while.body.165: ; preds = %while.hdr.164 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.167, label %if.merge.168 + +while.exit.166: ; preds = %while.hdr.164 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) + ret { ptr, i64 } %call + +if.then.167: ; preds = %while.body.165 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.168 + +if.merge.168: ; preds = %if.then.167, %while.body.165 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.164 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.181, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.139 + br label %while.hdr.169 -while.hdr.139: ; preds = %if.merge.143, %entry +while.hdr.169: ; preds = %if.merge.173, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.140, label %while.exit.141 + br i1 %icmp, label %while.body.170, label %while.exit.171 -while.body.140: ; preds = %while.hdr.139 +while.body.170: ; preds = %while.hdr.169 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.142, label %if.merge.143 + br i1 %icmpN, label %if.then.172, label %if.merge.173 -while.exit.141: ; preds = %while.hdr.139 +while.exit.171: ; preds = %while.hdr.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.182, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) ret { ptr, i64 } %call -if.then.142: ; preds = %while.body.140 +if.then.172: ; preds = %while.body.170 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 2 }) + %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 - br label %if.merge.143 + br label %if.merge.173 -if.merge.143: ; preds = %if.then.142, %while.body.140 +if.merge.173: ; preds = %if.then.172, %while.body.170 %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 @@ -2603,7 +2863,7 @@ if.merge.143: ; preds = %if.then.142, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.139 + br label %while.hdr.169 } ; Function Attrs: nounwind @@ -2612,35 +2872,35 @@ 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.184, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.148 + br label %while.hdr.178 -while.hdr.148: ; preds = %if.merge.152, %entry +while.hdr.178: ; preds = %if.merge.182, %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.149, label %while.exit.150 + br i1 %icmp, label %while.body.179, label %while.exit.180 -while.body.149: ; preds = %while.hdr.148 +while.body.179: ; preds = %while.hdr.178 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.151, label %if.merge.152 + br i1 %icmpN, label %if.then.181, label %if.merge.182 -while.exit.150: ; preds = %while.hdr.148 +while.exit.180: ; preds = %while.hdr.178 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) ret { ptr, i64 } %call -if.then.151: ; preds = %while.body.149 +if.then.181: ; preds = %while.body.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.186, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.152 + br label %if.merge.182 -if.merge.152: ; preds = %if.then.151, %while.body.149 +if.merge.182: ; preds = %if.then.181, %while.body.179 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2657,7 +2917,7 @@ if.merge.152: ; preds = %if.then.151, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.148 + br label %while.hdr.178 } ; Function Attrs: nounwind @@ -2666,35 +2926,35 @@ 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.187, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.193, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.153 + br label %while.hdr.183 -while.hdr.153: ; preds = %if.merge.157, %entry +while.hdr.183: ; preds = %if.merge.187, %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.154, label %while.exit.155 + br i1 %icmp, label %while.body.184, label %while.exit.185 -while.body.154: ; preds = %while.hdr.153 +while.body.184: ; preds = %while.hdr.183 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.156, label %if.merge.157 + br i1 %icmpN, label %if.then.186, label %if.merge.187 -while.exit.155: ; preds = %while.hdr.153 +while.exit.185: ; preds = %while.hdr.183 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) ret { ptr, i64 } %call -if.then.156: ; preds = %while.body.154 +if.then.186: ; preds = %while.body.184 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.157 + br label %if.merge.187 -if.merge.157: ; preds = %if.then.156, %while.body.154 +if.merge.187: ; preds = %if.then.186, %while.body.184 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2711,95 +2971,11 @@ if.merge.157: ; preds = %if.then.156, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.153 + br label %while.hdr.183 } ; 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.179, label %if.else.180 - -if.then.179: ; preds = %entry - br label %if.merge.181 - -if.else.180: ; 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.192, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.191, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.181 - -if.merge.181: ; preds = %if.else.180, %if.then.179 - %bp = phi { ptr, i64 } [ { ptr @str.190, i64 4 }, %if.then.179 ], [ %callN, %if.else.180 ] - 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.203, label %if.else.204 - -if.then.203: ; preds = %entry - br label %if.merge.205 - -if.else.204: ; 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.195, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.194, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.205 - -if.merge.205: ; preds = %if.else.204, %if.then.203 - %bp = phi { ptr, i64 } [ { ptr @str.193, i64 4 }, %if.then.203 ], [ %callN, %if.else.204 ] - 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.206, label %if.else.207 - -if.then.206: ; preds = %entry - br label %if.merge.208 - -if.else.207: ; 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.198, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.208 - -if.merge.208: ; preds = %if.else.207, %if.then.206 - %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.206 ], [ %callN, %if.else.207 ] - 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 @@ -2817,12 +2993,96 @@ if.then.209: ; preds = %entry if.else.210: ; 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.201, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 5 }, { ptr, i64 } %callN) br label %if.merge.211 if.merge.211: ; preds = %if.else.210, %if.then.209 - %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.209 ], [ %callN, %if.else.210 ] + %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.209 ], [ %callN, %if.else.210 ] + 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.225, label %if.else.226 + +if.then.225: ; preds = %entry + br label %if.merge.227 + +if.else.226: ; 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.201, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.227 + +if.merge.227: ; preds = %if.else.226, %if.then.225 + %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] + 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.228, label %if.else.229 + +if.then.228: ; preds = %entry + br label %if.merge.230 + +if.else.229: ; 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.204, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.230 + +if.merge.230: ; preds = %if.else.229, %if.then.228 + %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] + 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.231, label %if.else.232 + +if.then.231: ; preds = %entry + br label %if.merge.233 + +if.else.232: ; 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.207, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.233 + +if.merge.233: ; preds = %if.else.232, %if.then.231 + %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] ret { ptr, i64 } %bp } @@ -2837,20 +3097,20 @@ entry: 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.212, label %if.else.213 + br i1 %icmp, label %if.then.234, label %if.else.235 -if.then.212: ; preds = %entry - br label %if.merge.214 +if.then.234: ; preds = %entry + br label %if.merge.236 -if.else.213: ; preds = %entry +if.else.235: ; 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.204, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.214 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.210, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.236 -if.merge.214: ; preds = %if.else.213, %if.then.212 - %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.212 ], [ %callN, %if.else.213 ] +if.merge.236: ; preds = %if.else.235, %if.then.234 + %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] ret { ptr, i64 } %bp } @@ -2864,20 +3124,20 @@ entry: 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.215, label %if.else.216 + br i1 %icmp, label %if.then.237, label %if.else.238 -if.then.215: ; preds = %entry - br label %if.merge.217 +if.then.237: ; preds = %entry + br label %if.merge.239 -if.else.216: ; preds = %entry +if.else.238: ; 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.207, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.217 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.213, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.239 -if.merge.217: ; preds = %if.else.216, %if.then.215 - %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.215 ], [ %callN, %if.else.216 ] +if.merge.239: ; preds = %if.else.238, %if.then.237 + %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] ret { ptr, i64 } %bp } @@ -2892,20 +3152,20 @@ entry: 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.218, label %if.else.219 + br i1 %icmp, label %if.then.240, label %if.else.241 -if.then.218: ; preds = %entry - br label %if.merge.220 +if.then.240: ; preds = %entry + br label %if.merge.242 -if.else.219: ; preds = %entry +if.else.241: ; 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.210, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.220 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.242 -if.merge.220: ; preds = %if.else.219, %if.then.218 - %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] +if.merge.242: ; preds = %if.else.241, %if.then.240 + %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] ret { ptr, i64 } %bp } @@ -2920,20 +3180,20 @@ entry: 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.221, label %if.else.222 + br i1 %icmp, label %if.then.243, label %if.else.244 -if.then.221: ; preds = %entry - br label %if.merge.223 +if.then.243: ; preds = %entry + br label %if.merge.245 -if.else.222: ; preds = %entry +if.else.244: ; 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.213, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.223 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.245 -if.merge.223: ; preds = %if.else.222, %if.then.221 - %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.221 ], [ %callN, %if.else.222 ] +if.merge.245: ; preds = %if.else.244, %if.then.243 + %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] ret { ptr, i64 } %bp } @@ -2948,20 +3208,20 @@ entry: 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.224, label %if.else.225 + br i1 %icmp, label %if.then.246, label %if.else.247 -if.then.224: ; preds = %entry - br label %if.merge.226 +if.then.246: ; preds = %entry + br label %if.merge.248 -if.else.225: ; preds = %entry +if.else.247: ; 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.216, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.226 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.248 -if.merge.226: ; preds = %if.else.225, %if.then.224 - %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.224 ], [ %callN, %if.else.225 ] +if.merge.248: ; preds = %if.else.247, %if.then.246 + %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] ret { ptr, i64 } %bp } @@ -2976,20 +3236,20 @@ entry: 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.227, label %if.else.228 + br i1 %icmp, label %if.then.249, label %if.else.250 -if.then.227: ; preds = %entry - br label %if.merge.229 +if.then.249: ; preds = %entry + br label %if.merge.251 -if.else.228: ; preds = %entry +if.else.250: ; 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.219, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.229 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.251 -if.merge.229: ; preds = %if.else.228, %if.then.227 - %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] +if.merge.251: ; preds = %if.else.250, %if.then.249 + %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] ret { ptr, i64 } %bp } @@ -3004,20 +3264,20 @@ entry: 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.230, label %if.else.231 + br i1 %icmp, label %if.then.252, label %if.else.253 -if.then.230: ; preds = %entry - br label %if.merge.232 +if.then.252: ; preds = %entry + br label %if.merge.254 -if.else.231: ; preds = %entry +if.else.253: ; 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.222, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.232 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.254 -if.merge.232: ; preds = %if.else.231, %if.then.230 - %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] +if.merge.254: ; preds = %if.else.253, %if.then.252 + %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] ret { ptr, i64 } %bp } @@ -3032,20 +3292,20 @@ entry: 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.233, label %if.else.234 + br i1 %icmp, label %if.then.255, label %if.else.256 -if.then.233: ; preds = %entry - br label %if.merge.235 +if.then.255: ; preds = %entry + br label %if.merge.257 -if.else.234: ; preds = %entry +if.else.256: ; 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.225, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.235 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.257 -if.merge.235: ; preds = %if.else.234, %if.then.233 - %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] +if.merge.257: ; preds = %if.else.256, %if.then.255 + %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] ret { ptr, i64 } %bp } @@ -3060,20 +3320,20 @@ entry: 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.236, label %if.else.237 + br i1 %icmp, label %if.then.258, label %if.else.259 -if.then.236: ; preds = %entry - br label %if.merge.238 +if.then.258: ; preds = %entry + br label %if.merge.260 -if.else.237: ; preds = %entry +if.else.259: ; 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.228, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 10 }, { ptr, i64 } %callN) - br label %if.merge.238 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 10 }, { ptr, i64 } %callN) + br label %if.merge.260 -if.merge.238: ; preds = %if.else.237, %if.then.236 - %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] +if.merge.260: ; preds = %if.else.259, %if.then.258 + %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] ret { ptr, i64 } %bp } @@ -3088,20 +3348,20 @@ entry: 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.239, label %if.else.240 + br i1 %icmp, label %if.then.261, label %if.else.262 -if.then.239: ; preds = %entry - br label %if.merge.241 +if.then.261: ; preds = %entry + br label %if.merge.263 -if.else.240: ; preds = %entry +if.else.262: ; 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.231, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.241 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.263 -if.merge.241: ; preds = %if.else.240, %if.then.239 - %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] +if.merge.263: ; preds = %if.else.262, %if.then.261 + %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] ret { ptr, i64 } %bp } @@ -3116,20 +3376,20 @@ entry: 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.242, label %if.else.243 + br i1 %icmp, label %if.then.264, label %if.else.265 -if.then.242: ; preds = %entry - br label %if.merge.244 +if.then.264: ; preds = %entry + br label %if.merge.266 -if.else.243: ; preds = %entry +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.234, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.244 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.266 -if.merge.244: ; preds = %if.else.243, %if.then.242 - %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] +if.merge.266: ; preds = %if.else.265, %if.then.264 + %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] ret { ptr, i64 } %bp } @@ -3144,20 +3404,20 @@ entry: 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.245, label %if.else.246 + br i1 %icmp, label %if.then.267, label %if.else.268 -if.then.245: ; preds = %entry - br label %if.merge.247 +if.then.267: ; preds = %entry + br label %if.merge.269 -if.else.246: ; preds = %entry +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.237, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.247 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.269 -if.merge.247: ; preds = %if.else.246, %if.then.245 - %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] +if.merge.269: ; preds = %if.else.268, %if.then.267 + %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] ret { ptr, i64 } %bp } @@ -3172,20 +3432,20 @@ entry: 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 + br i1 %icmp, label %if.then.270, label %if.else.271 -if.then.248: ; preds = %entry - br label %if.merge.250 +if.then.270: ; preds = %entry + br label %if.merge.272 -if.else.249: ; preds = %entry +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.240, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.250 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.272 -if.merge.250: ; preds = %if.else.249, %if.then.248 - %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] +if.merge.272: ; preds = %if.else.271, %if.then.270 + %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ] ret { ptr, i64 } %bp } @@ -3200,20 +3460,20 @@ entry: 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.251, label %if.else.252 + br i1 %icmp, label %if.then.273, label %if.else.274 -if.then.251: ; preds = %entry - br label %if.merge.253 +if.then.273: ; preds = %entry + br label %if.merge.275 -if.else.252: ; preds = %entry +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.243, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.253 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.275 -if.merge.253: ; preds = %if.else.252, %if.then.251 - %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] +if.merge.275: ; preds = %if.else.274, %if.then.273 + %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ] ret { ptr, i64 } %bp } @@ -3228,23 +3488,21 @@ entry: 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.254, label %if.else.255 + br i1 %icmp, label %if.then.276, label %if.else.277 -if.then.254: ; preds = %entry - br label %if.merge.256 +if.then.276: ; preds = %entry + br label %if.merge.278 -if.else.255: ; preds = %entry +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.246, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.256 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.278 -if.merge.256: ; preds = %if.else.255, %if.then.254 - %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] +if.merge.278: ; preds = %if.else.277, %if.then.276 + %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.276 ], [ %callN, %if.else.277 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/1006-errors-inferred-error-sets.ir b/examples/expected/1006-errors-inferred-error-sets.ir index d5dfcd3..52e2364 100644 --- a/examples/expected/1006-errors-inferred-error-sets.ir +++ b/examples/expected/1006-errors-inferred-error-sets.ir @@ -1,266 +1,273 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [76 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] @tag.str = private constant [1 x i8] zeroinitializer -@tag.str.6 = private constant [4 x i8] c"Foo\00" -@tag.str.7 = private constant [4 x i8] c"Bar\00" -@tag_names = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @tag.str, i64 0 }, { ptr, i64 } { ptr @tag.str.6, i64 3 }, { ptr, i64 } { ptr @tag.str.7, i64 3 }] +@tag.str.7 = private constant [4 x i8] c"Foo\00" +@tag.str.8 = private constant [4 x i8] c"Bar\00" +@tag_names = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @tag.str, i64 0 }, { ptr, i64 } { ptr @tag.str.7, i64 3 }, { ptr, i64 } { ptr @tag.str.8, i64 3 }] @tn.str = private constant [13 x i8] c"\00" -@tn.str.8 = private constant [5 x i8] c"bool\00" -@tn.str.9 = private constant [3 x i8] c"s8\00" -@tn.str.10 = private constant [4 x i8] c"s16\00" -@tn.str.11 = private constant [4 x i8] c"s32\00" -@tn.str.12 = private constant [4 x i8] c"s64\00" -@tn.str.13 = private constant [3 x i8] c"u8\00" -@tn.str.14 = private constant [4 x i8] c"u16\00" -@tn.str.15 = private constant [4 x i8] c"u32\00" -@tn.str.16 = private constant [4 x i8] c"u64\00" -@tn.str.17 = private constant [4 x i8] c"f32\00" -@tn.str.18 = private constant [4 x i8] c"f64\00" -@tn.str.19 = private constant [7 x i8] c"string\00" -@tn.str.20 = private constant [4 x i8] c"Any\00" -@tn.str.21 = private constant [9 x i8] c"noreturn\00" -@tn.str.22 = private constant [6 x i8] c"isize\00" -@tn.str.23 = private constant [6 x i8] c"usize\00" -@tn.str.24 = private constant [5 x i8] c"void\00" -@tn.str.25 = private constant [6 x i8] c"*void\00" -@tn.str.26 = private constant [16 x i8] c"Source_Location\00" -@tn.str.27 = private constant [10 x i8] c"Allocator\00" -@tn.str.28 = private constant [11 x i8] c"CAllocator\00" -@tn.str.29 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.30 = private constant [4 x i8] c"GPA\00" -@tn.str.31 = private constant [5 x i8] c"*GPA\00" -@tn.str.32 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.33 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.34 = private constant [6 x i8] c"Arena\00" -@tn.str.35 = private constant [7 x i8] c"*Arena\00" -@tn.str.36 = private constant [6 x i8] c"[*]u8\00" -@tn.str.37 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.38 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.39 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.40 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.41 = private constant [8 x i8] c"Context\00" -@tn.str.42 = private constant [9 x i8] c"[]string\00" -@tn.str.43 = private constant [2 x i8] c"A\00" -@tn.str.44 = private constant [2 x i8] c"!\00" -@tn.str.45 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.46 = private constant [5 x i8] c"*s64\00" -@tn.str.47 = private constant [7 x i8] c"**void\00" -@tn.str.48 = private constant [5 x i8] c"*s32\00" -@tn.str.49 = private constant [3 x i8] c"*A\00" -@tn.str.50 = private constant [8 x i8] c"*string\00" -@tn.str.51 = private constant [6 x i8] c"[]Any\00" -@tn.str.52 = private constant [5 x i8] c"*Any\00" -@tn.str.53 = private constant [7 x i8] c"[1]Any\00" -@tn.str.54 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.55 = private constant [7 x i8] c"*[]Any\00" -@tn.str.56 = private constant [4 x i8] c"*u8\00" -@tn.str.57 = private constant [6 x i8] c"*bool\00" -@tn.str.58 = private constant [5 x i8] c"*f64\00" -@tn.str.59 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.60 = private constant [11 x i8] c"*Allocator\00" -@tn.str.61 = private constant [9 x i8] c"*Context\00" -@tn.str.62 = private constant [5 x i8] c"*u32\00" -@tn.str.63 = private constant [10 x i8] c"*[]string\00" -@tn.str.64 = private constant [6 x i8] c"**GPA\00" -@tn.str.65 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.66 = private constant [8 x i8] c"**Arena\00" -@tn.str.67 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.68 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.69 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.70 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.71 = private constant [6 x i8] c"**s64\00" -@tn.str.72 = private constant [8 x i8] c"***void\00" -@tn.str.73 = private constant [6 x i8] c"**s32\00" -@tn.str.74 = private constant [4 x i8] c"**A\00" -@tn.str.75 = private constant [9 x i8] c"**string\00" -@tn.str.76 = private constant [6 x i8] c"**Any\00" -@tn.str.77 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.78 = private constant [8 x i8] c"**[]Any\00" -@tn.str.79 = private constant [5 x i8] c"**u8\00" -@tn.str.80 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [74 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.8, i64 4 }, { ptr, i64 } { ptr @tn.str.9, i64 2 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { ptr, i64 } { ptr @tn.str.13, i64 2 }, { 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 3 }, { ptr, i64 } { ptr @tn.str.19, i64 6 }, { ptr, i64 } { ptr @tn.str.20, i64 3 }, { ptr, i64 } { ptr @tn.str.21, i64 8 }, { ptr, i64 } { ptr @tn.str.22, i64 5 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 4 }, { ptr, i64 } { ptr @tn.str.25, i64 5 }, { ptr, i64 } { ptr @tn.str.26, i64 15 }, { ptr, i64 } { ptr @tn.str.27, i64 9 }, { ptr, i64 } { ptr @tn.str.28, i64 10 }, { ptr, i64 } { ptr @tn.str.29, i64 11 }, { ptr, i64 } { ptr @tn.str.30, i64 3 }, { ptr, i64 } { ptr @tn.str.31, i64 4 }, { ptr, i64 } { ptr @tn.str.32, i64 10 }, { ptr, i64 } { ptr @tn.str.33, i64 11 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 6 }, { ptr, i64 } { ptr @tn.str.36, i64 5 }, { ptr, i64 } { ptr @tn.str.37, i64 8 }, { ptr, i64 } { ptr @tn.str.38, i64 9 }, { ptr, i64 } { ptr @tn.str.39, i64 17 }, { ptr, i64 } { ptr @tn.str.40, i64 18 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 8 }, { ptr, i64 } { ptr @tn.str.43, i64 1 }, { ptr, i64 } { ptr @tn.str.44, i64 1 }, { ptr, i64 } { ptr @tn.str.45, i64 12 }, { ptr, i64 } { ptr @tn.str.46, i64 4 }, { ptr, i64 } { ptr @tn.str.47, i64 6 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 2 }, { ptr, i64 } { ptr @tn.str.50, i64 7 }, { ptr, i64 } { ptr @tn.str.51, i64 5 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 7 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 3 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 16 }, { ptr, i64 } { ptr @tn.str.60, i64 10 }, { ptr, i64 } { ptr @tn.str.61, i64 8 }, { ptr, i64 } { ptr @tn.str.62, i64 4 }, { ptr, i64 } { ptr @tn.str.63, i64 9 }, { ptr, i64 } { ptr @tn.str.64, i64 5 }, { ptr, i64 } { ptr @tn.str.65, i64 12 }, { ptr, i64 } { ptr @tn.str.66, i64 7 }, { ptr, i64 } { ptr @tn.str.67, i64 6 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 19 }, { ptr, i64 } { ptr @tn.str.70, i64 13 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 7 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 3 }, { ptr, i64 } { ptr @tn.str.75, i64 8 }, { ptr, i64 } { ptr @tn.str.76, i64 5 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 7 }, { ptr, i64 } { ptr @tn.str.79, i64 4 }, { ptr, i64 } { ptr @tn.str.80, i64 6 }] -@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@tn.str.9 = private constant [5 x i8] c"bool\00" +@tn.str.10 = private constant [3 x i8] c"s8\00" +@tn.str.11 = private constant [4 x i8] c"s16\00" +@tn.str.12 = private constant [4 x i8] c"s32\00" +@tn.str.13 = private constant [4 x i8] c"s64\00" +@tn.str.14 = private constant [3 x i8] c"u8\00" +@tn.str.15 = private constant [4 x i8] c"u16\00" +@tn.str.16 = private constant [4 x i8] c"u32\00" +@tn.str.17 = private constant [4 x i8] c"u64\00" +@tn.str.18 = private constant [4 x i8] c"f32\00" +@tn.str.19 = private constant [4 x i8] c"f64\00" +@tn.str.20 = private constant [7 x i8] c"string\00" +@tn.str.21 = private constant [4 x i8] c"Any\00" +@tn.str.22 = private constant [9 x i8] c"noreturn\00" +@tn.str.23 = private constant [6 x i8] c"isize\00" +@tn.str.24 = private constant [6 x i8] c"usize\00" +@tn.str.25 = private constant [5 x i8] c"void\00" +@tn.str.26 = private constant [6 x i8] c"*void\00" +@tn.str.27 = private constant [16 x i8] c"Source_Location\00" +@tn.str.28 = private constant [10 x i8] c"Allocator\00" +@tn.str.29 = private constant [11 x i8] c"CAllocator\00" +@tn.str.30 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.31 = private constant [4 x i8] c"GPA\00" +@tn.str.32 = private constant [5 x i8] c"*GPA\00" +@tn.str.33 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.34 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.35 = private constant [6 x i8] c"Arena\00" +@tn.str.36 = private constant [7 x i8] c"*Arena\00" +@tn.str.37 = private constant [6 x i8] c"[*]u8\00" +@tn.str.38 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.39 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.40 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.41 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.42 = private constant [8 x i8] c"Context\00" +@tn.str.43 = private constant [7 x i8] c"[4]s64\00" +@tn.str.44 = private constant [9 x i8] c"[]string\00" +@tn.str.45 = private constant [2 x i8] c"A\00" +@tn.str.46 = private constant [2 x i8] c"!\00" +@tn.str.47 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.48 = private constant [5 x i8] c"*s64\00" +@tn.str.49 = private constant [7 x i8] c"**void\00" +@tn.str.50 = private constant [5 x i8] c"*s32\00" +@tn.str.51 = private constant [3 x i8] c"*A\00" +@tn.str.52 = private constant [8 x i8] c"*string\00" +@tn.str.53 = private constant [6 x i8] c"[]Any\00" +@tn.str.54 = private constant [5 x i8] c"*Any\00" +@tn.str.55 = private constant [7 x i8] c"[1]Any\00" +@tn.str.56 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.57 = private constant [7 x i8] c"*[]Any\00" +@tn.str.58 = private constant [4 x i8] c"*u8\00" +@tn.str.59 = private constant [6 x i8] c"*bool\00" +@tn.str.60 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.61 = private constant [5 x i8] c"*f64\00" +@tn.str.62 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.63 = private constant [11 x i8] c"*Allocator\00" +@tn.str.64 = private constant [9 x i8] c"*Context\00" +@tn.str.65 = private constant [5 x i8] c"*u32\00" +@tn.str.66 = private constant [10 x i8] c"*[]string\00" +@tn.str.67 = private constant [6 x i8] c"**GPA\00" +@tn.str.68 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.69 = private constant [8 x i8] c"**Arena\00" +@tn.str.70 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.71 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.72 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.73 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.74 = private constant [6 x i8] c"**s64\00" +@tn.str.75 = private constant [8 x i8] c"***void\00" +@tn.str.76 = private constant [6 x i8] c"**s32\00" +@tn.str.77 = private constant [4 x i8] c"**A\00" +@tn.str.78 = private constant [9 x i8] c"**string\00" +@tn.str.79 = private constant [6 x i8] c"**Any\00" +@tn.str.80 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.81 = private constant [8 x i8] c"**[]Any\00" +@tn.str.82 = private constant [5 x i8] c"**u8\00" +@tn.str.83 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [76 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.9, i64 4 }, { ptr, i64 } { ptr @tn.str.10, i64 2 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { ptr, i64 } { ptr @tn.str.13, i64 3 }, { ptr, i64 } { ptr @tn.str.14, i64 2 }, { 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 3 }, { ptr, i64 } { ptr @tn.str.19, i64 3 }, { ptr, i64 } { ptr @tn.str.20, i64 6 }, { ptr, i64 } { ptr @tn.str.21, i64 3 }, { ptr, i64 } { ptr @tn.str.22, i64 8 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 5 }, { ptr, i64 } { ptr @tn.str.25, i64 4 }, { ptr, i64 } { ptr @tn.str.26, i64 5 }, { ptr, i64 } { ptr @tn.str.27, i64 15 }, { ptr, i64 } { ptr @tn.str.28, i64 9 }, { ptr, i64 } { ptr @tn.str.29, i64 10 }, { ptr, i64 } { ptr @tn.str.30, i64 11 }, { ptr, i64 } { ptr @tn.str.31, i64 3 }, { ptr, i64 } { ptr @tn.str.32, i64 4 }, { ptr, i64 } { ptr @tn.str.33, i64 10 }, { ptr, i64 } { ptr @tn.str.34, i64 11 }, { ptr, i64 } { ptr @tn.str.35, i64 5 }, { ptr, i64 } { ptr @tn.str.36, i64 6 }, { ptr, i64 } { ptr @tn.str.37, i64 5 }, { ptr, i64 } { ptr @tn.str.38, i64 8 }, { ptr, i64 } { ptr @tn.str.39, i64 9 }, { ptr, i64 } { ptr @tn.str.40, i64 17 }, { ptr, i64 } { ptr @tn.str.41, i64 18 }, { ptr, i64 } { ptr @tn.str.42, i64 7 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 8 }, { ptr, i64 } { ptr @tn.str.45, i64 1 }, { ptr, i64 } { ptr @tn.str.46, i64 1 }, { ptr, i64 } { ptr @tn.str.47, i64 12 }, { ptr, i64 } { ptr @tn.str.48, i64 4 }, { ptr, i64 } { ptr @tn.str.49, i64 6 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 2 }, { ptr, i64 } { ptr @tn.str.52, i64 7 }, { ptr, i64 } { ptr @tn.str.53, i64 5 }, { ptr, i64 } { ptr @tn.str.54, i64 4 }, { ptr, i64 } { ptr @tn.str.55, i64 6 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 6 }, { ptr, i64 } { ptr @tn.str.58, i64 3 }, { ptr, i64 } { ptr @tn.str.59, i64 5 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 4 }, { ptr, i64 } { ptr @tn.str.62, i64 16 }, { ptr, i64 } { ptr @tn.str.63, i64 10 }, { ptr, i64 } { ptr @tn.str.64, i64 8 }, { ptr, i64 } { ptr @tn.str.65, i64 4 }, { ptr, i64 } { ptr @tn.str.66, i64 9 }, { ptr, i64 } { ptr @tn.str.67, i64 5 }, { ptr, i64 } { ptr @tn.str.68, i64 12 }, { ptr, i64 } { ptr @tn.str.69, i64 7 }, { ptr, i64 } { ptr @tn.str.70, i64 6 }, { ptr, i64 } { ptr @tn.str.71, i64 10 }, { ptr, i64 } { ptr @tn.str.72, i64 19 }, { ptr, i64 } { ptr @tn.str.73, i64 13 }, { ptr, i64 } { ptr @tn.str.74, i64 5 }, { ptr, i64 } { ptr @tn.str.75, i64 7 }, { ptr, i64 } { ptr @tn.str.76, i64 5 }, { ptr, i64 } { ptr @tn.str.77, i64 3 }, { ptr, i64 } { ptr @tn.str.78, i64 8 }, { ptr, i64 } { ptr @tn.str.79, i64 5 }, { ptr, i64 } { ptr @tn.str.80, i64 8 }, { ptr, i64 } { ptr @tn.str.81, i64 7 }, { ptr, i64 } { ptr @tn.str.82, i64 4 }, { ptr, i64 } { ptr @tn.str.83, i64 6 }] @str.84 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.85 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.89 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.90 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.91 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.92 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.93 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.85 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.86 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.87 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.88 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.92 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.93 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.94 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.95 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.96 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.97 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.98 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.99 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.100 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.101 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.102 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @frame.str = private unnamed_addr constant [35 x i8] c"1006-errors-inferred-error-sets.sx\00" -@frame.str.100 = private unnamed_addr constant [5 x i8] c"leaf\00" -@frame.str.101 = private unnamed_addr constant [34 x i8] c" if n < 0 { raise error.Foo; }\00" -@trace.frame = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 15, i32 16, { ptr, i64 } { ptr @frame.str.100, i64 4 }, { ptr, i64 } { ptr @frame.str.101, i64 33 } } -@frame.str.102 = private unnamed_addr constant [4 x i8] c"mid\00" -@frame.str.103 = private unnamed_addr constant [17 x i8] c" try leaf(n);\00" -@trace.frame.104 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 22, i32 5, { ptr, i64 } { ptr @frame.str.102, i64 3 }, { ptr, i64 } { ptr @frame.str.103, i64 16 } } -@frame.str.105 = private unnamed_addr constant [37 x i8] c" if n == 100 { raise error.Bar; }\00" -@trace.frame.106 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 23, i32 19, { ptr, i64 } { ptr @frame.str.102, i64 3 }, { ptr, i64 } { ptr @frame.str.105, i64 36 } } -@frame.str.107 = private unnamed_addr constant [4 x i8] c"run\00" -@frame.str.108 = private unnamed_addr constant [16 x i8] c" try mid(n);\00" -@trace.frame.109 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 29, i32 5, { ptr, i64 } { ptr @frame.str.107, i64 3 }, { ptr, i64 } { ptr @frame.str.108, i64 15 } } -@str.110 = private unnamed_addr constant [21 x i8] c"inferred result: {}\0A\00", align 1 -@str.111 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.112 = private unnamed_addr constant [21 x i8] c"inferred result: {}\0A\00", align 1 -@str.113 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.114 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.115 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.116 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@frame.str.103 = private unnamed_addr constant [5 x i8] c"leaf\00" +@frame.str.104 = private unnamed_addr constant [34 x i8] c" if n < 0 { raise error.Foo; }\00" +@trace.frame = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 15, i32 16, { ptr, i64 } { ptr @frame.str.103, i64 4 }, { ptr, i64 } { ptr @frame.str.104, i64 33 } } +@frame.str.105 = private unnamed_addr constant [4 x i8] c"mid\00" +@frame.str.106 = private unnamed_addr constant [17 x i8] c" try leaf(n);\00" +@trace.frame.107 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 22, i32 5, { ptr, i64 } { ptr @frame.str.105, i64 3 }, { ptr, i64 } { ptr @frame.str.106, i64 16 } } +@frame.str.108 = private unnamed_addr constant [37 x i8] c" if n == 100 { raise error.Bar; }\00" +@trace.frame.109 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 23, i32 19, { ptr, i64 } { ptr @frame.str.105, i64 3 }, { ptr, i64 } { ptr @frame.str.108, i64 36 } } +@frame.str.110 = private unnamed_addr constant [4 x i8] c"run\00" +@frame.str.111 = private unnamed_addr constant [16 x i8] c" try mid(n);\00" +@trace.frame.112 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 34 }, i32 29, i32 5, { ptr, i64 } { ptr @frame.str.110, i64 3 }, { ptr, i64 } { ptr @frame.str.111, i64 15 } } +@str.113 = private unnamed_addr constant [21 x i8] c"inferred result: {}\0A\00", align 1 +@str.114 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.115 = private unnamed_addr constant [21 x i8] c"inferred result: {}\0A\00", align 1 +@str.116 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.117 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.118 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.117 = private constant [5 x i8] c"line\00" -@fld.str.118 = private constant [4 x i8] c"col\00" -@fld.str.119 = 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.117, i64 4 }, { ptr, i64 } { ptr @fld.str.118, i64 3 }, { ptr, i64 } { ptr @fld.str.119, i64 4 }] -@str.120 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.121 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.122 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.123 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.125 = private constant [4 x i8] c"ctx\00" -@fld.str.126 = private constant [6 x i8] c"alloc\00" -@fld.str.127 = private constant [8 x i8] c"dealloc\00" -@field_names.128 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.125, i64 3 }, { ptr, i64 } { ptr @fld.str.126, i64 5 }, { ptr, i64 } { ptr @fld.str.127, i64 7 }] -@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.130 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.134 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.135 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.136 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.138 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.139 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.140 = private constant [12 x i8] c"alloc_count\00" -@field_names.141 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.140, i64 11 }] -@str.142 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.143 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.144 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.145 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.146 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.147 = private constant [5 x i8] c"next\00" -@fld.str.148 = private constant [4 x i8] c"cap\00" -@field_names.149 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.147, i64 4 }, { ptr, i64 } { ptr @fld.str.148, i64 3 }] -@str.150 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.151 = private unnamed_addr constant [6 x i8] c"Arena\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 -@fld.str.155 = private constant [6 x i8] c"first\00" -@fld.str.156 = private constant [10 x i8] c"end_index\00" -@fld.str.157 = private constant [7 x i8] c"parent\00" -@field_names.158 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.155, i64 5 }, { ptr, i64 } { ptr @fld.str.156, i64 9 }, { ptr, i64 } { ptr @fld.str.157, i64 6 }] -@str.159 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.160 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.164 = private constant [4 x i8] c"buf\00" -@fld.str.165 = private constant [4 x i8] c"len\00" -@fld.str.166 = private constant [4 x i8] c"pos\00" -@field_names.167 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.164, i64 3 }, { ptr, i64 } { ptr @fld.str.165, i64 3 }, { ptr, i64 } { ptr @fld.str.166, i64 3 }] -@str.168 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.169 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.170 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.173 = private constant [7 x i8] c"parent\00" -@fld.str.174 = private constant [12 x i8] c"alloc_count\00" -@fld.str.175 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.176 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.177 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.173, i64 6 }, { ptr, i64 } { ptr @fld.str.174, i64 11 }, { ptr, i64 } { ptr @fld.str.175, i64 13 }, { ptr, i64 } { ptr @fld.str.176, i64 17 }] -@str.178 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.179 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.180 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.181 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.182 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.183 = private constant [10 x i8] c"allocator\00" -@fld.str.184 = private constant [5 x i8] c"data\00" -@field_names.185 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.183, i64 9 }, { ptr, i64 } { ptr @fld.str.184, i64 4 }] -@str.186 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.187 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.188 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.189 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.120 = private constant [5 x i8] c"line\00" +@fld.str.121 = private constant [4 x i8] c"col\00" +@fld.str.122 = 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.120, i64 4 }, { ptr, i64 } { ptr @fld.str.121, i64 3 }, { ptr, i64 } { ptr @fld.str.122, i64 4 }] +@str.123 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.124 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.125 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.126 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.128 = private constant [4 x i8] c"ctx\00" +@fld.str.129 = private constant [6 x i8] c"alloc\00" +@fld.str.130 = private constant [8 x i8] c"dealloc\00" +@field_names.131 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.128, i64 3 }, { ptr, i64 } { ptr @fld.str.129, i64 5 }, { ptr, i64 } { ptr @fld.str.130, i64 7 }] +@str.132 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.133 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.134 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.135 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.136 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.137 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.138 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.139 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.141 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.143 = private constant [12 x i8] c"alloc_count\00" +@field_names.144 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.143, i64 11 }] +@str.145 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.146 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.148 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.149 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.150 = private constant [5 x i8] c"next\00" +@fld.str.151 = private constant [4 x i8] c"cap\00" +@field_names.152 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.150, i64 4 }, { ptr, i64 } { ptr @fld.str.151, i64 3 }] +@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.154 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.158 = private constant [6 x i8] c"first\00" +@fld.str.159 = private constant [10 x i8] c"end_index\00" +@fld.str.160 = private constant [7 x i8] c"parent\00" +@field_names.161 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 5 }, { ptr, i64 } { ptr @fld.str.159, i64 9 }, { ptr, i64 } { ptr @fld.str.160, i64 6 }] +@str.162 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.163 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.164 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.165 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.167 = private constant [4 x i8] c"buf\00" +@fld.str.168 = private constant [4 x i8] c"len\00" +@fld.str.169 = private constant [4 x i8] c"pos\00" +@field_names.170 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.167, i64 3 }, { ptr, i64 } { ptr @fld.str.168, i64 3 }, { 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 [18 x i8] c"TrackingAllocator\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 [7 x i8] c"parent\00" +@fld.str.177 = private constant [12 x i8] c"alloc_count\00" +@fld.str.178 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.179 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.180 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.176, i64 6 }, { ptr, i64 } { ptr @fld.str.177, i64 11 }, { ptr, i64 } { ptr @fld.str.178, i64 13 }, { ptr, i64 } { ptr @fld.str.179, i64 17 }] +@str.181 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.182 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.183 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.184 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.186 = private constant [10 x i8] c"allocator\00" +@fld.str.187 = private constant [5 x i8] c"data\00" +@field_names.188 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.186, i64 9 }, { ptr, i64 } { ptr @fld.str.187, i64 4 }] +@str.189 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.190 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.191 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.192 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.193 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.194 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.195 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.196 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.197 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.198 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.199 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.200 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.201 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.196 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.198 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.199 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.200 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.201 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.202 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.203 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.203 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.204 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.205 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.206 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.206 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.207 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.208 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.209 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.209 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.210 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.211 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.212 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.212 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.213 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.214 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.215 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.215 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.216 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.217 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.218 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.218 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.219 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.220 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.221 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.221 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.222 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.223 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.224 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.224 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.225 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.226 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.227 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.227 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.228 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.229 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.230 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.230 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.231 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.232 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.233 = private unnamed_addr constant [11 x i8] c"*error_set\00", align 1 +@str.233 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.234 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.235 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.236 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.236 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 @str.237 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.238 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.239 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.239 = private unnamed_addr constant [11 x i8] c"*error_set\00", align 1 @str.240 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.241 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.242 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.242 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.243 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.244 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.245 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.245 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.246 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.247 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.248 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.248 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.249 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.250 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.251 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.251 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.252 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.253 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.254 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.255 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.256 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.257 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.258 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -399,38 +406,43 @@ if.merge.27: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.28, label %if.else.29 - -if.then.28: ; preds = %if.merge.27 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.30 - -if.else.29: ; preds = %if.merge.27 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.30 - -if.merge.30: ; preds = %if.else.29, %if.then.28 - %bp = phi i64 [ %sub, %if.then.28 ], [ %loadN, %if.else.29 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.31 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.28 -while.hdr.31: ; preds = %while.body.32, %if.merge.30 +while.hdr.28: ; preds = %if.merge.32, %if.merge.27 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.32, label %while.exit.33 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.29, label %while.exit.30 -while.body.32: ; preds = %while.hdr.31 +while.body.29: ; preds = %while.hdr.28 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.31, label %if.merge.32 + +while.exit.30: ; preds = %while.hdr.28 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.33, label %if.merge.34 + +if.then.31: ; preds = %while.body.29 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.32 + +if.merge.32: ; preds = %if.then.31, %while.body.29 + %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 @@ -443,50 +455,178 @@ while.body.32: ; preds = %while.hdr.31 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.31 + br label %while.hdr.28 -while.exit.33: ; preds = %while.hdr.31 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.34, label %if.merge.35 - -if.then.34: ; preds = %while.exit.33 +if.then.33: ; preds = %while.exit.30 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.then.34, %while.exit.33 +if.merge.34: ; preds = %if.then.33, %while.exit.30 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.68, label %if.merge.69 + +if.then.68: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.69: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.78 + +while.hdr.78: ; preds = %while.exit.89, %if.merge.69 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.82, label %or.rhs.81 + +while.body.79: ; preds = %or.merge.86 + %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.87 + +while.exit.80: ; preds = %or.merge.86 + %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.81: ; preds = %while.hdr.78 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.82 + +or.merge.82: ; preds = %or.rhs.81, %while.hdr.78 + %bp = phi i1 [ true, %while.hdr.78 ], [ %icmpN, %or.rhs.81 ] + br i1 %bp, label %or.merge.84, label %or.rhs.83 + +or.rhs.83: ; preds = %or.merge.82 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.84 + +or.merge.84: ; preds = %or.rhs.83, %or.merge.82 + %bpN = phi i1 [ true, %or.merge.82 ], [ %icmpN, %or.rhs.83 ] + br i1 %bpN, label %or.merge.86, label %or.rhs.85 + +or.rhs.85: ; preds = %or.merge.84 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.86 + +or.merge.86: ; preds = %or.rhs.85, %or.merge.84 + %bpN = phi i1 [ true, %or.merge.84 ], [ %icmpN, %or.rhs.85 ] + br i1 %bpN, label %while.body.79, label %while.exit.80 + +while.hdr.87: ; preds = %while.body.88, %while.body.79 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.88, label %while.exit.89 + +while.body.88: ; preds = %while.hdr.87 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.87 + +while.exit.89: ; preds = %while.hdr.87 + %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.78 +} + ; 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.66, label %if.else.67 + br i1 %load, label %if.then.90, label %if.else.91 -if.then.66: ; preds = %entry - br label %if.merge.68 +if.then.90: ; preds = %entry + br label %if.merge.92 -if.else.67: ; preds = %entry - br label %if.merge.68 +if.else.91: ; preds = %entry + br label %if.merge.92 -if.merge.68: ; preds = %if.else.67, %if.then.66 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.66 ], [ { ptr @str.2, i64 5 }, %if.else.67 ] +if.merge.92: ; preds = %if.else.91, %if.then.90 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.90 ], [ { ptr @str.3, i64 5 }, %if.else.91 ] ret { ptr, i64 } %bp } @@ -500,19 +640,19 @@ entry: %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.72, label %if.else.73 + br i1 %loadN, label %if.then.96, label %if.else.97 -if.then.72: ; preds = %entry +if.then.96: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.74 + br label %if.merge.98 -if.else.73: ; preds = %entry +if.else.97: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.74 + br label %if.merge.98 -if.merge.74: ; preds = %if.else.73, %if.then.72 - %bp = phi double [ %fsub, %if.then.72 ], [ %loadN, %if.else.73 ] +if.merge.98: ; preds = %if.else.97, %if.then.96 + %bp = phi double [ %fsub, %if.then.96 ], [ %loadN, %if.else.97 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -529,15 +669,15 @@ if.merge.74: ; preds = %if.else.73, %if.the 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.75, label %if.merge.76 + br i1 %icmp, label %if.then.99, label %if.merge.100 -if.then.75: ; preds = %if.merge.74 +if.then.99: ; preds = %if.merge.98 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.76 + br label %if.merge.100 -if.merge.76: ; preds = %if.then.75, %if.merge.74 +if.merge.100: ; preds = %if.then.99, %if.merge.98 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -555,16 +695,16 @@ if.merge.76: ; preds = %if.then.75, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.77, label %if.else.78 + br i1 %loadN, label %if.then.101, label %if.else.102 -if.then.77: ; preds = %if.merge.76 - br label %if.merge.79 +if.then.101: ; preds = %if.merge.100 + br label %if.merge.103 -if.else.78: ; preds = %if.merge.76 - br label %if.merge.79 +if.else.102: ; preds = %if.merge.100 + br label %if.merge.103 -if.merge.79: ; preds = %if.else.78, %if.then.77 - %bpN = phi i64 [ 1, %if.then.77 ], [ 0, %if.else.78 ] +if.merge.103: ; preds = %if.else.102, %if.then.101 + %bpN = phi i64 [ 1, %if.then.101 ], [ 0, %if.else.102 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -581,17 +721,17 @@ if.merge.79: ; preds = %if.else.78, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.80, label %if.merge.81 + br i1 %loadN, label %if.then.104, label %if.merge.105 -if.then.80: ; preds = %if.merge.79 +if.then.104: ; preds = %if.merge.103 %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.81 + br label %if.merge.105 -if.merge.81: ; preds = %if.then.80, %if.merge.79 +if.merge.105: ; preds = %if.then.104, %if.merge.103 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -654,39 +794,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.194 + br label %while.hdr.216 -while.hdr.194: ; preds = %if.merge.199, %entry +while.hdr.216: ; preds = %if.merge.221, %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.195, label %while.exit.196 + br i1 %icmp, label %while.body.217, label %while.exit.218 -while.body.195: ; preds = %while.hdr.194 +while.body.217: ; preds = %while.hdr.216 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.197, label %if.else.198 + br i1 %icmpN, label %if.then.219, label %if.else.220 -while.exit.196: ; preds = %while.hdr.194 +while.exit.218: ; preds = %while.hdr.216 ret void -if.then.197: ; preds = %while.body.195 +if.then.219: ; preds = %while.body.217 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.199 + br label %if.merge.221 -if.else.198: ; preds = %while.body.195 +if.else.220: ; preds = %while.body.217 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.199 + br label %if.merge.221 -if.merge.199: ; preds = %if.else.198, %if.then.197 - %bp = phi i64 [ %addN, %if.then.197 ], [ %addN, %if.else.198 ] +if.merge.221: ; preds = %if.else.220, %if.then.219 + %bp = phi i64 [ %addN, %if.then.219 ], [ %addN, %if.else.220 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -699,37 +839,29 @@ if.merge.199: ; preds = %if.else.198, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.194 + br label %while.hdr.216 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.184, label %if.merge.185 - -if.then.184: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.185: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.186, label %if.merge.187 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.70, label %if.merge.71 -if.then.186: ; preds = %if.merge.185 +if.then.70: ; 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.187 + br label %if.merge.71 -if.merge.187: ; preds = %if.then.186, %if.merge.185 +if.merge.71: ; preds = %if.then.70, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -742,15 +874,15 @@ if.merge.187: ; preds = %if.then.186, %if.me 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.188, label %if.merge.189 + br i1 %icmpN, label %if.then.72, label %if.merge.73 -if.then.188: ; preds = %if.merge.187 +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.189 + br label %if.merge.73 -if.merge.189: ; preds = %if.then.188, %if.merge.187 +if.merge.73: ; preds = %if.then.72, %if.merge.71 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -763,15 +895,15 @@ if.merge.189: ; preds = %if.then.188, %if.me 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.190, label %if.merge.191 + br i1 %icmpN, label %if.then.74, label %if.merge.75 -if.then.190: ; preds = %if.merge.189 +if.then.74: ; preds = %if.merge.73 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.191 + br label %if.merge.75 -if.merge.191: ; preds = %if.then.190, %if.merge.189 +if.merge.75: ; preds = %if.then.74, %if.merge.73 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -784,65 +916,116 @@ if.merge.191: ; preds = %if.then.190, %if.me 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.192, label %if.merge.193 + br i1 %icmpN, label %if.then.76, label %if.merge.77 -if.then.192: ; preds = %if.merge.191 +if.then.76: ; preds = %if.merge.75 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.193 + br label %if.merge.77 -if.merge.193: ; preds = %if.then.192, %if.merge.191 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.77: ; preds = %if.then.76, %if.merge.75 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.214, label %if.merge.215 + +if.then.214: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.215: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.200 + br label %while.hdr.222 -while.hdr.200: ; preds = %if.merge.204, %if.merge.193 +while.hdr.222: ; preds = %if.merge.226, %if.merge.215 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.201, label %while.exit.202 + br i1 %icmpN, label %while.body.223, label %while.exit.224 -while.body.201: ; preds = %while.hdr.200 +while.body.223: ; preds = %while.hdr.222 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.203, label %if.merge.204 + br i1 %icmpN, label %if.then.225, label %if.merge.226 -while.exit.202: ; preds = %if.then.203, %while.hdr.200 +while.exit.224: ; preds = %if.then.225, %while.hdr.222 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.203: ; preds = %while.body.201 - br label %while.exit.202 +if.then.225: ; preds = %while.body.223 + br label %while.exit.224 -if.merge.204: ; preds = %while.body.201 +if.merge.226: ; preds = %while.body.223 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.200 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.222 } ; Function Attrs: nounwind @@ -921,7 +1104,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -929,479 +1112,506 @@ entry: 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.65 [ - i64 17, label %match.arm.51 - i64 2, label %match.arm.52 - i64 3, label %match.arm.52 - i64 4, label %match.arm.52 - i64 5, label %match.arm.52 - i64 6, label %match.arm.52 - i64 7, label %match.arm.52 - i64 8, label %match.arm.52 - i64 9, label %match.arm.52 - i64 16, label %match.arm.52 - i64 15, label %match.arm.52 - i64 12, label %match.arm.53 - i64 1, label %match.arm.54 - i64 10, label %match.arm.55 - i64 11, label %match.arm.55 - i64 19, label %match.arm.56 - i64 20, label %match.arm.56 - i64 21, label %match.arm.56 - i64 23, label %match.arm.56 - i64 25, label %match.arm.56 - i64 27, label %match.arm.56 - i64 30, label %match.arm.56 - i64 32, label %match.arm.56 - i64 34, label %match.arm.56 - i64 36, label %match.arm.58 - i64 37, label %match.arm.58 - i64 46, label %match.arm.60 - i64 35, label %match.arm.61 + switch i64 %ua.raw, label %match.unr.64 [ + i64 17, label %match.arm.50 + i64 2, label %match.arm.51 + i64 3, label %match.arm.51 + i64 4, label %match.arm.51 + i64 5, label %match.arm.51 + i64 6, label %match.arm.51 + i64 7, label %match.arm.51 + i64 8, label %match.arm.51 + i64 9, label %match.arm.51 + i64 16, label %match.arm.51 + i64 15, label %match.arm.51 + i64 12, label %match.arm.52 + i64 1, label %match.arm.53 + i64 10, label %match.arm.54 + i64 11, label %match.arm.54 + i64 19, label %match.arm.55 + i64 20, label %match.arm.55 + i64 21, label %match.arm.55 + i64 23, label %match.arm.55 + i64 25, label %match.arm.55 + i64 27, label %match.arm.55 + i64 30, label %match.arm.55 + i64 32, label %match.arm.55 + i64 34, label %match.arm.55 + i64 37, label %match.arm.57 + i64 38, label %match.arm.57 + i64 35, label %match.arm.59 + i64 47, label %match.arm.59 + i64 36, label %match.arm.60 + i64 45, label %match.arm.60 + i64 18, label %match.arm.61 + i64 22, label %match.arm.61 + i64 24, label %match.arm.61 + i64 26, label %match.arm.61 + i64 28, label %match.arm.61 + i64 29, label %match.arm.61 + i64 31, label %match.arm.61 + i64 33, label %match.arm.61 + i64 39, label %match.arm.61 + i64 40, label %match.arm.61 + i64 41, label %match.arm.61 + i64 42, label %match.arm.61 + i64 43, label %match.arm.61 i64 44, label %match.arm.61 - i64 18, label %match.arm.62 - i64 22, label %match.arm.62 - i64 24, label %match.arm.62 - i64 26, label %match.arm.62 - i64 28, label %match.arm.62 - i64 29, label %match.arm.62 - i64 31, label %match.arm.62 - i64 33, label %match.arm.62 - i64 38, label %match.arm.62 - i64 39, label %match.arm.62 - i64 40, label %match.arm.62 - i64 41, label %match.arm.62 - i64 42, label %match.arm.62 - i64 43, label %match.arm.62 - i64 45, label %match.arm.62 - i64 47, label %match.arm.62 - i64 48, label %match.arm.62 - i64 49, label %match.arm.62 - i64 50, label %match.arm.62 - i64 13, label %match.arm.64 + i64 46, label %match.arm.61 + i64 48, label %match.arm.61 + i64 49, label %match.arm.61 + i64 50, label %match.arm.61 + i64 51, label %match.arm.61 + i64 13, label %match.arm.63 ] -match.merge.50: ; preds = %dispatch.merge.160, %dispatch.merge.146, %dispatch.merge.138, %dispatch.merge.82, %float.merge.71, %match.unr.65, %match.arm.64, %match.arm.58, %match.arm.54, %match.arm.53, %match.arm.52, %match.arm.51 +match.merge.49: ; preds = %dispatch.merge.190, %dispatch.merge.176, %dispatch.merge.162, %dispatch.merge.106, %float.merge.95, %if.merge.67, %match.unr.64, %match.arm.63, %match.arm.57, %match.arm.53, %match.arm.52, %match.arm.50 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.51: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.50 +match.arm.50: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.49 -match.arm.52: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.50 +match.arm.51: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [76 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.65, label %if.else.66 -match.arm.53: ; preds = %entry +match.arm.52: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.50 + br label %match.merge.49 -match.arm.54: ; preds = %entry +match.arm.53: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.50 + %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.49 -match.arm.55: ; preds = %entry, %entry +match.arm.54: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.69, label %fN.unbox.70 + br i1 %icmp, label %fN.unbox.93, label %fN.unbox.94 -match.arm.56: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.55: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.83 [ - i64 19, label %dispatch.case.84 - i64 20, label %dispatch.case.85 - i64 21, label %dispatch.case.86 - i64 23, label %dispatch.case.87 - i64 25, label %dispatch.case.88 - i64 27, label %dispatch.case.89 - i64 30, label %dispatch.case.90 - i64 32, label %dispatch.case.91 - i64 34, label %dispatch.case.92 + switch i64 %ua.raw16, label %dispatch.default.107 [ + i64 19, label %dispatch.case.108 + i64 20, label %dispatch.case.109 + i64 21, label %dispatch.case.110 + i64 23, label %dispatch.case.111 + i64 25, label %dispatch.case.112 + i64 27, label %dispatch.case.113 + i64 30, label %dispatch.case.114 + i64 32, label %dispatch.case.115 + i64 34, label %dispatch.case.116 ] -match.arm.57: ; No predecessors! +match.arm.56: ; No predecessors! unreachable -match.arm.58: ; preds = %entry, %entry +match.arm.57: ; preds = %entry, %entry %allocaN = alloca i32, align 4 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw23 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw23 to i32 + %ua.raw21 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw21 to i32 store i32 %trN, ptr %allocaN, align 4 %loadN = load i32, ptr %allocaN, align 4 %etn.idx = zext i32 %loadN to i64 %etn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @tag_names, i64 0, i64 %etn.idx %etn.load = load { ptr, i64 }, ptr %etn.gep, align 8 store { ptr, i64 } %etn.load, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -match.arm.59: ; No predecessors! +match.arm.58: ; No predecessors! unreachable -match.arm.60: ; preds = %entry +match.arm.59: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw27 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw25 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw27, label %dispatch.default.139 [ - i64 46, label %dispatch.case.140 + switch i64 %ua.raw25, label %dispatch.default.163 [ + i64 35, label %dispatch.case.164 + i64 47, label %dispatch.case.165 ] -match.arm.61: ; preds = %entry, %entry +match.arm.60: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw31 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw29 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw31, label %dispatch.default.147 [ - i64 35, label %dispatch.case.148 - i64 44, label %dispatch.case.149 + switch i64 %ua.raw29, label %dispatch.default.177 [ + i64 36, label %dispatch.case.178 + i64 45, label %dispatch.case.179 ] -match.arm.62: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.61: ; preds = %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.raw35 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw35, label %dispatch.default.161 [ - i64 18, label %dispatch.case.162 - i64 22, label %dispatch.case.163 - i64 24, label %dispatch.case.164 - i64 26, label %dispatch.case.165 - i64 28, label %dispatch.case.166 - i64 29, label %dispatch.case.167 - i64 31, label %dispatch.case.168 - i64 33, label %dispatch.case.169 - i64 38, label %dispatch.case.170 - i64 39, label %dispatch.case.171 - i64 40, label %dispatch.case.172 - i64 41, label %dispatch.case.173 - i64 42, label %dispatch.case.174 - i64 43, label %dispatch.case.175 - i64 45, label %dispatch.case.176 - i64 47, label %dispatch.case.177 - i64 48, label %dispatch.case.178 - i64 49, label %dispatch.case.179 - i64 50, label %dispatch.case.180 + switch i64 %ua.raw33, label %dispatch.default.191 [ + i64 18, label %dispatch.case.192 + i64 22, label %dispatch.case.193 + i64 24, label %dispatch.case.194 + i64 26, label %dispatch.case.195 + i64 28, label %dispatch.case.196 + i64 29, label %dispatch.case.197 + i64 31, label %dispatch.case.198 + i64 33, label %dispatch.case.199 + i64 39, label %dispatch.case.200 + i64 40, label %dispatch.case.201 + i64 41, label %dispatch.case.202 + i64 42, label %dispatch.case.203 + i64 43, label %dispatch.case.204 + i64 44, label %dispatch.case.205 + i64 46, label %dispatch.case.206 + i64 48, label %dispatch.case.207 + i64 49, label %dispatch.case.208 + i64 50, label %dispatch.case.209 + i64 51, label %dispatch.case.210 ] -match.arm.63: ; No predecessors! +match.arm.62: ; No predecessors! unreachable -match.arm.64: ; preds = %entry +match.arm.63: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [74 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [76 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -match.unr.65: ; preds = %entry - br label %match.merge.50 +match.unr.64: ; preds = %entry + br label %match.merge.49 -f32.unbox.69: ; preds = %match.arm.55 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw39 to i32 +if.then.65: ; preds = %match.arm.51 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw38) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.67 + +if.else.66: ; preds = %match.arm.51 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw41 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw41) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.67 + +if.merge.67: ; preds = %if.else.66, %if.then.65 + br label %match.merge.49 + +f32.unbox.93: ; preds = %match.arm.54 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw43 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.71 + br label %float.merge.95 -f64.unbox.70: ; preds = %match.arm.55 - %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw40 to double +f64.unbox.94: ; preds = %match.arm.54 + %ua.raw44 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw44 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.71 + br label %float.merge.95 -float.merge.71: ; preds = %fN.unbox.70, %fN.unbox.69 +float.merge.95: ; preds = %fN.unbox.94, %fN.unbox.93 %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.50 + br label %match.merge.49 -dispatch.merge.82: ; preds = %dispatch.case.92, %dispatch.case.91, %dispatch.case.90, %dispatch.case.89, %dispatch.case.88, %dispatch.case.87, %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.default.83 +dispatch.merge.106: ; 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.default.107 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.83: ; preds = %match.arm.56 - store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.82 +dispatch.default.107: ; preds = %match.arm.55 + store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.106 -dispatch.case.84: ; preds = %match.arm.56 - %ua.raw44 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr45 = inttoptr i64 %ua.raw44 to ptr - %ua.load46 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr45, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load46) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 - -dispatch.case.85: ; preds = %match.arm.56 +dispatch.case.108: ; preds = %match.arm.55 %ua.raw48 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr49 = inttoptr i64 %ua.raw48 to ptr - %ua.load50 = load { ptr, ptr, ptr }, ptr %ua.ptr49, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load50) + %ua.load50 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr49, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load50) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.86: ; preds = %match.arm.56 +dispatch.case.109: ; preds = %match.arm.55 %ua.raw52 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr53 = inttoptr i64 %ua.raw52 to ptr - %ua.load54 = load {}, ptr %ua.ptr53, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load54) + %ua.load54 = load { ptr, ptr, ptr }, ptr %ua.ptr53, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load54) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.87: ; preds = %match.arm.56 +dispatch.case.110: ; preds = %match.arm.55 %ua.raw56 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr57 = inttoptr i64 %ua.raw56 to ptr - %ua.load58 = load { i64 }, ptr %ua.ptr57, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load58) + %ua.load58 = load {}, ptr %ua.ptr57, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load58) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.88: ; preds = %match.arm.56 +dispatch.case.111: ; preds = %match.arm.55 %ua.raw60 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr61 = inttoptr i64 %ua.raw60 to ptr - %ua.load62 = load { ptr, i64 }, ptr %ua.ptr61, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load62) + %ua.load62 = load { i64 }, ptr %ua.ptr61, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load62) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.89: ; preds = %match.arm.56 +dispatch.case.112: ; preds = %match.arm.55 %ua.raw64 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr65 = inttoptr i64 %ua.raw64 to ptr - %ua.load66 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr65, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load66) + %ua.load66 = load { ptr, i64 }, ptr %ua.ptr65, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load66) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.90: ; preds = %match.arm.56 +dispatch.case.113: ; preds = %match.arm.55 %ua.raw68 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr69 = inttoptr i64 %ua.raw68 to ptr - %ua.load70 = load { ptr, i64, i64 }, ptr %ua.ptr69, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load70) + %ua.load70 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr69, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load70) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.91: ; preds = %match.arm.56 +dispatch.case.114: ; preds = %match.arm.55 %ua.raw72 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr73 = inttoptr i64 %ua.raw72 to ptr - %ua.load74 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr73, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load74) + %ua.load74 = load { ptr, i64, i64 }, ptr %ua.ptr73, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load74) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.case.92: ; preds = %match.arm.56 +dispatch.case.115: ; preds = %match.arm.55 %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load78) + %ua.load78 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr77, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load78) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.82 + br label %dispatch.merge.106 -dispatch.merge.138: ; preds = %dispatch.case.140, %dispatch.default.139 +dispatch.case.116: ; preds = %match.arm.55 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load82) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.106 + +dispatch.merge.162: ; preds = %dispatch.case.165, %dispatch.case.164, %dispatch.default.163 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.139: ; preds = %match.arm.60 - store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.138 +dispatch.default.163: ; preds = %match.arm.59 + store { ptr, i64 } { ptr @str.85, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.162 -dispatch.case.140: ; preds = %match.arm.60 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load [1 x { i64, i64 }], ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load83) +dispatch.case.164: ; preds = %match.arm.59 + %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr + %ua.load87 = load [4 x i64], ptr %ua.ptr86, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load87) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.138 + br label %dispatch.merge.162 -dispatch.merge.146: ; preds = %dispatch.case.149, %dispatch.case.148, %dispatch.default.147 +dispatch.case.165: ; preds = %match.arm.59 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load [1 x { i64, i64 }], ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load91) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.162 + +dispatch.merge.176: ; preds = %dispatch.case.179, %dispatch.case.178, %dispatch.default.177 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.50 + br label %match.merge.49 -dispatch.default.147: ; preds = %match.arm.61 - store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.146 +dispatch.default.177: ; preds = %match.arm.60 + store { ptr, i64 } { ptr @str.86, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.176 -dispatch.case.148: ; preds = %match.arm.61 - %ua.raw86 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr87 = inttoptr i64 %ua.raw86 to ptr - %ua.load88 = load { ptr, i64 }, ptr %ua.ptr87, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load88) +dispatch.case.178: ; preds = %match.arm.60 + %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr95 = inttoptr i64 %ua.raw94 to ptr + %ua.load96 = load { ptr, i64 }, ptr %ua.ptr95, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load96) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.146 + br label %dispatch.merge.176 -dispatch.case.149: ; preds = %match.arm.61 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr91 = inttoptr i64 %ua.raw90 to ptr - %ua.load92 = load { ptr, i64 }, ptr %ua.ptr91, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load92) +dispatch.case.179: ; preds = %match.arm.60 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr99 = inttoptr i64 %ua.raw98 to ptr + %ua.load100 = load { ptr, i64 }, ptr %ua.ptr99, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load100) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.146 + br label %dispatch.merge.176 -dispatch.merge.160: ; preds = %dispatch.case.180, %dispatch.case.179, %dispatch.case.178, %dispatch.case.177, %dispatch.case.176, %dispatch.case.175, %dispatch.case.174, %dispatch.case.173, %dispatch.case.172, %dispatch.case.171, %dispatch.case.170, %dispatch.case.169, %dispatch.case.168, %dispatch.case.167, %dispatch.case.166, %dispatch.case.165, %dispatch.case.164, %dispatch.case.163, %dispatch.case.162, %dispatch.default.161 +dispatch.merge.190: ; preds = %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %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.50 + br label %match.merge.49 -dispatch.default.161: ; preds = %match.arm.62 - store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.160 +dispatch.default.191: ; preds = %match.arm.61 + store { ptr, i64 } { ptr @str.87, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.190 -dispatch.case.162: ; preds = %match.arm.62 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw95 to ptr +dispatch.case.192: ; preds = %match.arm.61 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw103 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.160 + br label %dispatch.merge.190 -dispatch.case.163: ; preds = %match.arm.62 - %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 - %iNp98 = inttoptr i64 %ua.raw97 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp98) +dispatch.case.193: ; preds = %match.arm.61 + %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 + %iNp106 = inttoptr i64 %ua.raw105 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp106) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.164: ; preds = %match.arm.62 - %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 - %iNp101 = inttoptr i64 %ua.raw100 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp101) +dispatch.case.194: ; preds = %match.arm.61 + %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 + %iNp109 = inttoptr i64 %ua.raw108 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp109) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.165: ; preds = %match.arm.62 - %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 - %iNp104 = inttoptr i64 %ua.raw103 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp104) +dispatch.case.195: ; preds = %match.arm.61 + %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 + %iNp112 = inttoptr i64 %ua.raw111 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp112) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.166: ; preds = %match.arm.62 - %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 - %iNp107 = inttoptr i64 %ua.raw106 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp107) +dispatch.case.196: ; preds = %match.arm.61 + %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 + %iNp115 = inttoptr i64 %ua.raw114 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp115) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.167: ; preds = %match.arm.62 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %iNp110 = inttoptr i64 %ua.raw109 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp110) +dispatch.case.197: ; preds = %match.arm.61 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %iNp118 = inttoptr i64 %ua.raw117 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp118) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.168: ; preds = %match.arm.62 - %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 - %iNp113 = inttoptr i64 %ua.raw112 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp113) +dispatch.case.198: ; preds = %match.arm.61 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %iNp121 = inttoptr i64 %ua.raw120 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp121) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.169: ; preds = %match.arm.62 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp116 = inttoptr i64 %ua.raw115 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp116) +dispatch.case.199: ; preds = %match.arm.61 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp124 = inttoptr i64 %ua.raw123 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.170: ; preds = %match.arm.62 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %iNp119 = inttoptr i64 %ua.raw118 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp119) +dispatch.case.200: ; preds = %match.arm.61 + %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 + %iNp127 = inttoptr i64 %ua.raw126 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.171: ; preds = %match.arm.62 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp122) +dispatch.case.201: ; preds = %match.arm.61 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.172: ; preds = %match.arm.62 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp125) +dispatch.case.202: ; preds = %match.arm.61 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.173: ; preds = %match.arm.62 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp128) +dispatch.case.203: ; preds = %match.arm.61 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.174: ; preds = %match.arm.62 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_error_set(ptr %0, ptr %iNp131) +dispatch.case.204: ; preds = %match.arm.61 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_error_set(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.175: ; preds = %match.arm.62 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp134) +dispatch.case.205: ; preds = %match.arm.61 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.176: ; preds = %match.arm.62 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp137) +dispatch.case.206: ; preds = %match.arm.61 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.177: ; preds = %match.arm.62 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp140) +dispatch.case.207: ; preds = %match.arm.61 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.178: ; preds = %match.arm.62 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp143) +dispatch.case.208: ; preds = %match.arm.61 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.179: ; preds = %match.arm.62 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp146) +dispatch.case.209: ; preds = %match.arm.61 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 -dispatch.case.180: ; preds = %match.arm.62 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp149) +dispatch.case.210: ; preds = %match.arm.61 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.160 + br label %dispatch.merge.190 } ; Function Attrs: nounwind @@ -1410,7 +1620,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.85, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.88, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1441,7 +1651,7 @@ while.exit.14: ; preds = %while.hdr.12 %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.48, label %if.merge.49 + br i1 %icmpN, label %if.then.47, label %if.merge.48 if.then.15: ; preds = %while.body.13 %loadN = load i64, ptr %allocaN, align 8 @@ -1459,9 +1669,9 @@ if.else.16: ; preds = %while.body.13 %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.39, label %if.else.40 + br i1 %icmpN, label %if.then.38, label %if.else.39 -if.merge.17: ; preds = %if.merge.41, %if.merge.20 +if.merge.17: ; preds = %if.merge.40, %if.merge.20 br label %while.hdr.12 if.then.18: ; preds = %if.then.15 @@ -1499,14 +1709,14 @@ if.else.22: ; preds = %if.then.18 %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.36, label %if.else.37 + br i1 %icmpN, label %if.then.35, label %if.else.36 -if.merge.23: ; preds = %if.merge.38, %if.merge.25 +if.merge.23: ; preds = %if.merge.37, %if.merge.25 br label %if.merge.20 if.then.24: ; preds = %if.then.21 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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 @@ -1514,7 +1724,7 @@ if.then.24: ; preds = %if.then.21 %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.87, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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 @@ -1524,13 +1734,13 @@ if.then.24: ; preds = %if.then.21 %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.88, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.25 if.merge.25: ; preds = %if.then.24, %if.then.21 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, 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 @@ -1538,7 +1748,7 @@ if.merge.25: ; preds = %if.then.24, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1550,83 +1760,7 @@ if.merge.25: ; preds = %if.then.24, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.23 -if.then.36: ; preds = %if.else.22 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, 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.92, 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.93, 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.else.22 - %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.23 - -if.then.39: ; preds = %if.else.16 - %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.42, label %if.else.43 - -if.else.40: ; preds = %if.else.16 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.41 - -if.merge.41: ; preds = %if.merge.44, %if.else.40 - br label %if.merge.17 - -if.then.42: ; preds = %if.then.39 - %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.45, label %if.else.46 - -if.else.43: ; preds = %if.then.39 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.44 - -if.merge.44: ; preds = %if.merge.47, %if.else.43 - br label %if.merge.41 - -if.then.45: ; preds = %if.then.42 +if.then.35: ; preds = %if.else.22 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.94, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1654,18 +1788,55 @@ if.then.45: ; preds = %if.then.42 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.47 + br label %if.merge.37 -if.else.46: ; preds = %if.then.42 +if.else.36: ; preds = %if.else.22 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.47 + br label %if.merge.37 -if.merge.47: ; preds = %if.else.46, %if.then.45 - br label %if.merge.44 +if.merge.37: ; preds = %if.else.36, %if.then.35 + br label %if.merge.23 -if.then.48: ; preds = %while.exit.14 +if.then.38: ; preds = %if.else.16 + %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.41, label %if.else.42 + +if.else.39: ; preds = %if.else.16 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.40 + +if.merge.40: ; preds = %if.merge.43, %if.else.39 + br label %if.merge.17 + +if.then.41: ; preds = %if.then.38 + %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.44, label %if.else.45 + +if.else.42: ; preds = %if.then.38 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.43 + +if.merge.43: ; preds = %if.merge.46, %if.else.42 + br label %if.merge.40 + +if.then.44: ; preds = %if.then.41 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1678,6 +1849,45 @@ if.then.48: ; preds = %while.exit.14 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, 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.99, 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.46 + +if.else.45: ; preds = %if.then.41 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.46 + +if.merge.46: ; preds = %if.else.45, %if.then.44 + br label %if.merge.43 + +if.then.47: ; preds = %while.exit.14 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, 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.101, 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 @@ -1686,11 +1896,11 @@ if.then.48: ; preds = %while.exit.14 %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.99, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.49 + br label %if.merge.48 -if.merge.49: ; preds = %if.then.48, %while.exit.14 +if.merge.48: ; preds = %if.then.47, %while.exit.14 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1809,7 +2019,7 @@ entry: define internal void @print__ct_s5a624c50db282f36__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.110, i64 20 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.113, i64 20 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1825,7 +2035,7 @@ entry: %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.111, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.114, 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 17) @@ -1853,7 +2063,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.112, i64 20 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.115, i64 20 }) ret { ptr, i64 } %call } @@ -1862,35 +2072,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.113, i64 15 }, { ptr, i64 } { ptr @str.114, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.116, i64 15 }, { ptr, i64 } { ptr @str.117, 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.93 + br label %while.hdr.117 -while.hdr.93: ; preds = %fv.merge, %entry +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.94, label %while.exit.95 + br i1 %icmp, label %while.body.118, label %while.exit.119 -while.body.94: ; preds = %while.hdr.93 +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.96, label %if.merge.97 + br i1 %icmpN, label %if.then.120, label %if.merge.121 -while.exit.95: ; preds = %while.hdr.93 +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.115, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 1 }) ret { ptr, i64 } %callN -if.then.96: ; preds = %while.body.94 +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.116, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.97 + br label %if.merge.121 -if.merge.97: ; preds = %if.then.96, %while.body.94 +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 @@ -1898,7 +2108,7 @@ if.merge.97: ; preds = %if.then.96, %while. %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.120, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %alloca, align 8 @@ -1918,12 +2128,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.93 + br label %while.hdr.117 -fv.default: ; preds = %if.merge.97 +fv.default: ; preds = %if.merge.121 br label %fv.merge -fv.case: ; preds = %if.merge.97 +fv.case: ; preds = %if.merge.121 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -1931,19 +2141,19 @@ fv.case: ; preds = %if.merge.97 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.97 +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.97 +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.97 +fv.case24: ; preds = %if.merge.121 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -1957,43 +2167,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.121, i64 9 }, { ptr, i64 } { ptr @str.122, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.124, i64 9 }, { ptr, i64 } { ptr @str.125, 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.98 + br label %while.hdr.122 -while.hdr.98: ; preds = %fv.merge, %entry +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.99, label %while.exit.100 + br i1 %icmp, label %while.body.123, label %while.exit.124 -while.body.99: ; preds = %while.hdr.98 +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.101, label %if.merge.102 + br i1 %icmpN, label %if.then.125, label %if.merge.126 -while.exit.100: ; preds = %while.hdr.98 +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.123, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 1 }) ret { ptr, i64 } %callN -if.then.101: ; preds = %while.body.99 +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.124, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.102 + br label %if.merge.126 -if.merge.102: ; preds = %if.then.101, %while.body.99 +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.128, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.131, 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.129, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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 @@ -2012,24 +2222,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.98 + br label %while.hdr.122 -fv.default: ; preds = %if.merge.102 +fv.default: ; preds = %if.merge.126 br label %fv.merge -fv.case: ; preds = %if.merge.102 +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.102 +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.102 +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 @@ -2041,43 +2251,43 @@ 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.130, i64 10 }, { ptr, i64 } { ptr @str.131, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.133, i64 10 }, { ptr, i64 } { ptr @str.134, 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.103 + br label %while.hdr.127 -while.hdr.103: ; preds = %if.merge.107, %entry +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.104, label %while.exit.105 + br i1 %icmp, label %while.body.128, label %while.exit.129 -while.body.104: ; preds = %while.hdr.103 +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.106, label %if.merge.107 + br i1 %icmpN, label %if.then.130, label %if.merge.131 -while.exit.105: ; preds = %while.hdr.103 +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.132, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, i64 1 }) ret { ptr, i64 } %callN -if.then.106: ; preds = %while.body.104 +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.133, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.107 + br label %if.merge.131 -if.merge.107: ; preds = %if.then.106, %while.body.104 +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.134, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.137, 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.135, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2088,7 +2298,7 @@ if.merge.107: ; preds = %if.then.106, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.103 + br label %while.hdr.127 } ; Function Attrs: nounwind @@ -2096,43 +2306,43 @@ 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.136, i64 3 }, { ptr, i64 } { ptr @str.137, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.139, i64 3 }, { ptr, i64 } { ptr @str.140, 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.108 + br label %while.hdr.132 -while.hdr.108: ; preds = %fv.merge, %entry +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.109, label %while.exit.110 + br i1 %icmp, label %while.body.133, label %while.exit.134 -while.body.109: ; preds = %while.hdr.108 +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.111, label %if.merge.112 + br i1 %icmpN, label %if.then.135, label %if.merge.136 -while.exit.110: ; preds = %while.hdr.108 +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.138, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, i64 1 }) ret { ptr, i64 } %callN -if.then.111: ; preds = %while.body.109 +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.139, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.112 + br label %if.merge.136 -if.merge.112: ; preds = %if.then.111, %while.body.109 +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.141, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.144, 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.142, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i64 }, ptr %alloca, align 8 @@ -2149,12 +2359,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.108 + br label %while.hdr.132 -fv.default: ; preds = %if.merge.112 +fv.default: ; preds = %if.merge.136 br label %fv.merge -fv.case: ; preds = %if.merge.112 +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 @@ -2165,43 +2375,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.143, i64 10 }, { ptr, i64 } { ptr @str.144, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.146, i64 10 }, { ptr, i64 } { ptr @str.147, 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.113 + br label %while.hdr.137 -while.hdr.113: ; preds = %fv.merge, %entry +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.114, label %while.exit.115 + br i1 %icmp, label %while.body.138, label %while.exit.139 -while.body.114: ; preds = %while.hdr.113 +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.116, label %if.merge.117 + br i1 %icmpN, label %if.then.140, label %if.merge.141 -while.exit.115: ; preds = %while.hdr.113 +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.145, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 1 }) ret { ptr, i64 } %callN -if.then.116: ; preds = %while.body.114 +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.146, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.117 + br label %if.merge.141 -if.merge.117: ; preds = %if.then.116, %while.body.114 +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.149, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.152, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, 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 @@ -2219,18 +2429,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.113 + br label %while.hdr.137 -fv.default: ; preds = %if.merge.117 +fv.default: ; preds = %if.merge.141 br label %fv.merge -fv.case: ; preds = %if.merge.117 +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.117 +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 @@ -2241,43 +2451,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.151, i64 5 }, { ptr, i64 } { ptr @str.152, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.154, i64 5 }, { ptr, i64 } { ptr @str.155, 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.118 + br label %while.hdr.142 -while.hdr.118: ; preds = %fv.merge, %entry +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.119, label %while.exit.120 + br i1 %icmp, label %while.body.143, label %while.exit.144 -while.body.119: ; preds = %while.hdr.118 +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.121, label %if.merge.122 + br i1 %icmpN, label %if.then.145, label %if.merge.146 -while.exit.120: ; preds = %while.hdr.118 +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.153, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 1 }) ret { ptr, i64 } %callN -if.then.121: ; preds = %while.body.119 +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.154, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.122 + br label %if.merge.146 -if.merge.122: ; preds = %if.then.121, %while.body.119 +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.158, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.161, 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.159, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, 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 @@ -2296,23 +2506,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.118 + br label %while.hdr.142 -fv.default: ; preds = %if.merge.122 +fv.default: ; preds = %if.merge.146 br label %fv.merge -fv.case: ; preds = %if.merge.122 +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.122 +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.122 +fv.case20: ; preds = %if.merge.146 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2326,43 +2536,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.160, i64 8 }, { ptr, i64 } { ptr @str.161, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.163, i64 8 }, { ptr, i64 } { ptr @str.164, 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.123 + br label %while.hdr.147 -while.hdr.123: ; preds = %fv.merge, %entry +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.124, label %while.exit.125 + br i1 %icmp, label %while.body.148, label %while.exit.149 -while.body.124: ; preds = %while.hdr.123 +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.126, label %if.merge.127 + br i1 %icmpN, label %if.then.150, label %if.merge.151 -while.exit.125: ; preds = %while.hdr.123 +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.162, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 1 }) ret { ptr, i64 } %callN -if.then.126: ; preds = %while.body.124 +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.163, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.127 + br label %if.merge.151 -if.merge.127: ; preds = %if.then.126, %while.body.124 +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.167, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 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.168, i64 2 }) + %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, i64 }, ptr %alloca, align 8 @@ -2381,23 +2591,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.123 + br label %while.hdr.147 -fv.default: ; preds = %if.merge.127 +fv.default: ; preds = %if.merge.151 br label %fv.merge -fv.case: ; preds = %if.merge.127 +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.127 +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.127 +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 @@ -2408,43 +2618,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.169, i64 17 }, { ptr, i64 } { ptr @str.170, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.172, i64 17 }, { 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.128 + br label %while.hdr.152 -while.hdr.128: ; preds = %fv.merge, %entry +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.129, label %while.exit.130 + br i1 %icmp, label %while.body.153, label %while.exit.154 -while.body.129: ; preds = %while.hdr.128 +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.131, label %if.merge.132 + br i1 %icmpN, label %if.then.155, label %if.merge.156 -while.exit.130: ; preds = %while.hdr.128 +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.171, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 1 }) ret { ptr, i64 } %callN -if.then.131: ; preds = %while.body.129 +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.172, i64 2 }) + %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.132 + br label %if.merge.156 -if.merge.132: ; preds = %if.then.131, %while.body.129 +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.177, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.180, 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.178, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, 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 @@ -2464,12 +2674,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.128 + br label %while.hdr.152 -fv.default: ; preds = %if.merge.132 +fv.default: ; preds = %if.merge.156 br label %fv.merge -fv.case: ; preds = %if.merge.132 +fv.case: ; preds = %if.merge.156 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2477,17 +2687,17 @@ fv.case: ; preds = %if.merge.132 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.132 +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.132 +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.132 +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 @@ -2498,43 +2708,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.179, i64 7 }, { ptr, i64 } { ptr @str.180, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 7 }, { ptr, i64 } { ptr @str.183, 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.133 + br label %while.hdr.157 -while.hdr.133: ; preds = %fv.merge, %entry +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.134, label %while.exit.135 + br i1 %icmp, label %while.body.158, label %while.exit.159 -while.body.134: ; preds = %while.hdr.133 +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.136, label %if.merge.137 + br i1 %icmpN, label %if.then.160, label %if.merge.161 -while.exit.135: ; preds = %while.hdr.133 +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.181, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) ret { ptr, i64 } %callN -if.then.136: ; preds = %while.body.134 +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.182, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.137 + br label %if.merge.161 -if.merge.137: ; preds = %if.then.136, %while.body.134 +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.185, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 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.186, i64 2 }) + %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, ptr, ptr }, ptr }, ptr %alloca, align 8 @@ -2552,12 +2762,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.133 + br label %while.hdr.157 -fv.default: ; preds = %if.merge.137 +fv.default: ; preds = %if.merge.161 br label %fv.merge -fv.case: ; preds = %if.merge.137 +fv.case: ; preds = %if.merge.161 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2565,46 +2775,96 @@ fv.case: ; preds = %if.merge.137 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.137 +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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.190, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.166 + +while.hdr.166: ; preds = %if.merge.170, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.167, label %while.exit.168 + +while.body.167: ; preds = %while.hdr.166 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.169, label %if.merge.170 + +while.exit.168: ; preds = %while.hdr.166 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) + ret { ptr, i64 } %call + +if.then.169: ; preds = %while.body.167 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.170 + +if.merge.170: ; preds = %if.then.169, %while.body.167 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.166 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.193, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.141 + br label %while.hdr.171 -while.hdr.141: ; preds = %if.merge.145, %entry +while.hdr.171: ; preds = %if.merge.175, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.142, label %while.exit.143 + br i1 %icmp, label %while.body.172, label %while.exit.173 -while.body.142: ; preds = %while.hdr.141 +while.body.172: ; preds = %while.hdr.171 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.144, label %if.merge.145 + br i1 %icmpN, label %if.then.174, label %if.merge.175 -while.exit.143: ; preds = %while.hdr.141 +while.exit.173: ; preds = %while.hdr.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) ret { ptr, i64 } %call -if.then.144: ; preds = %while.body.142 +if.then.174: ; preds = %while.body.172 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.145 + br label %if.merge.175 -if.merge.145: ; preds = %if.then.144, %while.body.142 +if.merge.175: ; preds = %if.then.174, %while.body.172 %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 @@ -2622,7 +2882,7 @@ if.merge.145: ; preds = %if.then.144, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.141 + br label %while.hdr.171 } ; Function Attrs: nounwind @@ -2631,35 +2891,35 @@ 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.190, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.196, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.150 + br label %while.hdr.180 -while.hdr.150: ; preds = %if.merge.154, %entry +while.hdr.180: ; preds = %if.merge.184, %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.151, label %while.exit.152 + br i1 %icmp, label %while.body.181, label %while.exit.182 -while.body.151: ; preds = %while.hdr.150 +while.body.181: ; preds = %while.hdr.180 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.153, label %if.merge.154 + br i1 %icmpN, label %if.then.183, label %if.merge.184 -while.exit.152: ; preds = %while.hdr.150 +while.exit.182: ; preds = %while.hdr.180 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 1 }) ret { ptr, i64 } %call -if.then.153: ; preds = %while.body.151 +if.then.183: ; preds = %while.body.181 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.154 + br label %if.merge.184 -if.merge.154: ; preds = %if.then.153, %while.body.151 +if.merge.184: ; preds = %if.then.183, %while.body.181 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2676,7 +2936,7 @@ if.merge.154: ; preds = %if.then.153, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.150 + br label %while.hdr.180 } ; Function Attrs: nounwind @@ -2685,35 +2945,35 @@ 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.193, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.199, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.155 + br label %while.hdr.185 -while.hdr.155: ; preds = %if.merge.159, %entry +while.hdr.185: ; preds = %if.merge.189, %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.156, label %while.exit.157 + br i1 %icmp, label %while.body.186, label %while.exit.187 -while.body.156: ; preds = %while.hdr.155 +while.body.186: ; preds = %while.hdr.185 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.158, label %if.merge.159 + br i1 %icmpN, label %if.then.188, label %if.merge.189 -while.exit.157: ; preds = %while.hdr.155 +while.exit.187: ; preds = %while.hdr.185 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.200, i64 1 }) ret { ptr, i64 } %call -if.then.158: ; preds = %while.body.156 +if.then.188: ; preds = %while.body.186 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.159 + br label %if.merge.189 -if.merge.159: ; preds = %if.then.158, %while.body.156 +if.merge.189: ; preds = %if.then.188, %while.body.186 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2730,95 +2990,11 @@ if.merge.159: ; preds = %if.then.158, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.155 + br label %while.hdr.185 } ; 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.181, label %if.else.182 - -if.then.181: ; preds = %entry - br label %if.merge.183 - -if.else.182: ; 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.198, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.183 - -if.merge.183: ; preds = %if.else.182, %if.then.181 - %bp = phi { ptr, i64 } [ { ptr @str.196, i64 4 }, %if.then.181 ], [ %callN, %if.else.182 ] - 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.205, label %if.else.206 - -if.then.205: ; preds = %entry - br label %if.merge.207 - -if.else.206: ; 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.201, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.207 - -if.merge.207: ; preds = %if.else.206, %if.then.205 - %bp = phi { ptr, i64 } [ { ptr @str.199, i64 4 }, %if.then.205 ], [ %callN, %if.else.206 ] - 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.208, label %if.else.209 - -if.then.208: ; preds = %entry - br label %if.merge.210 - -if.else.209: ; 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.204, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.210 - -if.merge.210: ; preds = %if.else.209, %if.then.208 - %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.208 ], [ %callN, %if.else.209 ] - 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 @@ -2836,12 +3012,96 @@ if.then.211: ; preds = %entry if.else.212: ; 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.207, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.204, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.203, i64 5 }, { ptr, i64 } %callN) br label %if.merge.213 if.merge.213: ; preds = %if.else.212, %if.then.211 - %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.211 ], [ %callN, %if.else.212 ] + %bp = phi { ptr, i64 } [ { ptr @str.202, i64 4 }, %if.then.211 ], [ %callN, %if.else.212 ] + 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.227, label %if.else.228 + +if.then.227: ; preds = %entry + br label %if.merge.229 + +if.else.228: ; 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.207, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.206, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.229 + +if.merge.229: ; preds = %if.else.228, %if.then.227 + %bp = phi { ptr, i64 } [ { ptr @str.205, i64 4 }, %if.then.227 ], [ %callN, %if.else.228 ] + 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.230, label %if.else.231 + +if.then.230: ; preds = %entry + br label %if.merge.232 + +if.else.231: ; 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.210, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.232 + +if.merge.232: ; preds = %if.else.231, %if.then.230 + %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.230 ], [ %callN, %if.else.231 ] + 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.233, label %if.else.234 + +if.then.233: ; preds = %entry + br label %if.merge.235 + +if.else.234: ; 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.213, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.235 + +if.merge.235: ; preds = %if.else.234, %if.then.233 + %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.233 ], [ %callN, %if.else.234 ] ret { ptr, i64 } %bp } @@ -2856,20 +3116,20 @@ entry: 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.214, label %if.else.215 + br i1 %icmp, label %if.then.236, label %if.else.237 -if.then.214: ; preds = %entry - br label %if.merge.216 +if.then.236: ; preds = %entry + br label %if.merge.238 -if.else.215: ; preds = %entry +if.else.237: ; 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.210, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.216 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.238 -if.merge.216: ; preds = %if.else.215, %if.then.214 - %bp = phi { ptr, i64 } [ { ptr @str.208, i64 4 }, %if.then.214 ], [ %callN, %if.else.215 ] +if.merge.238: ; preds = %if.else.237, %if.then.236 + %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.236 ], [ %callN, %if.else.237 ] ret { ptr, i64 } %bp } @@ -2883,20 +3143,20 @@ entry: 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.217, label %if.else.218 + br i1 %icmp, label %if.then.239, label %if.else.240 -if.then.217: ; preds = %entry - br label %if.merge.219 +if.then.239: ; preds = %entry + br label %if.merge.241 -if.else.218: ; preds = %entry +if.else.240: ; 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.213, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.219 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.219, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.241 -if.merge.219: ; preds = %if.else.218, %if.then.217 - %bp = phi { ptr, i64 } [ { ptr @str.211, i64 4 }, %if.then.217 ], [ %callN, %if.else.218 ] +if.merge.241: ; preds = %if.else.240, %if.then.239 + %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.239 ], [ %callN, %if.else.240 ] ret { ptr, i64 } %bp } @@ -2911,20 +3171,20 @@ entry: 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.220, label %if.else.221 + br i1 %icmp, label %if.then.242, label %if.else.243 -if.then.220: ; preds = %entry - br label %if.merge.222 +if.then.242: ; preds = %entry + br label %if.merge.244 -if.else.221: ; preds = %entry +if.else.243: ; 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.216, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.222 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.222, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.244 -if.merge.222: ; preds = %if.else.221, %if.then.220 - %bp = phi { ptr, i64 } [ { ptr @str.214, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] +if.merge.244: ; preds = %if.else.243, %if.then.242 + %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] ret { ptr, i64 } %bp } @@ -2939,20 +3199,20 @@ entry: 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.223, label %if.else.224 + br i1 %icmp, label %if.then.245, label %if.else.246 -if.then.223: ; preds = %entry - br label %if.merge.225 +if.then.245: ; preds = %entry + br label %if.merge.247 -if.else.224: ; preds = %entry +if.else.246: ; 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.219, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.225 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.247 -if.merge.225: ; preds = %if.else.224, %if.then.223 - %bp = phi { ptr, i64 } [ { ptr @str.217, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] +if.merge.247: ; preds = %if.else.246, %if.then.245 + %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] ret { ptr, i64 } %bp } @@ -2967,20 +3227,20 @@ entry: 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.226, label %if.else.227 + br i1 %icmp, label %if.then.248, label %if.else.249 -if.then.226: ; preds = %entry - br label %if.merge.228 +if.then.248: ; preds = %entry + br label %if.merge.250 -if.else.227: ; preds = %entry +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.222, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.228 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.250 -if.merge.228: ; preds = %if.else.227, %if.then.226 - %bp = phi { ptr, i64 } [ { ptr @str.220, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] +if.merge.250: ; preds = %if.else.249, %if.then.248 + %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] ret { ptr, i64 } %bp } @@ -2995,20 +3255,20 @@ entry: 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.229, label %if.else.230 + br i1 %icmp, label %if.then.251, label %if.else.252 -if.then.229: ; preds = %entry - br label %if.merge.231 +if.then.251: ; preds = %entry + br label %if.merge.253 -if.else.230: ; preds = %entry +if.else.252: ; 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.225, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.231 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.231, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.253 -if.merge.231: ; preds = %if.else.230, %if.then.229 - %bp = phi { ptr, i64 } [ { ptr @str.223, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] +if.merge.253: ; preds = %if.else.252, %if.then.251 + %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] ret { ptr, i64 } %bp } @@ -3023,20 +3283,20 @@ entry: 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.232, label %if.else.233 + br i1 %icmp, label %if.then.254, label %if.else.255 -if.then.232: ; preds = %entry - br label %if.merge.234 +if.then.254: ; preds = %entry + br label %if.merge.256 -if.else.233: ; preds = %entry +if.else.255: ; 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.228, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.234 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.256 -if.merge.234: ; preds = %if.else.233, %if.then.232 - %bp = phi { ptr, i64 } [ { ptr @str.226, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] +if.merge.256: ; preds = %if.else.255, %if.then.254 + %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] ret { ptr, i64 } %bp } @@ -3051,20 +3311,20 @@ entry: 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.235, label %if.else.236 + br i1 %icmp, label %if.then.257, label %if.else.258 -if.then.235: ; preds = %entry - br label %if.merge.237 +if.then.257: ; preds = %entry + br label %if.merge.259 -if.else.236: ; preds = %entry +if.else.258: ; 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.231, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.237 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.237, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.259 -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.229, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] ret { ptr, i64 } %bp } @@ -3079,20 +3339,20 @@ entry: 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.238, label %if.else.239 + br i1 %icmp, label %if.then.260, label %if.else.261 -if.then.238: ; preds = %entry - br label %if.merge.240 +if.then.260: ; preds = %entry + br label %if.merge.262 -if.else.239: ; preds = %entry +if.else.261: ; 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.234, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 10 }, { ptr, i64 } %callN) - br label %if.merge.240 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.240, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 10 }, { ptr, i64 } %callN) + br label %if.merge.262 -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.232, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] ret { ptr, i64 } %bp } @@ -3107,20 +3367,20 @@ entry: 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.241, label %if.else.242 + br i1 %icmp, label %if.then.263, label %if.else.264 -if.then.241: ; preds = %entry - br label %if.merge.243 +if.then.263: ; preds = %entry + br label %if.merge.265 -if.else.242: ; preds = %entry +if.else.264: ; 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.237, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.243 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.243, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.265 -if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.235, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3135,20 +3395,20 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.240, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.246, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.238, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } @@ -3163,20 +3423,20 @@ entry: 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.247, label %if.else.248 + br i1 %icmp, label %if.then.269, label %if.else.270 -if.then.247: ; preds = %entry - br label %if.merge.249 +if.then.269: ; preds = %entry + br label %if.merge.271 -if.else.248: ; preds = %entry +if.else.270: ; 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.243, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.249 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.271 -if.merge.249: ; preds = %if.else.248, %if.then.247 - %bp = phi { ptr, i64 } [ { ptr @str.241, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] +if.merge.271: ; preds = %if.else.270, %if.then.269 + %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] ret { ptr, i64 } %bp } @@ -3191,20 +3451,20 @@ entry: 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.250, label %if.else.251 + br i1 %icmp, label %if.then.272, label %if.else.273 -if.then.250: ; preds = %entry - br label %if.merge.252 +if.then.272: ; preds = %entry + br label %if.merge.274 -if.else.251: ; preds = %entry +if.else.273: ; 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.246, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.252 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.252, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.274 -if.merge.252: ; preds = %if.else.251, %if.then.250 - %bp = phi { ptr, i64 } [ { ptr @str.244, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] +if.merge.274: ; preds = %if.else.273, %if.then.272 + %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] ret { ptr, i64 } %bp } @@ -3219,20 +3479,20 @@ entry: 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.253, label %if.else.254 + br i1 %icmp, label %if.then.275, label %if.else.276 -if.then.253: ; preds = %entry - br label %if.merge.255 +if.then.275: ; preds = %entry + br label %if.merge.277 -if.else.254: ; preds = %entry +if.else.276: ; 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.249, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.255 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.255, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.277 -if.merge.255: ; preds = %if.else.254, %if.then.253 - %bp = phi { ptr, i64 } [ { ptr @str.247, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] +if.merge.277: ; preds = %if.else.276, %if.then.275 + %bp = phi { ptr, i64 } [ { ptr @str.253, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] ret { ptr, i64 } %bp } @@ -3247,23 +3507,21 @@ entry: 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.256, label %if.else.257 + br i1 %icmp, label %if.then.278, label %if.else.279 -if.then.256: ; preds = %entry - br label %if.merge.258 +if.then.278: ; preds = %entry + br label %if.merge.280 -if.else.257: ; preds = %entry +if.else.279: ; 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.252, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.258 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.258, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.257, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.280 -if.merge.258: ; preds = %if.else.257, %if.then.256 - %bp = phi { ptr, i64 } [ { ptr @str.250, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] +if.merge.280: ; preds = %if.else.279, %if.then.278 + %bp = phi { ptr, i64 } [ { ptr @str.256, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/1009-errors-catch.ir b/examples/expected/1009-errors-catch.ir index 53c796e..19ef5c5 100644 --- a/examples/expected/1009-errors-catch.ir +++ b/examples/expected/1009-errors-catch.ir @@ -1,262 +1,269 @@ @__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 } @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [75 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] @tag.str = private constant [1 x i8] zeroinitializer -@tag.str.6 = private constant [4 x i8] c"Bad\00" -@tag.str.7 = private constant [6 x i8] c"Empty\00" -@tag_names = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @tag.str, i64 0 }, { ptr, i64 } { ptr @tag.str.6, i64 3 }, { ptr, i64 } { ptr @tag.str.7, i64 5 }] +@tag.str.7 = private constant [4 x i8] c"Bad\00" +@tag.str.8 = private constant [6 x i8] c"Empty\00" +@tag_names = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @tag.str, i64 0 }, { ptr, i64 } { ptr @tag.str.7, i64 3 }, { ptr, i64 } { ptr @tag.str.8, i64 5 }] @tn.str = private constant [13 x i8] c"\00" -@tn.str.8 = private constant [5 x i8] c"bool\00" -@tn.str.9 = private constant [3 x i8] c"s8\00" -@tn.str.10 = private constant [4 x i8] c"s16\00" -@tn.str.11 = private constant [4 x i8] c"s32\00" -@tn.str.12 = private constant [4 x i8] c"s64\00" -@tn.str.13 = private constant [3 x i8] c"u8\00" -@tn.str.14 = private constant [4 x i8] c"u16\00" -@tn.str.15 = private constant [4 x i8] c"u32\00" -@tn.str.16 = private constant [4 x i8] c"u64\00" -@tn.str.17 = private constant [4 x i8] c"f32\00" -@tn.str.18 = private constant [4 x i8] c"f64\00" -@tn.str.19 = private constant [7 x i8] c"string\00" -@tn.str.20 = private constant [4 x i8] c"Any\00" -@tn.str.21 = private constant [9 x i8] c"noreturn\00" -@tn.str.22 = private constant [6 x i8] c"isize\00" -@tn.str.23 = private constant [6 x i8] c"usize\00" -@tn.str.24 = private constant [5 x i8] c"void\00" -@tn.str.25 = private constant [6 x i8] c"*void\00" -@tn.str.26 = private constant [16 x i8] c"Source_Location\00" -@tn.str.27 = private constant [10 x i8] c"Allocator\00" -@tn.str.28 = private constant [11 x i8] c"CAllocator\00" -@tn.str.29 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.30 = private constant [4 x i8] c"GPA\00" -@tn.str.31 = private constant [5 x i8] c"*GPA\00" -@tn.str.32 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.33 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.34 = private constant [6 x i8] c"Arena\00" -@tn.str.35 = private constant [7 x i8] c"*Arena\00" -@tn.str.36 = private constant [6 x i8] c"[*]u8\00" -@tn.str.37 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.38 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.39 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.40 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.41 = private constant [8 x i8] c"Context\00" -@tn.str.42 = private constant [9 x i8] c"[]string\00" -@tn.str.43 = private constant [2 x i8] c"E\00" -@tn.str.44 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.45 = private constant [5 x i8] c"*s64\00" -@tn.str.46 = private constant [7 x i8] c"**void\00" -@tn.str.47 = private constant [5 x i8] c"*s32\00" -@tn.str.48 = private constant [3 x i8] c"*E\00" -@tn.str.49 = private constant [8 x i8] c"*string\00" -@tn.str.50 = private constant [6 x i8] c"[]Any\00" -@tn.str.51 = private constant [5 x i8] c"*Any\00" -@tn.str.52 = private constant [7 x i8] c"[1]Any\00" -@tn.str.53 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.54 = private constant [7 x i8] c"*[]Any\00" -@tn.str.55 = private constant [4 x i8] c"*u8\00" -@tn.str.56 = private constant [6 x i8] c"*bool\00" -@tn.str.57 = private constant [5 x i8] c"*f64\00" -@tn.str.58 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.59 = private constant [11 x i8] c"*Allocator\00" -@tn.str.60 = private constant [9 x i8] c"*Context\00" -@tn.str.61 = private constant [5 x i8] c"*u32\00" -@tn.str.62 = private constant [10 x i8] c"*[]string\00" -@tn.str.63 = private constant [6 x i8] c"**GPA\00" -@tn.str.64 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.65 = private constant [8 x i8] c"**Arena\00" -@tn.str.66 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.67 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.68 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.69 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.70 = private constant [6 x i8] c"**s64\00" -@tn.str.71 = private constant [8 x i8] c"***void\00" -@tn.str.72 = private constant [6 x i8] c"**s32\00" -@tn.str.73 = private constant [4 x i8] c"**E\00" -@tn.str.74 = private constant [9 x i8] c"**string\00" -@tn.str.75 = private constant [6 x i8] c"**Any\00" -@tn.str.76 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.77 = private constant [8 x i8] c"**[]Any\00" -@tn.str.78 = private constant [5 x i8] c"**u8\00" -@tn.str.79 = private constant [7 x i8] c"**bool\00" -@__sx_type_names = private constant [73 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.8, i64 4 }, { ptr, i64 } { ptr @tn.str.9, i64 2 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { ptr, i64 } { ptr @tn.str.13, i64 2 }, { 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 3 }, { ptr, i64 } { ptr @tn.str.19, i64 6 }, { ptr, i64 } { ptr @tn.str.20, i64 3 }, { ptr, i64 } { ptr @tn.str.21, i64 8 }, { ptr, i64 } { ptr @tn.str.22, i64 5 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 4 }, { ptr, i64 } { ptr @tn.str.25, i64 5 }, { ptr, i64 } { ptr @tn.str.26, i64 15 }, { ptr, i64 } { ptr @tn.str.27, i64 9 }, { ptr, i64 } { ptr @tn.str.28, i64 10 }, { ptr, i64 } { ptr @tn.str.29, i64 11 }, { ptr, i64 } { ptr @tn.str.30, i64 3 }, { ptr, i64 } { ptr @tn.str.31, i64 4 }, { ptr, i64 } { ptr @tn.str.32, i64 10 }, { ptr, i64 } { ptr @tn.str.33, i64 11 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 6 }, { ptr, i64 } { ptr @tn.str.36, i64 5 }, { ptr, i64 } { ptr @tn.str.37, i64 8 }, { ptr, i64 } { ptr @tn.str.38, i64 9 }, { ptr, i64 } { ptr @tn.str.39, i64 17 }, { ptr, i64 } { ptr @tn.str.40, i64 18 }, { ptr, i64 } { ptr @tn.str.41, i64 7 }, { ptr, i64 } { ptr @tn.str.42, i64 8 }, { ptr, i64 } { ptr @tn.str.43, i64 1 }, { ptr, i64 } { ptr @tn.str.44, i64 12 }, { ptr, i64 } { ptr @tn.str.45, i64 4 }, { ptr, i64 } { ptr @tn.str.46, i64 6 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 2 }, { ptr, i64 } { ptr @tn.str.49, i64 7 }, { ptr, i64 } { ptr @tn.str.50, i64 5 }, { ptr, i64 } { ptr @tn.str.51, i64 4 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 3 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 16 }, { ptr, i64 } { ptr @tn.str.59, i64 10 }, { ptr, i64 } { ptr @tn.str.60, i64 8 }, { ptr, i64 } { ptr @tn.str.61, i64 4 }, { ptr, i64 } { ptr @tn.str.62, i64 9 }, { ptr, i64 } { ptr @tn.str.63, i64 5 }, { ptr, i64 } { ptr @tn.str.64, i64 12 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 6 }, { ptr, i64 } { ptr @tn.str.67, i64 10 }, { ptr, i64 } { ptr @tn.str.68, i64 19 }, { ptr, i64 } { ptr @tn.str.69, i64 13 }, { ptr, i64 } { ptr @tn.str.70, i64 5 }, { ptr, i64 } { ptr @tn.str.71, i64 7 }, { ptr, i64 } { ptr @tn.str.72, i64 5 }, { ptr, i64 } { ptr @tn.str.73, i64 3 }, { ptr, i64 } { ptr @tn.str.74, i64 8 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 8 }, { ptr, i64 } { ptr @tn.str.77, i64 7 }, { ptr, i64 } { ptr @tn.str.78, i64 4 }, { ptr, i64 } { ptr @tn.str.79, i64 6 }] -@str.80 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.81 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.82 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@tn.str.9 = private constant [5 x i8] c"bool\00" +@tn.str.10 = private constant [3 x i8] c"s8\00" +@tn.str.11 = private constant [4 x i8] c"s16\00" +@tn.str.12 = private constant [4 x i8] c"s32\00" +@tn.str.13 = private constant [4 x i8] c"s64\00" +@tn.str.14 = private constant [3 x i8] c"u8\00" +@tn.str.15 = private constant [4 x i8] c"u16\00" +@tn.str.16 = private constant [4 x i8] c"u32\00" +@tn.str.17 = private constant [4 x i8] c"u64\00" +@tn.str.18 = private constant [4 x i8] c"f32\00" +@tn.str.19 = private constant [4 x i8] c"f64\00" +@tn.str.20 = private constant [7 x i8] c"string\00" +@tn.str.21 = private constant [4 x i8] c"Any\00" +@tn.str.22 = private constant [9 x i8] c"noreturn\00" +@tn.str.23 = private constant [6 x i8] c"isize\00" +@tn.str.24 = private constant [6 x i8] c"usize\00" +@tn.str.25 = private constant [5 x i8] c"void\00" +@tn.str.26 = private constant [6 x i8] c"*void\00" +@tn.str.27 = private constant [16 x i8] c"Source_Location\00" +@tn.str.28 = private constant [10 x i8] c"Allocator\00" +@tn.str.29 = private constant [11 x i8] c"CAllocator\00" +@tn.str.30 = private constant [12 x i8] c"*CAllocator\00" +@tn.str.31 = private constant [4 x i8] c"GPA\00" +@tn.str.32 = private constant [5 x i8] c"*GPA\00" +@tn.str.33 = private constant [11 x i8] c"ArenaChunk\00" +@tn.str.34 = private constant [12 x i8] c"*ArenaChunk\00" +@tn.str.35 = private constant [6 x i8] c"Arena\00" +@tn.str.36 = private constant [7 x i8] c"*Arena\00" +@tn.str.37 = private constant [6 x i8] c"[*]u8\00" +@tn.str.38 = private constant [9 x i8] c"BufAlloc\00" +@tn.str.39 = private constant [10 x i8] c"*BufAlloc\00" +@tn.str.40 = private constant [18 x i8] c"TrackingAllocator\00" +@tn.str.41 = private constant [19 x i8] c"*TrackingAllocator\00" +@tn.str.42 = private constant [8 x i8] c"Context\00" +@tn.str.43 = private constant [7 x i8] c"[4]s64\00" +@tn.str.44 = private constant [9 x i8] c"[]string\00" +@tn.str.45 = private constant [2 x i8] c"E\00" +@tn.str.46 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.47 = private constant [5 x i8] c"*s64\00" +@tn.str.48 = private constant [7 x i8] c"**void\00" +@tn.str.49 = private constant [5 x i8] c"*s32\00" +@tn.str.50 = private constant [3 x i8] c"*E\00" +@tn.str.51 = private constant [8 x i8] c"*string\00" +@tn.str.52 = private constant [6 x i8] c"[]Any\00" +@tn.str.53 = private constant [5 x i8] c"*Any\00" +@tn.str.54 = private constant [7 x i8] c"[1]Any\00" +@tn.str.55 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.56 = private constant [7 x i8] c"*[]Any\00" +@tn.str.57 = private constant [4 x i8] c"*u8\00" +@tn.str.58 = private constant [6 x i8] c"*bool\00" +@tn.str.59 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.60 = private constant [5 x i8] c"*f64\00" +@tn.str.61 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.62 = private constant [11 x i8] c"*Allocator\00" +@tn.str.63 = private constant [9 x i8] c"*Context\00" +@tn.str.64 = private constant [5 x i8] c"*u32\00" +@tn.str.65 = private constant [10 x i8] c"*[]string\00" +@tn.str.66 = private constant [6 x i8] c"**GPA\00" +@tn.str.67 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.68 = private constant [8 x i8] c"**Arena\00" +@tn.str.69 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.70 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.71 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.72 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.73 = private constant [6 x i8] c"**s64\00" +@tn.str.74 = private constant [8 x i8] c"***void\00" +@tn.str.75 = private constant [6 x i8] c"**s32\00" +@tn.str.76 = private constant [4 x i8] c"**E\00" +@tn.str.77 = private constant [9 x i8] c"**string\00" +@tn.str.78 = private constant [6 x i8] c"**Any\00" +@tn.str.79 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.80 = private constant [8 x i8] c"**[]Any\00" +@tn.str.81 = private constant [5 x i8] c"**u8\00" +@tn.str.82 = private constant [7 x i8] c"**bool\00" +@__sx_type_names = private constant [75 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.9, i64 4 }, { ptr, i64 } { ptr @tn.str.10, i64 2 }, { ptr, i64 } { ptr @tn.str.11, i64 3 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { ptr, i64 } { ptr @tn.str.13, i64 3 }, { ptr, i64 } { ptr @tn.str.14, i64 2 }, { 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 3 }, { ptr, i64 } { ptr @tn.str.19, i64 3 }, { ptr, i64 } { ptr @tn.str.20, i64 6 }, { ptr, i64 } { ptr @tn.str.21, i64 3 }, { ptr, i64 } { ptr @tn.str.22, i64 8 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 5 }, { ptr, i64 } { ptr @tn.str.25, i64 4 }, { ptr, i64 } { ptr @tn.str.26, i64 5 }, { ptr, i64 } { ptr @tn.str.27, i64 15 }, { ptr, i64 } { ptr @tn.str.28, i64 9 }, { ptr, i64 } { ptr @tn.str.29, i64 10 }, { ptr, i64 } { ptr @tn.str.30, i64 11 }, { ptr, i64 } { ptr @tn.str.31, i64 3 }, { ptr, i64 } { ptr @tn.str.32, i64 4 }, { ptr, i64 } { ptr @tn.str.33, i64 10 }, { ptr, i64 } { ptr @tn.str.34, i64 11 }, { ptr, i64 } { ptr @tn.str.35, i64 5 }, { ptr, i64 } { ptr @tn.str.36, i64 6 }, { ptr, i64 } { ptr @tn.str.37, i64 5 }, { ptr, i64 } { ptr @tn.str.38, i64 8 }, { ptr, i64 } { ptr @tn.str.39, i64 9 }, { ptr, i64 } { ptr @tn.str.40, i64 17 }, { ptr, i64 } { ptr @tn.str.41, i64 18 }, { ptr, i64 } { ptr @tn.str.42, i64 7 }, { ptr, i64 } { ptr @tn.str.43, i64 6 }, { ptr, i64 } { ptr @tn.str.44, i64 8 }, { ptr, i64 } { ptr @tn.str.45, i64 1 }, { ptr, i64 } { ptr @tn.str.46, i64 12 }, { ptr, i64 } { ptr @tn.str.47, i64 4 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 2 }, { ptr, i64 } { ptr @tn.str.51, i64 7 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 4 }, { ptr, i64 } { ptr @tn.str.54, i64 6 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 3 }, { ptr, i64 } { ptr @tn.str.58, i64 5 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 4 }, { ptr, i64 } { ptr @tn.str.61, i64 16 }, { ptr, i64 } { ptr @tn.str.62, i64 10 }, { ptr, i64 } { ptr @tn.str.63, i64 8 }, { ptr, i64 } { ptr @tn.str.64, i64 4 }, { ptr, i64 } { ptr @tn.str.65, i64 9 }, { ptr, i64 } { ptr @tn.str.66, i64 5 }, { ptr, i64 } { ptr @tn.str.67, i64 12 }, { ptr, i64 } { ptr @tn.str.68, i64 7 }, { ptr, i64 } { ptr @tn.str.69, i64 6 }, { ptr, i64 } { ptr @tn.str.70, i64 10 }, { ptr, i64 } { ptr @tn.str.71, i64 19 }, { ptr, i64 } { ptr @tn.str.72, i64 13 }, { ptr, i64 } { ptr @tn.str.73, i64 5 }, { ptr, i64 } { ptr @tn.str.74, i64 7 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 3 }, { ptr, i64 } { ptr @tn.str.77, i64 8 }, { ptr, i64 } { ptr @tn.str.78, i64 5 }, { ptr, i64 } { ptr @tn.str.79, i64 8 }, { ptr, i64 } { ptr @tn.str.80, i64 7 }, { ptr, i64 } { ptr @tn.str.81, i64 4 }, { ptr, i64 } { ptr @tn.str.82, i64 6 }] @str.83 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.84 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.85 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.86 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.87 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.88 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.89 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.84 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.85 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.86 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.87 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.88 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.89 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.90 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.91 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.92 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.93 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.94 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.95 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.96 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.97 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.98 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.99 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.100 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.101 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @frame.str = private unnamed_addr constant [21 x i8] c"1009-errors-catch.sx\00" -@frame.str.99 = private unnamed_addr constant [5 x i8] c"must\00" -@frame.str.100 = private unnamed_addr constant [35 x i8] c" if n < 0 { raise error.Bad; }\00" -@trace.frame = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 20 }, i32 16, i32 17, { ptr, i64 } { ptr @frame.str.99, i64 4 }, { ptr, i64 } { ptr @frame.str.100, i64 34 } } -@frame.str.101 = private unnamed_addr constant [37 x i8] c" if n == 0 { raise error.Empty; }\00" -@trace.frame.102 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 20 }, i32 17, i32 17, { ptr, i64 } { ptr @frame.str.99, i64 4 }, { ptr, i64 } { ptr @frame.str.101, i64 36 } } -@frame.str.103 = private unnamed_addr constant [12 x i8] c"handle_some\00" -@frame.str.104 = private unnamed_addr constant [65 x i8] c" raise e; // re-raise the rest\00" -@trace.frame.105 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 20 }, i32 46, i32 9, { ptr, i64 } { ptr @frame.str.103, i64 11 }, { ptr, i64 } { ptr @frame.str.104, i64 64 } } -@str.106 = private unnamed_addr constant [18 x i8] c"catch result: {}\0A\00", align 1 -@str.107 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.108 = private unnamed_addr constant [18 x i8] c"catch result: {}\0A\00", align 1 -@str.109 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.110 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.111 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.112 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@frame.str.102 = private unnamed_addr constant [5 x i8] c"must\00" +@frame.str.103 = private unnamed_addr constant [35 x i8] c" if n < 0 { raise error.Bad; }\00" +@trace.frame = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 20 }, i32 16, i32 17, { ptr, i64 } { ptr @frame.str.102, i64 4 }, { ptr, i64 } { ptr @frame.str.103, i64 34 } } +@frame.str.104 = private unnamed_addr constant [37 x i8] c" if n == 0 { raise error.Empty; }\00" +@trace.frame.105 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 20 }, i32 17, i32 17, { ptr, i64 } { ptr @frame.str.102, i64 4 }, { ptr, i64 } { ptr @frame.str.104, i64 36 } } +@frame.str.106 = private unnamed_addr constant [12 x i8] c"handle_some\00" +@frame.str.107 = private unnamed_addr constant [65 x i8] c" raise e; // re-raise the rest\00" +@trace.frame.108 = private constant { { ptr, i64 }, i32, i32, { ptr, i64 }, { ptr, i64 } } { { ptr, i64 } { ptr @frame.str, i64 20 }, i32 46, i32 9, { ptr, i64 } { ptr @frame.str.106, i64 11 }, { ptr, i64 } { ptr @frame.str.107, i64 64 } } +@str.109 = private unnamed_addr constant [18 x i8] c"catch result: {}\0A\00", align 1 +@str.110 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.111 = private unnamed_addr constant [18 x i8] c"catch result: {}\0A\00", align 1 +@str.112 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.113 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.114 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.113 = private constant [5 x i8] c"line\00" -@fld.str.114 = private constant [4 x i8] c"col\00" -@fld.str.115 = 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.113, i64 4 }, { ptr, i64 } { ptr @fld.str.114, i64 3 }, { ptr, i64 } { ptr @fld.str.115, i64 4 }] -@str.116 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.117 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.118 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.119 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.121 = private constant [4 x i8] c"ctx\00" -@fld.str.122 = private constant [6 x i8] c"alloc\00" -@fld.str.123 = private constant [8 x i8] c"dealloc\00" -@field_names.124 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.121, i64 3 }, { ptr, i64 } { ptr @fld.str.122, i64 5 }, { ptr, i64 } { ptr @fld.str.123, i64 7 }] -@str.125 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.126 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.127 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.129 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.130 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.131 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.132 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.133 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.134 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.136 = private constant [12 x i8] c"alloc_count\00" -@field_names.137 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.136, i64 11 }] -@str.138 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.139 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.140 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.141 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.143 = private constant [5 x i8] c"next\00" -@fld.str.144 = private constant [4 x i8] c"cap\00" -@field_names.145 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.143, i64 4 }, { ptr, i64 } { ptr @fld.str.144, i64 3 }] -@str.146 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.147 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.148 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.149 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.150 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.151 = private constant [6 x i8] c"first\00" -@fld.str.152 = private constant [10 x i8] c"end_index\00" -@fld.str.153 = private constant [7 x i8] c"parent\00" -@field_names.154 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.151, i64 5 }, { ptr, i64 } { ptr @fld.str.152, i64 9 }, { ptr, i64 } { ptr @fld.str.153, i64 6 }] -@str.155 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.156 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.157 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.158 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.159 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.160 = private constant [4 x i8] c"buf\00" -@fld.str.161 = private constant [4 x i8] c"len\00" -@fld.str.162 = private constant [4 x i8] c"pos\00" -@field_names.163 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.160, i64 3 }, { ptr, i64 } { ptr @fld.str.161, i64 3 }, { ptr, i64 } { ptr @fld.str.162, i64 3 }] -@str.164 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.165 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.166 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.167 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.168 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.169 = private constant [7 x i8] c"parent\00" -@fld.str.170 = private constant [12 x i8] c"alloc_count\00" -@fld.str.171 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.172 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.173 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.169, i64 6 }, { ptr, i64 } { ptr @fld.str.170, i64 11 }, { ptr, i64 } { ptr @fld.str.171, i64 13 }, { ptr, i64 } { ptr @fld.str.172, i64 17 }] -@str.174 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.175 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.176 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.177 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.178 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.179 = private constant [10 x i8] c"allocator\00" -@fld.str.180 = private constant [5 x i8] c"data\00" -@field_names.181 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.179, i64 9 }, { ptr, i64 } { ptr @fld.str.180, i64 4 }] -@str.182 = private unnamed_addr constant [3 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 [2 x i8] c"]\00", align 1 -@str.185 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.116 = private constant [5 x i8] c"line\00" +@fld.str.117 = private constant [4 x i8] c"col\00" +@fld.str.118 = 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.116, i64 4 }, { ptr, i64 } { ptr @fld.str.117, i64 3 }, { ptr, i64 } { ptr @fld.str.118, i64 4 }] +@str.119 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.120 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.121 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.122 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.124 = private constant [4 x i8] c"ctx\00" +@fld.str.125 = private constant [6 x i8] c"alloc\00" +@fld.str.126 = private constant [8 x i8] c"dealloc\00" +@field_names.127 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.124, i64 3 }, { ptr, i64 } { ptr @fld.str.125, i64 5 }, { ptr, i64 } { ptr @fld.str.126, i64 7 }] +@str.128 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.129 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.130 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.133 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.134 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.135 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.136 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.137 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.139 = private constant [12 x i8] c"alloc_count\00" +@field_names.140 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.139, i64 11 }] +@str.141 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.142 = private unnamed_addr constant [11 x i8] c"ArenaChunk\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 [5 x i8] c"next\00" +@fld.str.147 = private constant [4 x i8] c"cap\00" +@field_names.148 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.146, i64 4 }, { ptr, i64 } { ptr @fld.str.147, i64 3 }] +@str.149 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.150 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.151 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.152 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.153 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.154 = private constant [6 x i8] c"first\00" +@fld.str.155 = private constant [10 x i8] c"end_index\00" +@fld.str.156 = private constant [7 x i8] c"parent\00" +@field_names.157 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.154, i64 5 }, { ptr, i64 } { ptr @fld.str.155, i64 9 }, { ptr, i64 } { ptr @fld.str.156, i64 6 }] +@str.158 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.159 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.160 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.162 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.163 = private constant [4 x i8] c"buf\00" +@fld.str.164 = private constant [4 x i8] c"len\00" +@fld.str.165 = private constant [4 x i8] c"pos\00" +@field_names.166 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.163, i64 3 }, { ptr, i64 } { ptr @fld.str.164, i64 3 }, { ptr, i64 } { ptr @fld.str.165, i64 3 }] +@str.167 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.168 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.169 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.170 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.171 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.172 = private constant [7 x i8] c"parent\00" +@fld.str.173 = private constant [12 x i8] c"alloc_count\00" +@fld.str.174 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.175 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.176 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.172, i64 6 }, { ptr, i64 } { ptr @fld.str.173, i64 11 }, { ptr, i64 } { ptr @fld.str.174, i64 13 }, { ptr, i64 } { ptr @fld.str.175, i64 17 }] +@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.178 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.179 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.180 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.181 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.182 = private constant [10 x i8] c"allocator\00" +@fld.str.183 = private constant [5 x i8] c"data\00" +@field_names.184 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.182, i64 9 }, { ptr, i64 } { ptr @fld.str.183, i64 4 }] +@str.185 = private unnamed_addr constant [3 x i8] c": \00", align 1 @str.186 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.187 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.188 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.189 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.190 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.191 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.192 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.193 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.194 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.195 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.196 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.197 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.192 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.193 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.194 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.195 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.196 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.197 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.198 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.199 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.199 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.200 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.201 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.202 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.202 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.203 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.204 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.205 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.205 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.206 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.207 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.208 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.208 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.209 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.210 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.211 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.211 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.212 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.213 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.214 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.214 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.215 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.216 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.217 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.217 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.218 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.219 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.220 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.220 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.221 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.222 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.223 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.223 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.224 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.225 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.226 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 +@str.226 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.227 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.228 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.229 = private unnamed_addr constant [11 x i8] c"*error_set\00", align 1 +@str.229 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.230 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.231 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.232 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.232 = private unnamed_addr constant [5 x i8] c"*s32\00", align 1 @str.233 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.234 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.235 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.235 = private unnamed_addr constant [11 x i8] c"*error_set\00", align 1 @str.236 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.237 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.238 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.238 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.239 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.240 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.241 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.241 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.242 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.243 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.244 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.244 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.245 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.246 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.247 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.247 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.248 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.249 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.250 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.251 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.252 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.253 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.254 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 ; Function Attrs: nounwind declare void @out(ptr) #0 @@ -395,38 +402,43 @@ if.merge.45: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.46, label %if.else.47 - -if.then.46: ; preds = %if.merge.45 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.48 - -if.else.47: ; preds = %if.merge.45 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.48 - -if.merge.48: ; preds = %if.else.47, %if.then.46 - %bp = phi i64 [ %sub, %if.then.46 ], [ %loadN, %if.else.47 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.49 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.46 -while.hdr.49: ; preds = %while.body.50, %if.merge.48 +while.hdr.46: ; preds = %if.merge.50, %if.merge.45 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.50, label %while.exit.51 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.47, label %while.exit.48 -while.body.50: ; preds = %while.hdr.49 +while.body.47: ; preds = %while.hdr.46 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.49, label %if.merge.50 + +while.exit.48: ; preds = %while.hdr.46 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.51, label %if.merge.52 + +if.then.49: ; preds = %while.body.47 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.50 + +if.merge.50: ; preds = %if.then.49, %while.body.47 + %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 @@ -439,50 +451,178 @@ while.body.50: ; preds = %while.hdr.49 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.49 + br label %while.hdr.46 -while.exit.51: ; preds = %while.hdr.49 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.52, label %if.merge.53 - -if.then.52: ; preds = %while.exit.51 +if.then.51: ; preds = %while.exit.48 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.53 + br label %if.merge.52 -if.merge.53: ; preds = %if.then.52, %while.exit.51 +if.merge.52: ; preds = %if.then.51, %while.exit.48 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.86, label %if.merge.87 + +if.then.86: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.87: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.96 + +while.hdr.96: ; preds = %while.exit.107, %if.merge.87 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.100, label %or.rhs.99 + +while.body.97: ; preds = %or.merge.104 + %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.105 + +while.exit.98: ; preds = %or.merge.104 + %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.99: ; preds = %while.hdr.96 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.100 + +or.merge.100: ; preds = %or.rhs.99, %while.hdr.96 + %bp = phi i1 [ true, %while.hdr.96 ], [ %icmpN, %or.rhs.99 ] + br i1 %bp, label %or.merge.102, label %or.rhs.101 + +or.rhs.101: ; preds = %or.merge.100 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.102 + +or.merge.102: ; preds = %or.rhs.101, %or.merge.100 + %bpN = phi i1 [ true, %or.merge.100 ], [ %icmpN, %or.rhs.101 ] + br i1 %bpN, label %or.merge.104, label %or.rhs.103 + +or.rhs.103: ; preds = %or.merge.102 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.104 + +or.merge.104: ; preds = %or.rhs.103, %or.merge.102 + %bpN = phi i1 [ true, %or.merge.102 ], [ %icmpN, %or.rhs.103 ] + br i1 %bpN, label %while.body.97, label %while.exit.98 + +while.hdr.105: ; preds = %while.body.106, %while.body.97 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.106, label %while.exit.107 + +while.body.106: ; preds = %while.hdr.105 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.105 + +while.exit.107: ; preds = %while.hdr.105 + %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.96 +} + ; 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.84, label %if.else.85 + br i1 %load, label %if.then.108, label %if.else.109 -if.then.84: ; preds = %entry - br label %if.merge.86 +if.then.108: ; preds = %entry + br label %if.merge.110 -if.else.85: ; preds = %entry - br label %if.merge.86 +if.else.109: ; preds = %entry + br label %if.merge.110 -if.merge.86: ; preds = %if.else.85, %if.then.84 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.84 ], [ { ptr @str.2, i64 5 }, %if.else.85 ] +if.merge.110: ; preds = %if.else.109, %if.then.108 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.108 ], [ { ptr @str.3, i64 5 }, %if.else.109 ] ret { ptr, i64 } %bp } @@ -496,19 +636,19 @@ entry: %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.90, label %if.else.91 + br i1 %loadN, label %if.then.114, label %if.else.115 -if.then.90: ; preds = %entry +if.then.114: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.92 + br label %if.merge.116 -if.else.91: ; preds = %entry +if.else.115: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.92 + br label %if.merge.116 -if.merge.92: ; preds = %if.else.91, %if.then.90 - %bp = phi double [ %fsub, %if.then.90 ], [ %loadN, %if.else.91 ] +if.merge.116: ; preds = %if.else.115, %if.then.114 + %bp = phi double [ %fsub, %if.then.114 ], [ %loadN, %if.else.115 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -525,15 +665,15 @@ if.merge.92: ; preds = %if.else.91, %if.the 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.93, label %if.merge.94 + br i1 %icmp, label %if.then.117, label %if.merge.118 -if.then.93: ; preds = %if.merge.92 +if.then.117: ; preds = %if.merge.116 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.94 + br label %if.merge.118 -if.merge.94: ; preds = %if.then.93, %if.merge.92 +if.merge.118: ; preds = %if.then.117, %if.merge.116 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -551,16 +691,16 @@ if.merge.94: ; preds = %if.then.93, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.95, label %if.else.96 + br i1 %loadN, label %if.then.119, label %if.else.120 -if.then.95: ; preds = %if.merge.94 - br label %if.merge.97 +if.then.119: ; preds = %if.merge.118 + br label %if.merge.121 -if.else.96: ; preds = %if.merge.94 - br label %if.merge.97 +if.else.120: ; preds = %if.merge.118 + br label %if.merge.121 -if.merge.97: ; preds = %if.else.96, %if.then.95 - %bpN = phi i64 [ 1, %if.then.95 ], [ 0, %if.else.96 ] +if.merge.121: ; preds = %if.else.120, %if.then.119 + %bpN = phi i64 [ 1, %if.then.119 ], [ 0, %if.else.120 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -577,17 +717,17 @@ if.merge.97: ; preds = %if.else.96, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.98, label %if.merge.99 + br i1 %loadN, label %if.then.122, label %if.merge.123 -if.then.98: ; preds = %if.merge.97 +if.then.122: ; preds = %if.merge.121 %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.99 + br label %if.merge.123 -if.merge.99: ; preds = %if.then.98, %if.merge.97 +if.merge.123: ; preds = %if.then.122, %if.merge.121 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -650,39 +790,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.212 + br label %while.hdr.234 -while.hdr.212: ; preds = %if.merge.217, %entry +while.hdr.234: ; preds = %if.merge.239, %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.213, label %while.exit.214 + br i1 %icmp, label %while.body.235, label %while.exit.236 -while.body.213: ; preds = %while.hdr.212 +while.body.235: ; preds = %while.hdr.234 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.215, label %if.else.216 + br i1 %icmpN, label %if.then.237, label %if.else.238 -while.exit.214: ; preds = %while.hdr.212 +while.exit.236: ; preds = %while.hdr.234 ret void -if.then.215: ; preds = %while.body.213 +if.then.237: ; preds = %while.body.235 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.217 + br label %if.merge.239 -if.else.216: ; preds = %while.body.213 +if.else.238: ; preds = %while.body.235 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.217 + br label %if.merge.239 -if.merge.217: ; preds = %if.else.216, %if.then.215 - %bp = phi i64 [ %addN, %if.then.215 ], [ %addN, %if.else.216 ] +if.merge.239: ; preds = %if.else.238, %if.then.237 + %bp = phi i64 [ %addN, %if.then.237 ], [ %addN, %if.else.238 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -695,37 +835,29 @@ if.merge.217: ; preds = %if.else.216, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.212 + br label %while.hdr.234 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.202, label %if.merge.203 - -if.then.202: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.203: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.204, label %if.merge.205 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.88, label %if.merge.89 -if.then.204: ; preds = %if.merge.203 +if.then.88: ; 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.205 + br label %if.merge.89 -if.merge.205: ; preds = %if.then.204, %if.merge.203 +if.merge.89: ; preds = %if.then.88, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -738,15 +870,15 @@ if.merge.205: ; preds = %if.then.204, %if.me 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.206, label %if.merge.207 + br i1 %icmpN, label %if.then.90, label %if.merge.91 -if.then.206: ; preds = %if.merge.205 +if.then.90: ; preds = %if.merge.89 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.207 + br label %if.merge.91 -if.merge.207: ; preds = %if.then.206, %if.merge.205 +if.merge.91: ; preds = %if.then.90, %if.merge.89 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -759,15 +891,15 @@ if.merge.207: ; preds = %if.then.206, %if.me 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.208, label %if.merge.209 + br i1 %icmpN, label %if.then.92, label %if.merge.93 -if.then.208: ; preds = %if.merge.207 +if.then.92: ; preds = %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.209 + br label %if.merge.93 -if.merge.209: ; preds = %if.then.208, %if.merge.207 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -780,65 +912,116 @@ if.merge.209: ; preds = %if.then.208, %if.me 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.210, label %if.merge.211 + br i1 %icmpN, label %if.then.94, label %if.merge.95 -if.then.210: ; preds = %if.merge.209 +if.then.94: ; preds = %if.merge.93 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.211 + br label %if.merge.95 -if.merge.211: ; preds = %if.then.210, %if.merge.209 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.95: ; preds = %if.then.94, %if.merge.93 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.232, label %if.merge.233 + +if.then.232: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.233: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.218 + br label %while.hdr.240 -while.hdr.218: ; preds = %if.merge.222, %if.merge.211 +while.hdr.240: ; preds = %if.merge.244, %if.merge.233 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.219, label %while.exit.220 + br i1 %icmpN, label %while.body.241, label %while.exit.242 -while.body.219: ; preds = %while.hdr.218 +while.body.241: ; preds = %while.hdr.240 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.221, label %if.merge.222 + br i1 %icmpN, label %if.then.243, label %if.merge.244 -while.exit.220: ; preds = %if.then.221, %while.hdr.218 +while.exit.242: ; preds = %if.then.243, %while.hdr.240 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.221: ; preds = %while.body.219 - br label %while.exit.220 +if.then.243: ; preds = %while.body.241 + br label %while.exit.242 -if.merge.222: ; preds = %while.body.219 +if.merge.244: ; preds = %while.body.241 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.218 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.240 } ; Function Attrs: nounwind @@ -917,7 +1100,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -925,478 +1108,505 @@ entry: 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.83 [ - i64 17, label %match.arm.69 - i64 2, label %match.arm.70 - i64 3, label %match.arm.70 - i64 4, label %match.arm.70 - i64 5, label %match.arm.70 - i64 6, label %match.arm.70 - i64 7, label %match.arm.70 - i64 8, label %match.arm.70 - i64 9, label %match.arm.70 - i64 16, label %match.arm.70 - i64 15, label %match.arm.70 - i64 12, label %match.arm.71 - i64 1, label %match.arm.72 - i64 10, label %match.arm.73 - i64 11, label %match.arm.73 - i64 19, label %match.arm.74 - i64 20, label %match.arm.74 - i64 21, label %match.arm.74 - i64 23, label %match.arm.74 - i64 25, label %match.arm.74 - i64 27, label %match.arm.74 - i64 30, label %match.arm.74 - i64 32, label %match.arm.74 - i64 34, label %match.arm.74 - i64 36, label %match.arm.76 - i64 45, label %match.arm.78 - i64 35, label %match.arm.79 + switch i64 %ua.raw, label %match.unr.82 [ + i64 17, label %match.arm.68 + i64 2, label %match.arm.69 + i64 3, label %match.arm.69 + i64 4, label %match.arm.69 + i64 5, label %match.arm.69 + i64 6, label %match.arm.69 + i64 7, label %match.arm.69 + i64 8, label %match.arm.69 + i64 9, label %match.arm.69 + i64 16, label %match.arm.69 + i64 15, label %match.arm.69 + i64 12, label %match.arm.70 + i64 1, label %match.arm.71 + i64 10, label %match.arm.72 + i64 11, label %match.arm.72 + i64 19, label %match.arm.73 + i64 20, label %match.arm.73 + i64 21, label %match.arm.73 + i64 23, label %match.arm.73 + i64 25, label %match.arm.73 + i64 27, label %match.arm.73 + i64 30, label %match.arm.73 + i64 32, label %match.arm.73 + i64 34, label %match.arm.73 + i64 37, label %match.arm.75 + i64 35, label %match.arm.77 + i64 46, label %match.arm.77 + i64 36, label %match.arm.78 + i64 44, label %match.arm.78 + i64 18, label %match.arm.79 + i64 22, label %match.arm.79 + i64 24, label %match.arm.79 + i64 26, label %match.arm.79 + i64 28, label %match.arm.79 + i64 29, label %match.arm.79 + i64 31, label %match.arm.79 + i64 33, label %match.arm.79 + i64 38, label %match.arm.79 + i64 39, label %match.arm.79 + i64 40, label %match.arm.79 + i64 41, label %match.arm.79 + i64 42, label %match.arm.79 i64 43, label %match.arm.79 - i64 18, label %match.arm.80 - i64 22, label %match.arm.80 - i64 24, label %match.arm.80 - i64 26, label %match.arm.80 - i64 28, label %match.arm.80 - i64 29, label %match.arm.80 - i64 31, label %match.arm.80 - i64 33, label %match.arm.80 - i64 37, label %match.arm.80 - i64 38, label %match.arm.80 - i64 39, label %match.arm.80 - i64 40, label %match.arm.80 - i64 41, label %match.arm.80 - i64 42, label %match.arm.80 - i64 44, label %match.arm.80 - i64 46, label %match.arm.80 - i64 47, label %match.arm.80 - i64 48, label %match.arm.80 - i64 49, label %match.arm.80 - i64 13, label %match.arm.82 + i64 45, label %match.arm.79 + i64 47, label %match.arm.79 + i64 48, label %match.arm.79 + i64 49, label %match.arm.79 + i64 50, label %match.arm.79 + i64 13, label %match.arm.81 ] -match.merge.68: ; preds = %dispatch.merge.178, %dispatch.merge.164, %dispatch.merge.156, %dispatch.merge.100, %float.merge.89, %match.unr.83, %match.arm.82, %match.arm.76, %match.arm.72, %match.arm.71, %match.arm.70, %match.arm.69 +match.merge.67: ; preds = %dispatch.merge.208, %dispatch.merge.194, %dispatch.merge.180, %dispatch.merge.124, %float.merge.113, %if.merge.85, %match.unr.82, %match.arm.81, %match.arm.75, %match.arm.71, %match.arm.70, %match.arm.68 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.69: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.68 +match.arm.68: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.67 -match.arm.70: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.68 +match.arm.69: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [75 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.83, label %if.else.84 -match.arm.71: ; preds = %entry +match.arm.70: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.68 + br label %match.merge.67 -match.arm.72: ; preds = %entry +match.arm.71: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.68 + %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.67 -match.arm.73: ; preds = %entry, %entry +match.arm.72: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.87, label %fN.unbox.88 + br i1 %icmp, label %fN.unbox.111, label %fN.unbox.112 -match.arm.74: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.73: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.101 [ - i64 19, label %dispatch.case.102 - i64 20, label %dispatch.case.103 - i64 21, label %dispatch.case.104 - i64 23, label %dispatch.case.105 - i64 25, label %dispatch.case.106 - i64 27, label %dispatch.case.107 - i64 30, label %dispatch.case.108 - i64 32, label %dispatch.case.109 - i64 34, label %dispatch.case.110 + switch i64 %ua.raw16, label %dispatch.default.125 [ + i64 19, label %dispatch.case.126 + i64 20, label %dispatch.case.127 + i64 21, label %dispatch.case.128 + i64 23, label %dispatch.case.129 + i64 25, label %dispatch.case.130 + i64 27, label %dispatch.case.131 + i64 30, label %dispatch.case.132 + i64 32, label %dispatch.case.133 + i64 34, label %dispatch.case.134 ] -match.arm.75: ; No predecessors! +match.arm.74: ; No predecessors! unreachable -match.arm.76: ; preds = %entry +match.arm.75: ; preds = %entry %allocaN = alloca i32, align 4 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw23 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw23 to i32 + %ua.raw21 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw21 to i32 store i32 %trN, ptr %allocaN, align 4 %loadN = load i32, ptr %allocaN, align 4 %etn.idx = zext i32 %loadN to i64 %etn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @tag_names, i64 0, i64 %etn.idx %etn.load = load { ptr, i64 }, ptr %etn.gep, align 8 store { ptr, i64 } %etn.load, ptr %allocaN, align 8 - br label %match.merge.68 + br label %match.merge.67 -match.arm.77: ; No predecessors! +match.arm.76: ; No predecessors! unreachable -match.arm.78: ; preds = %entry +match.arm.77: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw27 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw25 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw27, label %dispatch.default.157 [ - i64 45, label %dispatch.case.158 + switch i64 %ua.raw25, label %dispatch.default.181 [ + i64 35, label %dispatch.case.182 + i64 46, label %dispatch.case.183 ] -match.arm.79: ; preds = %entry, %entry +match.arm.78: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw31 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw29 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw31, label %dispatch.default.165 [ - i64 35, label %dispatch.case.166 - i64 43, label %dispatch.case.167 + switch i64 %ua.raw29, label %dispatch.default.195 [ + i64 36, label %dispatch.case.196 + i64 44, label %dispatch.case.197 ] -match.arm.80: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.79: ; preds = %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.raw35 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw33 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw35, label %dispatch.default.179 [ - i64 18, label %dispatch.case.180 - i64 22, label %dispatch.case.181 - i64 24, label %dispatch.case.182 - i64 26, label %dispatch.case.183 - i64 28, label %dispatch.case.184 - i64 29, label %dispatch.case.185 - i64 31, label %dispatch.case.186 - i64 33, label %dispatch.case.187 - i64 37, label %dispatch.case.188 - i64 38, label %dispatch.case.189 - i64 39, label %dispatch.case.190 - i64 40, label %dispatch.case.191 - i64 41, label %dispatch.case.192 - i64 42, label %dispatch.case.193 - i64 44, label %dispatch.case.194 - i64 46, label %dispatch.case.195 - i64 47, label %dispatch.case.196 - i64 48, label %dispatch.case.197 - i64 49, label %dispatch.case.198 + switch i64 %ua.raw33, label %dispatch.default.209 [ + i64 18, label %dispatch.case.210 + i64 22, label %dispatch.case.211 + i64 24, label %dispatch.case.212 + i64 26, label %dispatch.case.213 + i64 28, label %dispatch.case.214 + i64 29, label %dispatch.case.215 + i64 31, label %dispatch.case.216 + i64 33, label %dispatch.case.217 + i64 38, label %dispatch.case.218 + i64 39, label %dispatch.case.219 + i64 40, label %dispatch.case.220 + i64 41, label %dispatch.case.221 + i64 42, label %dispatch.case.222 + i64 43, label %dispatch.case.223 + i64 45, label %dispatch.case.224 + i64 47, label %dispatch.case.225 + i64 48, label %dispatch.case.226 + i64 49, label %dispatch.case.227 + i64 50, label %dispatch.case.228 ] -match.arm.81: ; No predecessors! +match.arm.80: ; No predecessors! unreachable -match.arm.82: ; preds = %entry +match.arm.81: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [73 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [75 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.68 + br label %match.merge.67 -match.unr.83: ; preds = %entry - br label %match.merge.68 +match.unr.82: ; preds = %entry + br label %match.merge.67 -f32.unbox.87: ; preds = %match.arm.73 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw39 to i32 +if.then.83: ; preds = %match.arm.69 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw38) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.85 + +if.else.84: ; preds = %match.arm.69 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw41 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw41) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.85 + +if.merge.85: ; preds = %if.else.84, %if.then.83 + br label %match.merge.67 + +f32.unbox.111: ; preds = %match.arm.72 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw43 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.89 + br label %float.merge.113 -f64.unbox.88: ; preds = %match.arm.73 - %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw40 to double +f64.unbox.112: ; preds = %match.arm.72 + %ua.raw44 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw44 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.89 + br label %float.merge.113 -float.merge.89: ; preds = %fN.unbox.88, %fN.unbox.87 +float.merge.113: ; preds = %fN.unbox.112, %fN.unbox.111 %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.68 + br label %match.merge.67 -dispatch.merge.100: ; preds = %dispatch.case.110, %dispatch.case.109, %dispatch.case.108, %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.default.101 +dispatch.merge.124: ; preds = %dispatch.case.134, %dispatch.case.133, %dispatch.case.132, %dispatch.case.131, %dispatch.case.130, %dispatch.case.129, %dispatch.case.128, %dispatch.case.127, %dispatch.case.126, %dispatch.default.125 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.68 + br label %match.merge.67 -dispatch.default.101: ; preds = %match.arm.74 - store { ptr, i64 } { ptr @str.80, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.100 +dispatch.default.125: ; preds = %match.arm.73 + store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.124 -dispatch.case.102: ; preds = %match.arm.74 - %ua.raw44 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr45 = inttoptr i64 %ua.raw44 to ptr - %ua.load46 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr45, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load46) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 - -dispatch.case.103: ; preds = %match.arm.74 +dispatch.case.126: ; preds = %match.arm.73 %ua.raw48 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr49 = inttoptr i64 %ua.raw48 to ptr - %ua.load50 = load { ptr, ptr, ptr }, ptr %ua.ptr49, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load50) + %ua.load50 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr49, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load50) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.104: ; preds = %match.arm.74 +dispatch.case.127: ; preds = %match.arm.73 %ua.raw52 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr53 = inttoptr i64 %ua.raw52 to ptr - %ua.load54 = load {}, ptr %ua.ptr53, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load54) + %ua.load54 = load { ptr, ptr, ptr }, ptr %ua.ptr53, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load54) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.105: ; preds = %match.arm.74 +dispatch.case.128: ; preds = %match.arm.73 %ua.raw56 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr57 = inttoptr i64 %ua.raw56 to ptr - %ua.load58 = load { i64 }, ptr %ua.ptr57, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load58) + %ua.load58 = load {}, ptr %ua.ptr57, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load58) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.106: ; preds = %match.arm.74 +dispatch.case.129: ; preds = %match.arm.73 %ua.raw60 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr61 = inttoptr i64 %ua.raw60 to ptr - %ua.load62 = load { ptr, i64 }, ptr %ua.ptr61, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load62) + %ua.load62 = load { i64 }, ptr %ua.ptr61, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load62) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.107: ; preds = %match.arm.74 +dispatch.case.130: ; preds = %match.arm.73 %ua.raw64 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr65 = inttoptr i64 %ua.raw64 to ptr - %ua.load66 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr65, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load66) + %ua.load66 = load { ptr, i64 }, ptr %ua.ptr65, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load66) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.108: ; preds = %match.arm.74 +dispatch.case.131: ; preds = %match.arm.73 %ua.raw68 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr69 = inttoptr i64 %ua.raw68 to ptr - %ua.load70 = load { ptr, i64, i64 }, ptr %ua.ptr69, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load70) + %ua.load70 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr69, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load70) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.109: ; preds = %match.arm.74 +dispatch.case.132: ; preds = %match.arm.73 %ua.raw72 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr73 = inttoptr i64 %ua.raw72 to ptr - %ua.load74 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr73, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load74) + %ua.load74 = load { ptr, i64, i64 }, ptr %ua.ptr73, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load74) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.case.110: ; preds = %match.arm.74 +dispatch.case.133: ; preds = %match.arm.73 %ua.raw76 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr77 = inttoptr i64 %ua.raw76 to ptr - %ua.load78 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr77, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load78) + %ua.load78 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr77, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load78) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.100 + br label %dispatch.merge.124 -dispatch.merge.156: ; preds = %dispatch.case.158, %dispatch.default.157 +dispatch.case.134: ; preds = %match.arm.73 + %ua.raw80 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr81 = inttoptr i64 %ua.raw80 to ptr + %ua.load82 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr81, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load82) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.124 + +dispatch.merge.180: ; preds = %dispatch.case.183, %dispatch.case.182, %dispatch.default.181 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.68 + br label %match.merge.67 -dispatch.default.157: ; preds = %match.arm.78 - store { ptr, i64 } { ptr @str.81, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.156 +dispatch.default.181: ; preds = %match.arm.77 + store { ptr, i64 } { ptr @str.84, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.180 -dispatch.case.158: ; preds = %match.arm.78 - %ua.raw81 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr82 = inttoptr i64 %ua.raw81 to ptr - %ua.load83 = load [1 x { i64, i64 }], ptr %ua.ptr82, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load83) +dispatch.case.182: ; preds = %match.arm.77 + %ua.raw85 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr86 = inttoptr i64 %ua.raw85 to ptr + %ua.load87 = load [4 x i64], ptr %ua.ptr86, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load87) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.156 + br label %dispatch.merge.180 -dispatch.merge.164: ; preds = %dispatch.case.167, %dispatch.case.166, %dispatch.default.165 +dispatch.case.183: ; preds = %match.arm.77 + %ua.raw89 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr90 = inttoptr i64 %ua.raw89 to ptr + %ua.load91 = load [1 x { i64, i64 }], ptr %ua.ptr90, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load91) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.180 + +dispatch.merge.194: ; preds = %dispatch.case.197, %dispatch.case.196, %dispatch.default.195 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.68 + br label %match.merge.67 -dispatch.default.165: ; preds = %match.arm.79 - store { ptr, i64 } { ptr @str.82, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.164 +dispatch.default.195: ; preds = %match.arm.78 + store { ptr, i64 } { ptr @str.85, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.194 -dispatch.case.166: ; preds = %match.arm.79 - %ua.raw86 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr87 = inttoptr i64 %ua.raw86 to ptr - %ua.load88 = load { ptr, i64 }, ptr %ua.ptr87, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load88) +dispatch.case.196: ; preds = %match.arm.78 + %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr95 = inttoptr i64 %ua.raw94 to ptr + %ua.load96 = load { ptr, i64 }, ptr %ua.ptr95, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load96) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.164 + br label %dispatch.merge.194 -dispatch.case.167: ; preds = %match.arm.79 - %ua.raw90 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr91 = inttoptr i64 %ua.raw90 to ptr - %ua.load92 = load { ptr, i64 }, ptr %ua.ptr91, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load92) +dispatch.case.197: ; preds = %match.arm.78 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr99 = inttoptr i64 %ua.raw98 to ptr + %ua.load100 = load { ptr, i64 }, ptr %ua.ptr99, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load100) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.164 + br label %dispatch.merge.194 -dispatch.merge.178: ; preds = %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.case.181, %dispatch.case.180, %dispatch.default.179 +dispatch.merge.208: ; preds = %dispatch.case.228, %dispatch.case.227, %dispatch.case.226, %dispatch.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.case.211, %dispatch.case.210, %dispatch.default.209 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.68 + br label %match.merge.67 -dispatch.default.179: ; preds = %match.arm.80 - store { ptr, i64 } { ptr @str.83, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.178 +dispatch.default.209: ; preds = %match.arm.79 + store { ptr, i64 } { ptr @str.86, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.208 -dispatch.case.180: ; preds = %match.arm.80 - %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw95 to ptr +dispatch.case.210: ; preds = %match.arm.79 + %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw103 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.178 + br label %dispatch.merge.208 -dispatch.case.181: ; preds = %match.arm.80 - %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 - %iNp98 = inttoptr i64 %ua.raw97 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp98) +dispatch.case.211: ; preds = %match.arm.79 + %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 + %iNp106 = inttoptr i64 %ua.raw105 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp106) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.182: ; preds = %match.arm.80 - %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 - %iNp101 = inttoptr i64 %ua.raw100 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp101) +dispatch.case.212: ; preds = %match.arm.79 + %ua.raw108 = extractvalue { i64, i64 } %loadN, 1 + %iNp109 = inttoptr i64 %ua.raw108 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp109) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.183: ; preds = %match.arm.80 - %ua.raw103 = extractvalue { i64, i64 } %loadN, 1 - %iNp104 = inttoptr i64 %ua.raw103 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp104) +dispatch.case.213: ; preds = %match.arm.79 + %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 + %iNp112 = inttoptr i64 %ua.raw111 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp112) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.184: ; preds = %match.arm.80 - %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 - %iNp107 = inttoptr i64 %ua.raw106 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp107) +dispatch.case.214: ; preds = %match.arm.79 + %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 + %iNp115 = inttoptr i64 %ua.raw114 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp115) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.185: ; preds = %match.arm.80 - %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 - %iNp110 = inttoptr i64 %ua.raw109 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp110) +dispatch.case.215: ; preds = %match.arm.79 + %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 + %iNp118 = inttoptr i64 %ua.raw117 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp118) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.186: ; preds = %match.arm.80 - %ua.raw112 = extractvalue { i64, i64 } %loadN, 1 - %iNp113 = inttoptr i64 %ua.raw112 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp113) +dispatch.case.216: ; preds = %match.arm.79 + %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 + %iNp121 = inttoptr i64 %ua.raw120 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp121) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.187: ; preds = %match.arm.80 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp116 = inttoptr i64 %ua.raw115 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp116) +dispatch.case.217: ; preds = %match.arm.79 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp124 = inttoptr i64 %ua.raw123 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.188: ; preds = %match.arm.80 - %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 - %iNp119 = inttoptr i64 %ua.raw118 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp119) +dispatch.case.218: ; preds = %match.arm.79 + %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 + %iNp127 = inttoptr i64 %ua.raw126 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp127) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.189: ; preds = %match.arm.80 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp122) +dispatch.case.219: ; preds = %match.arm.79 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.190: ; preds = %match.arm.80 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp125) +dispatch.case.220: ; preds = %match.arm.79 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.191: ; preds = %match.arm.80 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp128) +dispatch.case.221: ; preds = %match.arm.79 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.192: ; preds = %match.arm.80 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_error_set(ptr %0, ptr %iNp131) +dispatch.case.222: ; preds = %match.arm.79 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_error_set(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.193: ; preds = %match.arm.80 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp134) +dispatch.case.223: ; preds = %match.arm.79 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.194: ; preds = %match.arm.80 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp137) +dispatch.case.224: ; preds = %match.arm.79 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.195: ; preds = %match.arm.80 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp140) +dispatch.case.225: ; preds = %match.arm.79 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.196: ; preds = %match.arm.80 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp143) +dispatch.case.226: ; preds = %match.arm.79 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.197: ; preds = %match.arm.80 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp146) +dispatch.case.227: ; preds = %match.arm.79 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 -dispatch.case.198: ; preds = %match.arm.80 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp149) +dispatch.case.228: ; preds = %match.arm.79 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.178 + br label %dispatch.merge.208 } ; Function Attrs: nounwind @@ -1405,7 +1615,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.84, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.87, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1436,7 +1646,7 @@ while.exit.32: ; preds = %while.hdr.30 %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.66, label %if.merge.67 + br i1 %icmpN, label %if.then.65, label %if.merge.66 if.then.33: ; preds = %while.body.31 %loadN = load i64, ptr %allocaN, align 8 @@ -1454,9 +1664,9 @@ if.else.34: ; preds = %while.body.31 %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.57, label %if.else.58 + br i1 %icmpN, label %if.then.56, label %if.else.57 -if.merge.35: ; preds = %if.merge.59, %if.merge.38 +if.merge.35: ; preds = %if.merge.58, %if.merge.38 br label %while.hdr.30 if.then.36: ; preds = %if.then.33 @@ -1494,14 +1704,14 @@ if.else.40: ; preds = %if.then.36 %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.54, label %if.else.55 + br i1 %icmpN, label %if.then.53, label %if.else.54 -if.merge.41: ; preds = %if.merge.56, %if.merge.43 +if.merge.41: ; preds = %if.merge.55, %if.merge.43 br label %if.merge.38 if.then.42: ; preds = %if.then.39 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, 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 @@ -1509,7 +1719,7 @@ if.then.42: ; preds = %if.then.39 %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.86, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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 @@ -1519,13 +1729,13 @@ if.then.42: ; preds = %if.then.39 %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.87, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.43 if.merge.43: ; preds = %if.then.42, %if.then.39 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, 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 @@ -1533,7 +1743,7 @@ if.merge.43: ; preds = %if.then.42, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1545,83 +1755,7 @@ if.merge.43: ; preds = %if.then.42, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.41 -if.then.54: ; preds = %if.else.40 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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.91, 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.92, 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.56 - -if.else.55: ; preds = %if.else.40 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.56 - -if.merge.56: ; preds = %if.else.55, %if.then.54 - br label %if.merge.41 - -if.then.57: ; preds = %if.else.34 - %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.60, label %if.else.61 - -if.else.58: ; preds = %if.else.34 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.59 - -if.merge.59: ; preds = %if.merge.62, %if.else.58 - br label %if.merge.35 - -if.then.60: ; preds = %if.then.57 - %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.63, label %if.else.64 - -if.else.61: ; preds = %if.then.57 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.62 - -if.merge.62: ; preds = %if.merge.65, %if.else.61 - br label %if.merge.59 - -if.then.63: ; preds = %if.then.60 +if.then.53: ; preds = %if.else.40 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.93, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1649,18 +1783,55 @@ if.then.63: ; preds = %if.then.60 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.65 + br label %if.merge.55 -if.else.64: ; preds = %if.then.60 +if.else.54: ; preds = %if.else.40 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.65 + br label %if.merge.55 -if.merge.65: ; preds = %if.else.64, %if.then.63 - br label %if.merge.62 +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %if.merge.41 -if.then.66: ; preds = %while.exit.32 +if.then.56: ; preds = %if.else.34 + %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.59, label %if.else.60 + +if.else.57: ; preds = %if.else.34 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.58 + +if.merge.58: ; preds = %if.merge.61, %if.else.57 + br label %if.merge.35 + +if.then.59: ; preds = %if.then.56 + %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.62, label %if.else.63 + +if.else.60: ; preds = %if.then.56 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.61 + +if.merge.61: ; preds = %if.merge.64, %if.else.60 + br label %if.merge.58 + +if.then.62: ; preds = %if.then.59 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1673,6 +1844,45 @@ if.then.66: ; preds = %while.exit.32 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, 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.98, 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.64 + +if.else.63: ; preds = %if.then.59 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.64 + +if.merge.64: ; preds = %if.else.63, %if.then.62 + br label %if.merge.61 + +if.then.65: ; preds = %while.exit.32 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, 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.100, 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 @@ -1681,11 +1891,11 @@ if.then.66: ; preds = %while.exit.32 %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.98, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.67 + br label %if.merge.66 -if.merge.67: ; preds = %if.then.66, %while.exit.32 +if.merge.66: ; preds = %if.then.65, %while.exit.32 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1901,7 +2111,7 @@ entry: define internal void @print__ct_sbcb4570e4e0d606e__pack_s32(ptr %0, i32 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.106, i64 17 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.109, i64 17 }, ptr %alloca, align 8 %allocaN = alloca i32, align 4 store i32 %1, ptr %allocaN, align 4 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -1917,7 +2127,7 @@ entry: %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.107, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.110, 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 14) @@ -1945,7 +2155,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.108, i64 17 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.111, i64 17 }) ret { ptr, i64 } %call } @@ -1954,35 +2164,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.109, i64 15 }, { ptr, i64 } { ptr @str.110, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.112, i64 15 }, { ptr, i64 } { ptr @str.113, 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.111 + br label %while.hdr.135 -while.hdr.111: ; preds = %fv.merge, %entry +while.hdr.135: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.112, label %while.exit.113 + br i1 %icmp, label %while.body.136, label %while.exit.137 -while.body.112: ; preds = %while.hdr.111 +while.body.136: ; preds = %while.hdr.135 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.114, label %if.merge.115 + br i1 %icmpN, label %if.then.138, label %if.merge.139 -while.exit.113: ; preds = %while.hdr.111 +while.exit.137: ; preds = %while.hdr.135 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 1 }) ret { ptr, i64 } %callN -if.then.114: ; preds = %while.body.112 +if.then.138: ; preds = %while.body.136 %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 }) + %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 - br label %if.merge.115 + br label %if.merge.139 -if.merge.115: ; preds = %if.then.114, %while.body.112 +if.merge.139: ; preds = %if.then.138, %while.body.136 %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 @@ -1990,7 +2200,7 @@ if.merge.115: ; preds = %if.then.114, %while %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.116, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, 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 @@ -2010,12 +2220,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.111 + br label %while.hdr.135 -fv.default: ; preds = %if.merge.115 +fv.default: ; preds = %if.merge.139 br label %fv.merge -fv.case: ; preds = %if.merge.115 +fv.case: ; preds = %if.merge.139 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2023,19 +2233,19 @@ fv.case: ; preds = %if.merge.115 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.115 +fv.case17: ; preds = %if.merge.139 %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.115 +fv.case20: ; preds = %if.merge.139 %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.115 +fv.case24: ; preds = %if.merge.139 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2049,43 +2259,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.117, i64 9 }, { ptr, i64 } { ptr @str.118, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.120, i64 9 }, { ptr, i64 } { ptr @str.121, 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.116 + br label %while.hdr.140 -while.hdr.116: ; preds = %fv.merge, %entry +while.hdr.140: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.117, label %while.exit.118 + br i1 %icmp, label %while.body.141, label %while.exit.142 -while.body.117: ; preds = %while.hdr.116 +while.body.141: ; preds = %while.hdr.140 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.119, label %if.merge.120 + br i1 %icmpN, label %if.then.143, label %if.merge.144 -while.exit.118: ; preds = %while.hdr.116 +while.exit.142: ; preds = %while.hdr.140 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 1 }) ret { ptr, i64 } %callN -if.then.119: ; preds = %while.body.117 +if.then.143: ; preds = %while.body.141 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.120 + br label %if.merge.144 -if.merge.120: ; preds = %if.then.119, %while.body.117 +if.merge.144: ; preds = %if.then.143, %while.body.141 %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.124, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.127, 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.125, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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 @@ -2104,24 +2314,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.116 + br label %while.hdr.140 -fv.default: ; preds = %if.merge.120 +fv.default: ; preds = %if.merge.144 br label %fv.merge -fv.case: ; preds = %if.merge.120 +fv.case: ; preds = %if.merge.144 %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.120 +fv.case17: ; preds = %if.merge.144 %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.120 +fv.case21: ; preds = %if.merge.144 %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 @@ -2133,43 +2343,43 @@ 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.126, i64 10 }, { ptr, i64 } { ptr @str.127, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.129, i64 10 }, { ptr, i64 } { ptr @str.130, 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.121 + br label %while.hdr.145 -while.hdr.121: ; preds = %if.merge.125, %entry +while.hdr.145: ; preds = %if.merge.149, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.122, label %while.exit.123 + br i1 %icmp, label %while.body.146, label %while.exit.147 -while.body.122: ; preds = %while.hdr.121 +while.body.146: ; preds = %while.hdr.145 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.124, label %if.merge.125 + br i1 %icmpN, label %if.then.148, label %if.merge.149 -while.exit.123: ; preds = %while.hdr.121 +while.exit.147: ; preds = %while.hdr.145 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, i64 1 }) ret { ptr, i64 } %callN -if.then.124: ; preds = %while.body.122 +if.then.148: ; preds = %while.body.146 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.125 + br label %if.merge.149 -if.merge.125: ; preds = %if.then.124, %while.body.122 +if.merge.149: ; preds = %if.then.148, %while.body.146 %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.130, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.133, 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.131, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2180,7 +2390,7 @@ if.merge.125: ; preds = %if.then.124, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.121 + br label %while.hdr.145 } ; Function Attrs: nounwind @@ -2188,43 +2398,43 @@ 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.132, i64 3 }, { ptr, i64 } { ptr @str.133, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.135, i64 3 }, { ptr, i64 } { ptr @str.136, 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.126 + br label %while.hdr.150 -while.hdr.126: ; preds = %fv.merge, %entry +while.hdr.150: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.127, label %while.exit.128 + br i1 %icmp, label %while.body.151, label %while.exit.152 -while.body.127: ; preds = %while.hdr.126 +while.body.151: ; preds = %while.hdr.150 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.129, label %if.merge.130 + br i1 %icmpN, label %if.then.153, label %if.merge.154 -while.exit.128: ; preds = %while.hdr.126 +while.exit.152: ; preds = %while.hdr.150 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 1 }) ret { ptr, i64 } %callN -if.then.129: ; preds = %while.body.127 +if.then.153: ; preds = %while.body.151 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.130 + br label %if.merge.154 -if.merge.130: ; preds = %if.then.129, %while.body.127 +if.merge.154: ; preds = %if.then.153, %while.body.151 %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.137, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.140, 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.138, i64 2 }) + %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 { i64 }, ptr %alloca, align 8 @@ -2241,12 +2451,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.126 + br label %while.hdr.150 -fv.default: ; preds = %if.merge.130 +fv.default: ; preds = %if.merge.154 br label %fv.merge -fv.case: ; preds = %if.merge.130 +fv.case: ; preds = %if.merge.154 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2257,43 +2467,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.139, i64 10 }, { ptr, i64 } { ptr @str.140, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.142, i64 10 }, { 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.131 + br label %while.hdr.155 -while.hdr.131: ; preds = %fv.merge, %entry +while.hdr.155: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.132, label %while.exit.133 + br i1 %icmp, label %while.body.156, label %while.exit.157 -while.body.132: ; preds = %while.hdr.131 +while.body.156: ; preds = %while.hdr.155 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.134, label %if.merge.135 + br i1 %icmpN, label %if.then.158, label %if.merge.159 -while.exit.133: ; preds = %while.hdr.131 +while.exit.157: ; preds = %while.hdr.155 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 1 }) ret { ptr, i64 } %callN -if.then.134: ; preds = %while.body.132 +if.then.158: ; preds = %while.body.156 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 2 }) + %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.135 + br label %if.merge.159 -if.merge.135: ; preds = %if.then.134, %while.body.132 +if.merge.159: ; preds = %if.then.158, %while.body.156 %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.145, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.148, 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.146, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, 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 @@ -2311,18 +2521,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.131 + br label %while.hdr.155 -fv.default: ; preds = %if.merge.135 +fv.default: ; preds = %if.merge.159 br label %fv.merge -fv.case: ; preds = %if.merge.135 +fv.case: ; preds = %if.merge.159 %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.135 +fv.case17: ; preds = %if.merge.159 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2333,43 +2543,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.147, i64 5 }, { ptr, i64 } { ptr @str.148, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.150, i64 5 }, { ptr, i64 } { ptr @str.151, 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.136 + br label %while.hdr.160 -while.hdr.136: ; preds = %fv.merge, %entry +while.hdr.160: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.137, label %while.exit.138 + br i1 %icmp, label %while.body.161, label %while.exit.162 -while.body.137: ; preds = %while.hdr.136 +while.body.161: ; preds = %while.hdr.160 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.139, label %if.merge.140 + br i1 %icmpN, label %if.then.163, label %if.merge.164 -while.exit.138: ; preds = %while.hdr.136 +while.exit.162: ; preds = %while.hdr.160 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 1 }) ret { ptr, i64 } %callN -if.then.139: ; preds = %while.body.137 +if.then.163: ; preds = %while.body.161 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.140 + br label %if.merge.164 -if.merge.140: ; preds = %if.then.139, %while.body.137 +if.merge.164: ; preds = %if.then.163, %while.body.161 %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.154, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.157, 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.155, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, 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 @@ -2388,23 +2598,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.136 + br label %while.hdr.160 -fv.default: ; preds = %if.merge.140 +fv.default: ; preds = %if.merge.164 br label %fv.merge -fv.case: ; preds = %if.merge.140 +fv.case: ; preds = %if.merge.164 %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.140 +fv.case17: ; preds = %if.merge.164 %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.140 +fv.case20: ; preds = %if.merge.164 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2418,43 +2628,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.156, i64 8 }, { ptr, i64 } { ptr @str.157, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.159, i64 8 }, { ptr, i64 } { ptr @str.160, 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.141 + br label %while.hdr.165 -while.hdr.141: ; preds = %fv.merge, %entry +while.hdr.165: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.142, label %while.exit.143 + br i1 %icmp, label %while.body.166, label %while.exit.167 -while.body.142: ; preds = %while.hdr.141 +while.body.166: ; preds = %while.hdr.165 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.144, label %if.merge.145 + br i1 %icmpN, label %if.then.168, label %if.merge.169 -while.exit.143: ; preds = %while.hdr.141 +while.exit.167: ; preds = %while.hdr.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.161, i64 1 }) ret { ptr, i64 } %callN -if.then.144: ; preds = %while.body.142 +if.then.168: ; preds = %while.body.166 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.145 + br label %if.merge.169 -if.merge.145: ; preds = %if.then.144, %while.body.142 +if.merge.169: ; preds = %if.then.168, %while.body.166 %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.163, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.166, 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.164, i64 2 }) + %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64, i64 }, ptr %alloca, align 8 @@ -2473,23 +2683,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.141 + br label %while.hdr.165 -fv.default: ; preds = %if.merge.145 +fv.default: ; preds = %if.merge.169 br label %fv.merge -fv.case: ; preds = %if.merge.145 +fv.case: ; preds = %if.merge.169 %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.145 +fv.case17: ; preds = %if.merge.169 %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.145 +fv.case20: ; preds = %if.merge.169 %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 @@ -2500,43 +2710,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.165, i64 17 }, { ptr, i64 } { ptr @str.166, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.168, i64 17 }, { ptr, i64 } { ptr @str.169, 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.146 + br label %while.hdr.170 -while.hdr.146: ; preds = %fv.merge, %entry +while.hdr.170: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.147, label %while.exit.148 + br i1 %icmp, label %while.body.171, label %while.exit.172 -while.body.147: ; preds = %while.hdr.146 +while.body.171: ; preds = %while.hdr.170 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.149, label %if.merge.150 + br i1 %icmpN, label %if.then.173, label %if.merge.174 -while.exit.148: ; preds = %while.hdr.146 +while.exit.172: ; preds = %while.hdr.170 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 1 }) ret { ptr, i64 } %callN -if.then.149: ; preds = %while.body.147 +if.then.173: ; preds = %while.body.171 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 2 }) + %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 - br label %if.merge.150 + br label %if.merge.174 -if.merge.150: ; preds = %if.then.149, %while.body.147 +if.merge.174: ; preds = %if.then.173, %while.body.171 %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.173, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.176, 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.174, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, 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 @@ -2556,12 +2766,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.146 + br label %while.hdr.170 -fv.default: ; preds = %if.merge.150 +fv.default: ; preds = %if.merge.174 br label %fv.merge -fv.case: ; preds = %if.merge.150 +fv.case: ; preds = %if.merge.174 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2569,17 +2779,17 @@ fv.case: ; preds = %if.merge.150 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.150 +fv.case17: ; preds = %if.merge.174 %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.150 +fv.case20: ; preds = %if.merge.174 %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.150 +fv.case23: ; preds = %if.merge.174 %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 @@ -2590,43 +2800,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.175, i64 7 }, { ptr, i64 } { ptr @str.176, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.178, i64 7 }, { ptr, i64 } { ptr @str.179, 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.151 + br label %while.hdr.175 -while.hdr.151: ; preds = %fv.merge, %entry +while.hdr.175: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.152, label %while.exit.153 + br i1 %icmp, label %while.body.176, label %while.exit.177 -while.body.152: ; preds = %while.hdr.151 +while.body.176: ; preds = %while.hdr.175 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.154, label %if.merge.155 + br i1 %icmpN, label %if.then.178, label %if.merge.179 -while.exit.153: ; preds = %while.hdr.151 +while.exit.177: ; preds = %while.hdr.175 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.180, i64 1 }) ret { ptr, i64 } %callN -if.then.154: ; preds = %while.body.152 +if.then.178: ; preds = %while.body.176 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.155 + br label %if.merge.179 -if.merge.155: ; preds = %if.then.154, %while.body.152 +if.merge.179: ; preds = %if.then.178, %while.body.176 %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.181, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.184, 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.182, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, 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 @@ -2644,12 +2854,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.151 + br label %while.hdr.175 -fv.default: ; preds = %if.merge.155 +fv.default: ; preds = %if.merge.179 br label %fv.merge -fv.case: ; preds = %if.merge.155 +fv.case: ; preds = %if.merge.179 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2657,46 +2867,96 @@ fv.case: ; preds = %if.merge.155 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.155 +fv.case17: ; preds = %if.merge.179 %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 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 { +entry: + %alloca = 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.186, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.184 + +while.hdr.184: ; preds = %if.merge.188, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.185, label %while.exit.186 + +while.body.185: ; preds = %while.hdr.184 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.187, label %if.merge.188 + +while.exit.186: ; preds = %while.hdr.184 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 1 }) + ret { ptr, i64 } %call + +if.then.187: ; preds = %while.body.185 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.188 + +if.merge.188: ; preds = %if.then.187, %while.body.185 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.184 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.183, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.189, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.159 + br label %while.hdr.189 -while.hdr.159: ; preds = %if.merge.163, %entry +while.hdr.189: ; preds = %if.merge.193, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.160, label %while.exit.161 + br i1 %icmp, label %while.body.190, label %while.exit.191 -while.body.160: ; preds = %while.hdr.159 +while.body.190: ; preds = %while.hdr.189 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.162, label %if.merge.163 + br i1 %icmpN, label %if.then.192, label %if.merge.193 -while.exit.161: ; preds = %while.hdr.159 +while.exit.191: ; preds = %while.hdr.189 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.184, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 1 }) ret { ptr, i64 } %call -if.then.162: ; preds = %while.body.160 +if.then.192: ; preds = %while.body.190 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.185, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.163 + br label %if.merge.193 -if.merge.163: ; preds = %if.then.162, %while.body.160 +if.merge.193: ; preds = %if.then.192, %while.body.190 %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 @@ -2714,7 +2974,7 @@ if.merge.163: ; preds = %if.then.162, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.159 + br label %while.hdr.189 } ; Function Attrs: nounwind @@ -2723,35 +2983,35 @@ 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.186, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.192, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.168 + br label %while.hdr.198 -while.hdr.168: ; preds = %if.merge.172, %entry +while.hdr.198: ; preds = %if.merge.202, %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.169, label %while.exit.170 + br i1 %icmp, label %while.body.199, label %while.exit.200 -while.body.169: ; preds = %while.hdr.168 +while.body.199: ; preds = %while.hdr.198 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.171, label %if.merge.172 + br i1 %icmpN, label %if.then.201, label %if.merge.202 -while.exit.170: ; preds = %while.hdr.168 +while.exit.200: ; preds = %while.hdr.198 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.193, i64 1 }) ret { ptr, i64 } %call -if.then.171: ; preds = %while.body.169 +if.then.201: ; preds = %while.body.199 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.194, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.172 + br label %if.merge.202 -if.merge.172: ; preds = %if.then.171, %while.body.169 +if.merge.202: ; preds = %if.then.201, %while.body.199 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2768,7 +3028,7 @@ if.merge.172: ; preds = %if.then.171, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.168 + br label %while.hdr.198 } ; Function Attrs: nounwind @@ -2777,35 +3037,35 @@ 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.189, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.195, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.173 + br label %while.hdr.203 -while.hdr.173: ; preds = %if.merge.177, %entry +while.hdr.203: ; preds = %if.merge.207, %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.174, label %while.exit.175 + br i1 %icmp, label %while.body.204, label %while.exit.205 -while.body.174: ; preds = %while.hdr.173 +while.body.204: ; preds = %while.hdr.203 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.176, label %if.merge.177 + br i1 %icmpN, label %if.then.206, label %if.merge.207 -while.exit.175: ; preds = %while.hdr.173 +while.exit.205: ; preds = %while.hdr.203 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 1 }) ret { ptr, i64 } %call -if.then.176: ; preds = %while.body.174 +if.then.206: ; preds = %while.body.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.197, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.177 + br label %if.merge.207 -if.merge.177: ; preds = %if.then.176, %while.body.174 +if.merge.207: ; preds = %if.then.206, %while.body.204 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -2822,95 +3082,11 @@ if.merge.177: ; preds = %if.then.176, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.173 + br label %while.hdr.203 } ; 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.199, label %if.else.200 - -if.then.199: ; preds = %entry - br label %if.merge.201 - -if.else.200: ; 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.194, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.193, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.201 - -if.merge.201: ; preds = %if.else.200, %if.then.199 - %bp = phi { ptr, i64 } [ { ptr @str.192, i64 4 }, %if.then.199 ], [ %callN, %if.else.200 ] - 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.223, label %if.else.224 - -if.then.223: ; preds = %entry - br label %if.merge.225 - -if.else.224: ; 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.197, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.225 - -if.merge.225: ; preds = %if.else.224, %if.then.223 - %bp = phi { ptr, i64 } [ { ptr @str.195, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] - 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.226, label %if.else.227 - -if.then.226: ; preds = %entry - br label %if.merge.228 - -if.else.227: ; 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.200, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.228 - -if.merge.228: ; preds = %if.else.227, %if.then.226 - %bp = phi { ptr, i64 } [ { ptr @str.198, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] - 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 @@ -2928,12 +3104,96 @@ if.then.229: ; preds = %entry if.else.230: ; 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.203, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 5 }, { ptr, i64 } %callN) br label %if.merge.231 if.merge.231: ; preds = %if.else.230, %if.then.229 - %bp = phi { ptr, i64 } [ { ptr @str.201, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] + %bp = phi { ptr, i64 } [ { ptr @str.198, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] + 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.245, label %if.else.246 + +if.then.245: ; preds = %entry + br label %if.merge.247 + +if.else.246: ; 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.203, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.247 + +if.merge.247: ; preds = %if.else.246, %if.then.245 + %bp = phi { ptr, i64 } [ { ptr @str.201, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] + 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.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.206, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.250 + +if.merge.250: ; preds = %if.else.249, %if.then.248 + %bp = phi { ptr, i64 } [ { ptr @str.204, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] + 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.251, label %if.else.252 + +if.then.251: ; preds = %entry + br label %if.merge.253 + +if.else.252: ; 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.209, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.253 + +if.merge.253: ; preds = %if.else.252, %if.then.251 + %bp = phi { ptr, i64 } [ { ptr @str.207, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] ret { ptr, i64 } %bp } @@ -2948,20 +3208,20 @@ entry: 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.232, label %if.else.233 + br i1 %icmp, label %if.then.254, label %if.else.255 -if.then.232: ; preds = %entry - br label %if.merge.234 +if.then.254: ; preds = %entry + br label %if.merge.256 -if.else.233: ; preds = %entry +if.else.255: ; 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.206, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.234 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.212, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.256 -if.merge.234: ; preds = %if.else.233, %if.then.232 - %bp = phi { ptr, i64 } [ { ptr @str.204, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] +if.merge.256: ; preds = %if.else.255, %if.then.254 + %bp = phi { ptr, i64 } [ { ptr @str.210, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] ret { ptr, i64 } %bp } @@ -2975,20 +3235,20 @@ entry: 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.235, label %if.else.236 + br i1 %icmp, label %if.then.257, label %if.else.258 -if.then.235: ; preds = %entry - br label %if.merge.237 +if.then.257: ; preds = %entry + br label %if.merge.259 -if.else.236: ; preds = %entry +if.else.258: ; 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.209, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.237 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.259 -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.207, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.213, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] ret { ptr, i64 } %bp } @@ -3003,20 +3263,20 @@ entry: 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.238, label %if.else.239 + br i1 %icmp, label %if.then.260, label %if.else.261 -if.then.238: ; preds = %entry - br label %if.merge.240 +if.then.260: ; preds = %entry + br label %if.merge.262 -if.else.239: ; preds = %entry +if.else.261: ; 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.212, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.240 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.218, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.262 -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.210, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.216, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] ret { ptr, i64 } %bp } @@ -3031,20 +3291,20 @@ entry: 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.241, label %if.else.242 + br i1 %icmp, label %if.then.263, label %if.else.264 -if.then.241: ; preds = %entry - br label %if.merge.243 +if.then.263: ; preds = %entry + br label %if.merge.265 -if.else.242: ; preds = %entry +if.else.264: ; 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.215, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.214, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.243 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.221, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.265 -if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.213, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.219, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3059,20 +3319,20 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.218, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.224, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.216, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.222, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } @@ -3087,20 +3347,20 @@ entry: 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.247, label %if.else.248 + br i1 %icmp, label %if.then.269, label %if.else.270 -if.then.247: ; preds = %entry - br label %if.merge.249 +if.then.269: ; preds = %entry + br label %if.merge.271 -if.else.248: ; preds = %entry +if.else.270: ; 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.221, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.249 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.227, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.271 -if.merge.249: ; preds = %if.else.248, %if.then.247 - %bp = phi { ptr, i64 } [ { ptr @str.219, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] +if.merge.271: ; preds = %if.else.270, %if.then.269 + %bp = phi { ptr, i64 } [ { ptr @str.225, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] ret { ptr, i64 } %bp } @@ -3115,20 +3375,20 @@ entry: 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.250, label %if.else.251 + br i1 %icmp, label %if.then.272, label %if.else.273 -if.then.250: ; preds = %entry - br label %if.merge.252 +if.then.272: ; preds = %entry + br label %if.merge.274 -if.else.251: ; preds = %entry +if.else.273: ; 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.224, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.252 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.230, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.274 -if.merge.252: ; preds = %if.else.251, %if.then.250 - %bp = phi { ptr, i64 } [ { ptr @str.222, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] +if.merge.274: ; preds = %if.else.273, %if.then.272 + %bp = phi { ptr, i64 } [ { ptr @str.228, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] ret { ptr, i64 } %bp } @@ -3143,20 +3403,20 @@ entry: 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.253, label %if.else.254 + br i1 %icmp, label %if.then.275, label %if.else.276 -if.then.253: ; preds = %entry - br label %if.merge.255 +if.then.275: ; preds = %entry + br label %if.merge.277 -if.else.254: ; preds = %entry +if.else.276: ; 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.227, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.255 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.233, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.277 -if.merge.255: ; preds = %if.else.254, %if.then.253 - %bp = phi { ptr, i64 } [ { ptr @str.225, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] +if.merge.277: ; preds = %if.else.276, %if.then.275 + %bp = phi { ptr, i64 } [ { ptr @str.231, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] ret { ptr, i64 } %bp } @@ -3171,20 +3431,20 @@ entry: 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.256, label %if.else.257 + br i1 %icmp, label %if.then.278, label %if.else.279 -if.then.256: ; preds = %entry - br label %if.merge.258 +if.then.278: ; preds = %entry + br label %if.merge.280 -if.else.257: ; preds = %entry +if.else.279: ; 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.230, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.229, i64 10 }, { ptr, i64 } %callN) - br label %if.merge.258 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 10 }, { ptr, i64 } %callN) + br label %if.merge.280 -if.merge.258: ; preds = %if.else.257, %if.then.256 - %bp = phi { ptr, i64 } [ { ptr @str.228, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] +if.merge.280: ; preds = %if.else.279, %if.then.278 + %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] ret { ptr, i64 } %bp } @@ -3199,20 +3459,20 @@ entry: 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.259, label %if.else.260 + br i1 %icmp, label %if.then.281, label %if.else.282 -if.then.259: ; preds = %entry - br label %if.merge.261 +if.then.281: ; preds = %entry + br label %if.merge.283 -if.else.260: ; preds = %entry +if.else.282: ; 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.233, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.261 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.239, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.283 -if.merge.261: ; preds = %if.else.260, %if.then.259 - %bp = phi { ptr, i64 } [ { ptr @str.231, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] +if.merge.283: ; preds = %if.else.282, %if.then.281 + %bp = phi { ptr, i64 } [ { ptr @str.237, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] ret { ptr, i64 } %bp } @@ -3227,20 +3487,20 @@ entry: 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.262, label %if.else.263 + br i1 %icmp, label %if.then.284, label %if.else.285 -if.then.262: ; preds = %entry - br label %if.merge.264 +if.then.284: ; preds = %entry + br label %if.merge.286 -if.else.263: ; preds = %entry +if.else.285: ; 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.236, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.264 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.286 -if.merge.264: ; preds = %if.else.263, %if.then.262 - %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] +if.merge.286: ; preds = %if.else.285, %if.then.284 + %bp = phi { ptr, i64 } [ { ptr @str.240, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] ret { ptr, i64 } %bp } @@ -3255,20 +3515,20 @@ entry: 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.265, label %if.else.266 + br i1 %icmp, label %if.then.287, label %if.else.288 -if.then.265: ; preds = %entry - br label %if.merge.267 +if.then.287: ; preds = %entry + br label %if.merge.289 -if.else.266: ; preds = %entry +if.else.288: ; 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.239, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.267 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.245, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.289 -if.merge.267: ; preds = %if.else.266, %if.then.265 - %bp = phi { ptr, i64 } [ { ptr @str.237, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] +if.merge.289: ; preds = %if.else.288, %if.then.287 + %bp = phi { ptr, i64 } [ { ptr @str.243, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] ret { ptr, i64 } %bp } @@ -3283,20 +3543,20 @@ entry: 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.268, label %if.else.269 + br i1 %icmp, label %if.then.290, label %if.else.291 -if.then.268: ; preds = %entry - br label %if.merge.270 +if.then.290: ; preds = %entry + br label %if.merge.292 -if.else.269: ; preds = %entry +if.else.291: ; 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.242, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.241, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.270 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.292 -if.merge.270: ; preds = %if.else.269, %if.then.268 - %bp = phi { ptr, i64 } [ { ptr @str.240, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] +if.merge.292: ; preds = %if.else.291, %if.then.290 + %bp = phi { ptr, i64 } [ { ptr @str.246, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] ret { ptr, i64 } %bp } @@ -3311,20 +3571,20 @@ entry: 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.271, label %if.else.272 + br i1 %icmp, label %if.then.293, label %if.else.294 -if.then.271: ; preds = %entry - br label %if.merge.273 +if.then.293: ; preds = %entry + br label %if.merge.295 -if.else.272: ; preds = %entry +if.else.294: ; 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.245, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.273 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.295 -if.merge.273: ; preds = %if.else.272, %if.then.271 - %bp = phi { ptr, i64 } [ { ptr @str.243, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] +if.merge.295: ; preds = %if.else.294, %if.then.293 + %bp = phi { ptr, i64 } [ { ptr @str.249, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] ret { ptr, i64 } %bp } @@ -3339,23 +3599,21 @@ entry: 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.274, label %if.else.275 + br i1 %icmp, label %if.then.296, label %if.else.297 -if.then.274: ; preds = %entry - br label %if.merge.276 +if.then.296: ; preds = %entry + br label %if.merge.298 -if.else.275: ; preds = %entry +if.else.297: ; 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.248, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.276 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.298 -if.merge.276: ; preds = %if.else.275, %if.then.274 - %bp = phi { ptr, i64 } [ { ptr @str.246, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] +if.merge.298: ; preds = %if.else.297, %if.then.296 + %bp = phi { ptr, i64 } [ { ptr @str.252, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] ret { ptr, i64 } %bp } declare i64 @write(i32, ptr, i64) - - diff --git a/examples/expected/1202-ffi-cc-c-large-aggregate.ir b/examples/expected/1202-ffi-cc-c-large-aggregate.ir index c9fe71e..26ed918 100644 --- a/examples/expected/1202-ffi-cc-c-large-aggregate.ir +++ b/examples/expected/1202-ffi-cc-c-large-aggregate.ir @@ -96,6 +96,9 @@ declare ptr @cstring(ptr, i64) #0 ; Function Attrs: nounwind declare ptr @int_to_string(ptr, i64) #0 +; Function Attrs: nounwind +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -105,6 +108,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 diff --git a/examples/expected/1309-ffi-objc-class-method-lowering.ir b/examples/expected/1309-ffi-objc-class-method-lowering.ir index 25acc9e..54b3dbf 100644 --- a/examples/expected/1309-ffi-objc-class-method-lowering.ir +++ b/examples/expected/1309-ffi-objc-class-method-lowering.ir @@ -173,38 +173,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -217,34 +222,32 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -254,6 +257,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -367,7 +373,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -385,9 +391,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -425,9 +431,9 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 @@ -476,7 +482,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -504,35 +510,35 @@ if.then.24: ; preds = %if.else.10 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.26 + br label %if.merge.25 -if.else.25: ; preds = %if.else.10 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 + br label %if.merge.25 -if.merge.26: ; preds = %if.else.25, %if.then.24 +if.merge.25: ; preds = %if.else.24, %if.then.23 br label %if.merge.11 -if.then.27: ; preds = %if.else.4 +if.then.26: ; preds = %if.else.4 %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.30, label %if.else.31 + br i1 %icmpN, label %if.then.29, label %if.else.30 -if.else.28: ; preds = %if.else.4 +if.else.27: ; preds = %if.else.4 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.29 + br label %if.merge.28 -if.merge.29: ; preds = %if.merge.32, %if.else.28 +if.merge.28: ; preds = %if.merge.31, %if.else.27 br label %if.merge.5 -if.then.30: ; preds = %if.then.27 +if.then.29: ; preds = %if.then.26 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -541,18 +547,18 @@ if.then.30: ; preds = %if.then.27 %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.33, label %if.else.34 + br i1 %icmpN, label %if.then.32, label %if.else.33 -if.else.31: ; preds = %if.then.27 +if.else.30: ; preds = %if.then.26 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.32 + br label %if.merge.31 -if.merge.32: ; preds = %if.merge.35, %if.else.31 - br label %if.merge.29 +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 -if.then.33: ; preds = %if.then.30 +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -580,18 +586,18 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.34 -if.else.34: ; preds = %if.then.30 +if.else.33: ; preds = %if.then.29 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 -if.then.36: ; preds = %while.exit.2 +if.then.35: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -614,9 +620,9 @@ if.then.36: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1314-ffi-objc-class-dealloc-roundtrip.ir b/examples/expected/1314-ffi-objc-class-dealloc-roundtrip.ir index 6df1dbe..4b28bd2 100644 --- a/examples/expected/1314-ffi-objc-class-dealloc-roundtrip.ir +++ b/examples/expected/1314-ffi-objc-class-dealloc-roundtrip.ir @@ -189,38 +189,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -233,34 +238,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -270,6 +273,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -383,7 +389,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -401,9 +407,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -441,9 +447,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -492,7 +498,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -520,35 +526,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -557,18 +563,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -596,18 +602,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -630,9 +636,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -846,13 +852,13 @@ if.merge.1: ; preds = %entry store ptr %callN, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 %icmpN = icmp eq ptr %loadN, null - br i1 %icmpN, label %if.then.40, label %if.merge.41 + br i1 %icmpN, label %if.then.39, label %if.merge.40 -if.then.40: ; preds = %if.merge.1 +if.then.39: ; preds = %if.merge.1 call void @print__ct_sfe783e2b27a4beff__pack(ptr @__sx_default_context) ret i32 1 -if.merge.41: ; preds = %if.merge.1 +if.merge.40: ; preds = %if.merge.1 %allocaN = alloca ptr, align 8 %callN = call ptr @sel_registerName(ptr @str.18) store ptr %callN, ptr %allocaN, align 8 @@ -866,13 +872,13 @@ if.merge.41: ; preds = %if.merge.1 store ptr %icall, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 %icmpN = icmp eq ptr %loadN, null - br i1 %icmpN, label %if.then.42, label %if.merge.43 + br i1 %icmpN, label %if.then.41, label %if.merge.42 -if.then.42: ; preds = %if.merge.41 +if.then.41: ; preds = %if.merge.40 call void @print__ct_scaebdbbd10c81716__pack(ptr @__sx_default_context) ret i32 1 -if.merge.43: ; preds = %if.merge.41 +if.merge.42: ; preds = %if.merge.40 %allocaN = alloca ptr, align 8 %callN = call ptr @sel_registerName(ptr @str.19) store ptr %callN, ptr %allocaN, align 8 @@ -890,13 +896,13 @@ if.merge.43: ; preds = %if.merge.41 store ptr %icallN, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 %icmpN = icmp eq ptr %loadN, null - br i1 %icmpN, label %if.then.44, label %if.merge.45 + br i1 %icmpN, label %if.then.43, label %if.merge.44 -if.then.44: ; preds = %if.merge.43 +if.then.43: ; preds = %if.merge.42 call void @print__ct_s7c1052877b8cc801__pack(ptr @__sx_default_context) ret i32 1 -if.merge.45: ; preds = %if.merge.43 +if.merge.44: ; preds = %if.merge.42 %loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 diff --git a/examples/expected/1319-ffi-objc-property-sx-defined.ir b/examples/expected/1319-ffi-objc-property-sx-defined.ir index d54311f..78a6052 100644 --- a/examples/expected/1319-ffi-objc-property-sx-defined.ir +++ b/examples/expected/1319-ffi-objc-property-sx-defined.ir @@ -14,265 +14,266 @@ @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 [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [16 x i8] c"OperatingSystem\00" -@tn.str.42 = private constant [13 x i8] c"Architecture\00" -@tn.str.43 = private constant [13 x i8] c"BuildOptions\00" -@tn.str.44 = private constant [11 x i8] c"() -> bool\00" -@tn.str.45 = private constant [9 x i8] c"NSString\00" -@tn.str.46 = private constant [10 x i8] c"*NSString\00" -@tn.str.47 = private constant [10 x i8] c"Closure()\00" -@tn.str.48 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.49 = private constant [5 x i8] c"*s64\00" -@tn.str.50 = private constant [7 x i8] c"**void\00" -@tn.str.51 = private constant [6 x i8] c"SxBox\00" -@tn.str.52 = private constant [7 x i8] c"*SxBox\00" -@tn.str.53 = private constant [13 x i8] c"__SxBoxState\00" -@tn.str.54 = private constant [8 x i8] c"**SxBox\00" -@tn.str.55 = private constant [5 x i8] c"*s32\00" -@tn.str.56 = private constant [8 x i8] c"*string\00" -@tn.str.57 = private constant [6 x i8] c"[]Any\00" -@tn.str.58 = private constant [5 x i8] c"*Any\00" -@tn.str.59 = private constant [7 x i8] c"*[]Any\00" -@tn.str.60 = private constant [4 x i8] c"*u8\00" -@tn.str.61 = private constant [6 x i8] c"*bool\00" -@tn.str.62 = private constant [7 x i8] c"[1]Any\00" -@tn.str.63 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.64 = private constant [7 x i8] c"[3]Any\00" -@tn.str.65 = private constant [8 x i8] c"*[3]Any\00" -@tn.str.66 = private constant [5 x i8] c"*f64\00" -@tn.str.67 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.68 = private constant [11 x i8] c"*Allocator\00" -@tn.str.69 = private constant [9 x i8] c"*Context\00" -@tn.str.70 = private constant [14 x i8] c"*BuildOptions\00" -@tn.str.71 = private constant [14 x i8] c"*__SxBoxState\00" -@tn.str.72 = private constant [17 x i8] c"*OperatingSystem\00" -@tn.str.73 = private constant [14 x i8] c"*Architecture\00" -@tn.str.74 = private constant [10 x i8] c"*[]string\00" -@tn.str.75 = private constant [6 x i8] c"**GPA\00" -@tn.str.76 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.77 = private constant [8 x i8] c"**Arena\00" -@tn.str.78 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.79 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.80 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.81 = private constant [11 x i8] c"**NSString\00" -@tn.str.82 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.83 = private constant [6 x i8] c"**s64\00" -@tn.str.84 = private constant [8 x i8] c"***void\00" -@tn.str.85 = private constant [9 x i8] c"***SxBox\00" -@tn.str.86 = private constant [6 x i8] c"**s32\00" -@tn.str.87 = private constant [9 x i8] c"**string\00" -@tn.str.88 = private constant [6 x i8] c"**Any\00" -@tn.str.89 = private constant [8 x i8] c"**[]Any\00" -@tn.str.90 = private constant [5 x i8] c"**u8\00" -@tn.str.91 = private constant [7 x i8] c"**bool\00" -@tn.str.92 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.93 = private constant [9 x i8] c"**[3]Any\00" -@tn.str.94 = private constant [16 x i8] c"__sx_objc_super\00" -@tn.str.95 = private constant [17 x i8] c"*__sx_objc_super\00" -@tn.str.96 = private constant [6 x i8] c"[8]u8\00" -@__sx_type_names = private constant [92 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 15 }, { ptr, i64 } { ptr @tn.str.42, i64 12 }, { ptr, i64 } { ptr @tn.str.43, i64 12 }, { ptr, i64 } { ptr @tn.str.44, i64 10 }, { ptr, i64 } { ptr @tn.str.45, i64 8 }, { ptr, i64 } { ptr @tn.str.46, i64 9 }, { ptr, i64 } { ptr @tn.str.47, i64 9 }, { ptr, i64 } { ptr @tn.str.48, i64 12 }, { ptr, i64 } { ptr @tn.str.49, i64 4 }, { ptr, i64 } { ptr @tn.str.50, i64 6 }, { ptr, i64 } { ptr @tn.str.51, i64 5 }, { ptr, i64 } { ptr @tn.str.52, i64 6 }, { ptr, i64 } { ptr @tn.str.53, i64 12 }, { ptr, i64 } { ptr @tn.str.54, i64 7 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 7 }, { ptr, i64 } { ptr @tn.str.57, i64 5 }, { ptr, i64 } { ptr @tn.str.58, i64 4 }, { ptr, i64 } { ptr @tn.str.59, i64 6 }, { ptr, i64 } { ptr @tn.str.60, i64 3 }, { ptr, i64 } { ptr @tn.str.61, i64 5 }, { ptr, i64 } { ptr @tn.str.62, i64 6 }, { ptr, i64 } { ptr @tn.str.63, i64 7 }, { ptr, i64 } { ptr @tn.str.64, i64 6 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 4 }, { ptr, i64 } { ptr @tn.str.67, i64 16 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 13 }, { ptr, i64 } { ptr @tn.str.71, i64 13 }, { ptr, i64 } { ptr @tn.str.72, i64 16 }, { ptr, i64 } { ptr @tn.str.73, i64 13 }, { ptr, i64 } { ptr @tn.str.74, i64 9 }, { ptr, i64 } { ptr @tn.str.75, i64 5 }, { ptr, i64 } { ptr @tn.str.76, i64 12 }, { ptr, i64 } { ptr @tn.str.77, i64 7 }, { ptr, i64 } { ptr @tn.str.78, i64 6 }, { ptr, i64 } { ptr @tn.str.79, i64 10 }, { ptr, i64 } { ptr @tn.str.80, i64 19 }, { ptr, i64 } { ptr @tn.str.81, i64 10 }, { ptr, i64 } { ptr @tn.str.82, i64 13 }, { ptr, i64 } { ptr @tn.str.83, i64 5 }, { ptr, i64 } { ptr @tn.str.84, i64 7 }, { ptr, i64 } { ptr @tn.str.85, i64 8 }, { ptr, i64 } { ptr @tn.str.86, i64 5 }, { ptr, i64 } { ptr @tn.str.87, i64 8 }, { ptr, i64 } { ptr @tn.str.88, i64 5 }, { ptr, i64 } { ptr @tn.str.89, i64 7 }, { ptr, i64 } { ptr @tn.str.90, i64 4 }, { ptr, i64 } { ptr @tn.str.91, i64 6 }, { ptr, i64 } { ptr @tn.str.92, i64 8 }, { ptr, i64 } { ptr @tn.str.93, i64 8 }, { ptr, i64 } { ptr @tn.str.94, i64 15 }, { ptr, i64 } { ptr @tn.str.95, i64 16 }, { ptr, i64 } { ptr @tn.str.96, i64 5 }] -@str.97 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.99 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [15 x i8] c"result := \22\22; \00", align 1 -@str.103 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.104 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.105 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.106 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.107 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.108 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.109 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.110 = private unnamed_addr constant [5 x i8] c")); \00", 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 [6 x i8] c"SxBox\00", align 1 -@str.118 = private unnamed_addr constant [9 x i8] c"setArea:\00", align 1 -@str.119 = private unnamed_addr constant [31 x i8] c"FAIL: width/height round-trip\0A\00", align 1 -@str.120 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.121 = private unnamed_addr constant [31 x i8] c"FAIL: width/height round-trip\0A\00", align 1 -@str.122 = private unnamed_addr constant [31 x i8] c"FAIL: area expected 0, got {}\0A\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: area expected 0, got {}\0A\00", align 1 -@str.125 = private unnamed_addr constant [52 x i8] c"FAIL: setArea: should not be registered (readonly)\0A\00", 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 [52 x i8] c"FAIL: setArea: should not be registered (readonly)\0A\00", align 1 -@str.128 = private unnamed_addr constant [29 x i8] c"property: w={} h={} area={}\0A\00", 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 [29 x i8] c"property: w={} h={} area={}\0A\00", align 1 -@str.131 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.132 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.133 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.134 = private unnamed_addr constant [3 x i8] c", \00", 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.135 = private constant [5 x i8] c"line\00" -@fld.str.136 = private constant [4 x i8] c"col\00" -@fld.str.137 = 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.135, i64 4 }, { ptr, i64 } { ptr @fld.str.136, i64 3 }, { ptr, i64 } { ptr @fld.str.137, i64 4 }] -@str.138 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.139 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.140 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.141 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.143 = private constant [4 x i8] c"ctx\00" -@fld.str.144 = private constant [6 x i8] c"alloc\00" -@fld.str.145 = private constant [8 x i8] c"dealloc\00" -@field_names.146 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.143, i64 3 }, { ptr, i64 } { ptr @fld.str.144, i64 5 }, { ptr, i64 } { ptr @fld.str.145, i64 7 }] -@str.147 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.148 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.149 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.151 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.152 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.153 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.154 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 -@str.155 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.156 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.157 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.158 = private constant [12 x i8] c"alloc_count\00" -@field_names.159 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.158, i64 11 }] -@str.160 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.161 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.162 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.163 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.165 = private constant [5 x i8] c"next\00" -@fld.str.166 = private constant [4 x i8] c"cap\00" -@field_names.167 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.165, i64 4 }, { ptr, i64 } { ptr @fld.str.166, i64 3 }] -@str.168 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.169 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 -@str.170 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.171 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.173 = private constant [6 x i8] c"first\00" -@fld.str.174 = private constant [10 x i8] c"end_index\00" -@fld.str.175 = private constant [7 x i8] c"parent\00" -@field_names.176 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.173, i64 5 }, { ptr, i64 } { ptr @fld.str.174, i64 9 }, { ptr, i64 } { ptr @fld.str.175, i64 6 }] -@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.178 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.179 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.180 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.181 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.182 = private constant [4 x i8] c"buf\00" -@fld.str.183 = private constant [4 x i8] c"len\00" -@fld.str.184 = private constant [4 x i8] c"pos\00" -@field_names.185 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.182, i64 3 }, { ptr, i64 } { ptr @fld.str.183, i64 3 }, { ptr, i64 } { ptr @fld.str.184, i64 3 }] -@str.186 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.187 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.188 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.189 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.190 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.191 = private constant [7 x i8] c"parent\00" -@fld.str.192 = private constant [12 x i8] c"alloc_count\00" -@fld.str.193 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.194 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.195 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.191, i64 6 }, { ptr, i64 } { ptr @fld.str.192, i64 11 }, { ptr, i64 } { ptr @fld.str.193, i64 13 }, { ptr, i64 } { ptr @fld.str.194, i64 17 }] -@str.196 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.197 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.198 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.199 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.200 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.201 = private constant [10 x i8] c"allocator\00" -@fld.str.202 = private constant [5 x i8] c"data\00" -@field_names.203 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.201, i64 9 }, { ptr, i64 } { ptr @fld.str.202, i64 4 }] -@str.204 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.205 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 -@str.206 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.207 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.208 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.209 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.210 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.211 = private unnamed_addr constant [9 x i8] c"NSString\00", align 1 -@str.212 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.213 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.214 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.215 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.216 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.217 = private unnamed_addr constant [6 x i8] c"SxBox\00", align 1 -@str.218 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.219 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.220 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.221 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.222 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.223 = private unnamed_addr constant [13 x i8] c"__SxBoxState\00", align 1 -@str.224 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.225 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.226 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.227 = private constant [15 x i8] c"__sx_allocator\00" -@fld.str.228 = private constant [6 x i8] c"width\00" -@fld.str.229 = private constant [7 x i8] c"height\00" -@fld.str.230 = private constant [5 x i8] c"area\00" -@field_names.231 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.227, i64 14 }, { ptr, i64 } { ptr @fld.str.228, i64 5 }, { ptr, i64 } { ptr @fld.str.229, i64 6 }, { ptr, i64 } { ptr @fld.str.230, i64 4 }] -@str.232 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.233 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.234 = private constant [6 x i8] c"macos\00" -@fld.str.235 = private constant [6 x i8] c"linux\00" -@fld.str.236 = private constant [8 x i8] c"windows\00" -@fld.str.237 = private constant [5 x i8] c"wasm\00" -@fld.str.238 = private constant [4 x i8] c"ios\00" -@fld.str.239 = private constant [8 x i8] c"android\00" -@fld.str.240 = private constant [8 x i8] c"unknown\00" -@field_names.241 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.234, i64 5 }, { ptr, i64 } { ptr @fld.str.235, i64 5 }, { ptr, i64 } { ptr @fld.str.236, i64 7 }, { ptr, i64 } { ptr @fld.str.237, i64 4 }, { ptr, i64 } { ptr @fld.str.238, i64 3 }, { ptr, i64 } { ptr @fld.str.239, i64 7 }, { ptr, i64 } { ptr @fld.str.240, i64 7 }] -@str.242 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.243 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.244 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.245 = private constant [8 x i8] c"aarch64\00" -@fld.str.246 = private constant [7 x i8] c"x86_64\00" -@fld.str.247 = private constant [7 x i8] c"wasm32\00" -@fld.str.248 = private constant [7 x i8] c"wasm64\00" -@fld.str.249 = private constant [8 x i8] c"unknown\00" -@field_names.250 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.245, i64 7 }, { ptr, i64 } { ptr @fld.str.246, i64 6 }, { ptr, i64 } { ptr @fld.str.247, i64 6 }, { ptr, i64 } { ptr @fld.str.248, i64 6 }, { ptr, i64 } { ptr @fld.str.249, i64 7 }] -@str.251 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.252 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.253 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.254 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.255 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@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 @@ -282,97 +283,103 @@ @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 [5 x i8] c"null\00", align 1 -@str.266 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.267 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.268 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.269 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.270 = private unnamed_addr constant [4 x i8] c"@0x\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 [5 x i8] c"*GPA\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"*ArenaChunk\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 [7 x i8] c"*Arena\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 [6 x i8] c"[*]u8\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 [10 x i8] c"*BufAlloc\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 [19 x i8] c"*TrackingAllocator\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"*NSString\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 [13 x i8] c"**CAllocator\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 [5 x i8] c"*s64\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 [7 x i8] c"**void\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 [7 x i8] c"*SxBox\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 [8 x i8] c"**SxBox\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 [5 x i8] c"*s32\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"*string\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"*Any\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 [7 x i8] c"*[]Any\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 [4 x i8] c"*u8\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 [6 x i8] c"*bool\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 [8 x i8] c"*[1]Any\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 [8 x i8] c"*[3]Any\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_.331 = private unnamed_addr constant [10 x i8] c"setWidth:\00" -@OBJC_METH_VAR_NAME_.332 = private unnamed_addr constant [11 x i8] c"setHeight:\00" -@OBJC_METH_VAR_NAME_.333 = private unnamed_addr constant [6 x i8] c"width\00" -@OBJC_METH_VAR_NAME_.334 = private unnamed_addr constant [7 x i8] c"height\00" -@OBJC_METH_VAR_NAME_.335 = private unnamed_addr constant [5 x i8] c"area\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_.336 = private unnamed_addr constant [6 x i8] c"SxBox\00" -@OBJC_METH_VAR_NAME_.337 = private unnamed_addr constant [6 x i8] c"width\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_.338 = private unnamed_addr constant [10 x i8] c"setWidth:\00" -@OBJC_METH_VAR_TYPE_.339 = private unnamed_addr constant [5 x i8] c"v@:i\00" -@OBJC_METH_VAR_NAME_.340 = private unnamed_addr constant [7 x i8] c"height\00" -@OBJC_METH_VAR_TYPE_.341 = private unnamed_addr constant [4 x i8] c"i@:\00" -@OBJC_METH_VAR_NAME_.342 = private unnamed_addr constant [11 x i8] c"setHeight:\00" -@OBJC_METH_VAR_TYPE_.343 = private unnamed_addr constant [5 x i8] c"v@:i\00" -@OBJC_METH_VAR_NAME_.344 = private unnamed_addr constant [5 x i8] c"area\00" -@OBJC_METH_VAR_TYPE_.345 = private unnamed_addr constant [4 x i8] c"i@:\00" -@OBJC_METH_VAR_NAME_.346 = private unnamed_addr constant [8 x i8] c"dealloc\00" -@OBJC_METH_VAR_TYPE_.347 = private unnamed_addr constant [4 x i8] c"v@:\00" -@OBJC_METH_VAR_NAME_.348 = private unnamed_addr constant [6 x i8] c"alloc\00" -@OBJC_METH_VAR_TYPE_.349 = private unnamed_addr constant [4 x i8] c"@@:\00" -@OBJC_CLASS_NAME_.350 = private unnamed_addr constant [6 x i8] c"SxBox\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 @@ -512,38 +519,43 @@ if.merge.19: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.20, label %if.else.21 - -if.then.20: ; preds = %if.merge.19 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.22 - -if.else.21: ; preds = %if.merge.19 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.22 - -if.merge.22: ; preds = %if.else.21, %if.then.20 - %bp = phi i64 [ %sub, %if.then.20 ], [ %loadN, %if.else.21 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.23 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.20 -while.hdr.23: ; preds = %while.body.24, %if.merge.22 +while.hdr.20: ; preds = %if.merge.24, %if.merge.19 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.24, label %while.exit.25 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.21, label %while.exit.22 -while.body.24: ; preds = %while.hdr.23 +while.body.21: ; preds = %while.hdr.20 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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 @@ -556,50 +568,178 @@ while.body.24: ; preds = %while.hdr.23 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.23 + br label %while.hdr.20 -while.exit.25: ; preds = %while.hdr.23 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.26, label %if.merge.27 - -if.then.26: ; preds = %while.exit.25 +if.then.25: ; preds = %while.exit.22 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.27 + br label %if.merge.26 -if.merge.27: ; preds = %if.then.26, %while.exit.25 +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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, 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 + %ig.tmp = alloca [4 x i64], 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 + %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.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 + %ig.tmp15 = alloca [4 x i64], 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 + %ig.tmp20 = alloca [4 x i64], 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 + %ig.tmp26 = alloca [4 x i64], 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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.62, label %if.else.63 + br i1 %load, label %if.then.86, label %if.else.87 -if.then.62: ; preds = %entry - br label %if.merge.64 +if.then.86: ; preds = %entry + br label %if.merge.88 -if.else.63: ; preds = %entry - br label %if.merge.64 +if.else.87: ; preds = %entry + br label %if.merge.88 -if.merge.64: ; preds = %if.else.63, %if.then.62 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.62 ], [ { ptr @str.2, i64 5 }, %if.else.63 ] +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 } @@ -613,19 +753,19 @@ entry: %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.68, label %if.else.69 + br i1 %loadN, label %if.then.92, label %if.else.93 -if.then.68: ; preds = %entry +if.then.92: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.70 + br label %if.merge.94 -if.else.69: ; preds = %entry +if.else.93: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.70 + br label %if.merge.94 -if.merge.70: ; preds = %if.else.69, %if.then.68 - %bp = phi double [ %fsub, %if.then.68 ], [ %loadN, %if.else.69 ] +if.merge.94: ; preds = %if.else.93, %if.then.92 + %bp = phi double [ %fsub, %if.then.92 ], [ %loadN, %if.else.93 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -642,15 +782,15 @@ if.merge.70: ; preds = %if.else.69, %if.the 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.71, label %if.merge.72 + br i1 %icmp, label %if.then.95, label %if.merge.96 -if.then.71: ; preds = %if.merge.70 +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.72 + br label %if.merge.96 -if.merge.72: ; preds = %if.then.71, %if.merge.70 +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) %allocaN = alloca { ptr, i64 }, align 8 @@ -668,16 +808,16 @@ if.merge.72: ; preds = %if.then.71, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.73, label %if.else.74 + br i1 %loadN, label %if.then.97, label %if.else.98 -if.then.73: ; preds = %if.merge.72 - br label %if.merge.75 +if.then.97: ; preds = %if.merge.96 + br label %if.merge.99 -if.else.74: ; preds = %if.merge.72 - br label %if.merge.75 +if.else.98: ; preds = %if.merge.96 + br label %if.merge.99 -if.merge.75: ; preds = %if.else.74, %if.then.73 - %bpN = phi i64 [ 1, %if.then.73 ], [ 0, %if.else.74 ] +if.merge.99: ; preds = %if.else.98, %if.then.97 + %bpN = phi i64 [ 1, %if.then.97 ], [ 0, %if.else.98 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -694,17 +834,17 @@ if.merge.75: ; preds = %if.else.74, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.76, label %if.merge.77 + br i1 %loadN, label %if.then.100, label %if.merge.101 -if.then.76: ; preds = %if.merge.75 +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.77 + br label %if.merge.101 -if.merge.77: ; preds = %if.then.76, %if.merge.75 +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 @@ -767,39 +907,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.231 + br label %while.hdr.253 -while.hdr.231: ; preds = %if.merge.236, %entry +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.232, label %while.exit.233 + br i1 %icmp, label %while.body.254, label %while.exit.255 -while.body.232: ; preds = %while.hdr.231 +while.body.254: ; preds = %while.hdr.253 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.234, label %if.else.235 + br i1 %icmpN, label %if.then.256, label %if.else.257 -while.exit.233: ; preds = %while.hdr.231 +while.exit.255: ; preds = %while.hdr.253 ret void -if.then.234: ; preds = %while.body.232 +if.then.256: ; preds = %while.body.254 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.236 + br label %if.merge.258 -if.else.235: ; preds = %while.body.232 +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.236 + br label %if.merge.258 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi i64 [ %addN, %if.then.234 ], [ %addN, %if.else.235 ] +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 @@ -812,37 +952,29 @@ if.merge.236: ; preds = %if.else.235, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.231 + br label %while.hdr.253 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.221, label %if.merge.222 - -if.then.221: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.222: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.223, label %if.merge.224 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.66, label %if.merge.67 -if.then.223: ; preds = %if.merge.222 +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.224 + br label %if.merge.67 -if.merge.224: ; preds = %if.then.223, %if.merge.222 +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 @@ -855,15 +987,15 @@ if.merge.224: ; preds = %if.then.223, %if.me 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.225, label %if.merge.226 + br i1 %icmpN, label %if.then.68, label %if.merge.69 -if.then.225: ; preds = %if.merge.224 +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.226 + br label %if.merge.69 -if.merge.226: ; preds = %if.then.225, %if.merge.224 +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 @@ -876,15 +1008,15 @@ if.merge.226: ; preds = %if.then.225, %if.me 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.227, label %if.merge.228 + br i1 %icmpN, label %if.then.70, label %if.merge.71 -if.then.227: ; preds = %if.merge.226 +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.228 + br label %if.merge.71 -if.merge.228: ; preds = %if.then.227, %if.merge.226 +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 @@ -897,65 +1029,116 @@ if.merge.228: ; preds = %if.then.227, %if.me 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.229, label %if.merge.230 + br i1 %icmpN, label %if.then.72, label %if.merge.73 -if.then.229: ; preds = %if.merge.228 +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.230 + br label %if.merge.73 -if.merge.230: ; preds = %if.then.229, %if.merge.228 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.73: ; preds = %if.then.72, %if.merge.71 + %allocaN = alloca [4 x i64], align 8 + 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 + 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) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.237 + br label %while.hdr.259 -while.hdr.237: ; preds = %if.merge.241, %if.merge.230 +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.238, label %while.exit.239 + br i1 %icmpN, label %while.body.260, label %while.exit.261 -while.body.238: ; preds = %while.hdr.237 +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.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 + %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.240, label %if.merge.241 + br i1 %icmpN, label %if.then.262, label %if.merge.263 -while.exit.239: ; preds = %if.then.240, %while.hdr.237 +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 - %subN = sub i64 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.240: ; preds = %while.body.238 - br label %while.exit.239 +if.then.262: ; preds = %while.body.260 + br label %while.exit.261 -if.merge.241: ; preds = %while.body.238 +if.merge.263: ; preds = %while.body.260 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.237 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.259 } ; Function Attrs: nounwind @@ -1034,7 +1217,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -1042,574 +1225,601 @@ entry: 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.61 [ - i64 17, label %match.arm.47 - i64 2, label %match.arm.48 - i64 3, label %match.arm.48 - i64 4, label %match.arm.48 - i64 5, label %match.arm.48 - i64 6, label %match.arm.48 - i64 7, label %match.arm.48 - i64 8, label %match.arm.48 - i64 9, label %match.arm.48 - i64 16, label %match.arm.48 - i64 15, label %match.arm.48 - i64 12, label %match.arm.49 - i64 1, label %match.arm.50 - i64 10, label %match.arm.51 - i64 11, label %match.arm.51 - i64 19, label %match.arm.52 - i64 20, label %match.arm.52 - i64 21, label %match.arm.52 - i64 23, label %match.arm.52 - i64 25, label %match.arm.52 - i64 27, label %match.arm.52 - i64 30, label %match.arm.52 - i64 32, label %match.arm.52 - i64 34, label %match.arm.52 + 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 40, label %match.arm.52 - i64 46, label %match.arm.52 - i64 48, label %match.arm.52 - i64 36, label %match.arm.53 - i64 37, label %match.arm.53 - i64 57, label %match.arm.56 - i64 59, label %match.arm.56 - i64 35, label %match.arm.57 + 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 18, label %match.arm.58 - i64 22, label %match.arm.58 - i64 24, label %match.arm.58 - i64 26, label %match.arm.58 - i64 28, label %match.arm.58 - i64 29, label %match.arm.58 - i64 31, label %match.arm.58 - i64 33, label %match.arm.58 - i64 41, label %match.arm.58 - i64 43, label %match.arm.58 - i64 44, label %match.arm.58 - i64 45, label %match.arm.58 - i64 47, label %match.arm.58 - i64 49, label %match.arm.58 - i64 50, label %match.arm.58 - i64 51, label %match.arm.58 - i64 53, label %match.arm.58 - i64 54, label %match.arm.58 - i64 55, label %match.arm.58 - i64 56, label %match.arm.58 - i64 58, label %match.arm.58 - i64 60, label %match.arm.58 - i64 13, label %match.arm.60 + 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.46: ; preds = %dispatch.merge.194, %dispatch.merge.180, %dispatch.merge.166, %dispatch.merge.158, %dispatch.merge.78, %float.merge.67, %match.unr.61, %match.arm.60, %match.arm.50, %match.arm.49, %match.arm.48, %match.arm.47 +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.47: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.46 +match.arm.46: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.45 -match.arm.48: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.46 +match.arm.47: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [94 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.61, label %if.else.62 -match.arm.49: ; preds = %entry +match.arm.48: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.46 + br label %match.merge.45 -match.arm.50: ; preds = %entry +match.arm.49: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.46 + %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.51: ; preds = %entry, %entry +match.arm.50: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.65, label %fN.unbox.66 + br i1 %icmp, label %fN.unbox.89, label %fN.unbox.90 -match.arm.52: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +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.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.79 [ - i64 19, label %dispatch.case.80 - i64 20, label %dispatch.case.81 - i64 21, label %dispatch.case.82 - i64 23, label %dispatch.case.83 - i64 25, label %dispatch.case.84 - i64 27, label %dispatch.case.85 - i64 30, label %dispatch.case.86 - i64 32, label %dispatch.case.87 - i64 34, label %dispatch.case.88 - i64 38, label %dispatch.case.89 - i64 40, label %dispatch.case.90 - i64 46, label %dispatch.case.91 - i64 48, label %dispatch.case.92 + 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.53: ; preds = %entry, %entry +match.arm.52: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.159 [ - i64 36, label %dispatch.case.160 - i64 37, label %dispatch.case.161 + 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: ; 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 + %allocaN = alloca { ptr, i64 }, 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.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.167 [ - i64 57, label %dispatch.case.168 - i64 59, label %dispatch.case.169 + 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 +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.raw30 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw32 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.181 [ - i64 35, label %dispatch.case.182 - i64 52, label %dispatch.case.183 + 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: ; 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.raw34 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.195 [ - i64 18, label %dispatch.case.196 - i64 22, label %dispatch.case.197 - i64 24, label %dispatch.case.198 - i64 26, label %dispatch.case.199 - i64 28, label %dispatch.case.200 - i64 29, label %dispatch.case.201 - i64 31, label %dispatch.case.202 - i64 33, label %dispatch.case.203 - i64 41, label %dispatch.case.204 - i64 43, label %dispatch.case.205 - i64 44, label %dispatch.case.206 - i64 45, label %dispatch.case.207 - i64 47, label %dispatch.case.208 - i64 49, label %dispatch.case.209 - i64 50, label %dispatch.case.210 - i64 51, label %dispatch.case.211 - i64 53, label %dispatch.case.212 - i64 54, label %dispatch.case.213 - i64 55, label %dispatch.case.214 - i64 56, label %dispatch.case.215 - i64 58, label %dispatch.case.216 - i64 60, label %dispatch.case.217 - ] - -match.arm.59: ; No predecessors! +match.arm.58: ; No predecessors! unreachable -match.arm.60: ; preds = %entry +match.arm.59: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [92 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [94 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.46 + br label %match.merge.45 -match.unr.61: ; preds = %entry - br label %match.merge.46 +match.unr.60: ; preds = %entry + br label %match.merge.45 -f32.unbox.65: ; preds = %match.arm.51 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.61: ; preds = %match.arm.47 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + 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.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + 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.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.67 + br label %float.merge.91 -f64.unbox.66: ; preds = %match.arm.51 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.90: ; preds = %match.arm.50 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.67 + br label %float.merge.91 -float.merge.67: ; preds = %fN.unbox.66, %fN.unbox.65 +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.46 + br label %match.merge.45 -dispatch.merge.78: ; preds = %dispatch.case.92, %dispatch.case.91, %dispatch.case.90, %dispatch.case.89, %dispatch.case.88, %dispatch.case.87, %dispatch.case.86, %dispatch.case.85, %dispatch.case.84, %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.default.79 +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.46 + br label %match.merge.45 -dispatch.default.79: ; preds = %match.arm.52 - store { ptr, i64 } { ptr @str.97, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.78 +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.80: ; preds = %match.arm.52 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 - -dispatch.case.81: ; preds = %match.arm.52 +dispatch.case.104: ; preds = %match.arm.51 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.82: ; preds = %match.arm.52 +dispatch.case.105: ; preds = %match.arm.51 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.83: ; preds = %match.arm.52 +dispatch.case.106: ; preds = %match.arm.51 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.84: ; preds = %match.arm.52 +dispatch.case.107: ; preds = %match.arm.51 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.85: ; preds = %match.arm.52 +dispatch.case.108: ; preds = %match.arm.51 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.86: ; preds = %match.arm.52 +dispatch.case.109: ; preds = %match.arm.51 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.87: ; preds = %match.arm.52 +dispatch.case.110: ; preds = %match.arm.51 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.88: ; preds = %match.arm.52 +dispatch.case.111: ; preds = %match.arm.51 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.89: ; preds = %match.arm.52 +dispatch.case.112: ; preds = %match.arm.51 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load {}, ptr %ua.ptr80, align 1 - %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.90: ; preds = %match.arm.52 +dispatch.case.113: ; preds = %match.arm.51 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr %ua.load85 = load {}, ptr %ua.ptr84, align 1 - %callN = call { ptr, i64 } @struct_to_string__NSString(ptr %0, {} %ua.load85) + %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.91: ; preds = %match.arm.52 +dispatch.case.114: ; 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__SxBox(ptr %0, {} %ua.load89) + %callN = call { ptr, i64 } @struct_to_string__NSString(ptr %0, {} %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.case.92: ; preds = %match.arm.52 +dispatch.case.115: ; preds = %match.arm.51 %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr - %ua.load93 = load { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %ua.ptr92, align 8 - %callN = call { ptr, i64 } @struct_to_string____SxBoxState(ptr %0, { { ptr, ptr, ptr }, i32, i32, i32 } %ua.load93) + %ua.load93 = load {}, ptr %ua.ptr92, align 1 + %callN = call { ptr, i64 } @struct_to_string__SxBox(ptr %0, {} %ua.load93) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.78 + br label %dispatch.merge.102 -dispatch.merge.158: ; preds = %dispatch.case.161, %dispatch.case.160, %dispatch.default.159 +dispatch.case.116: ; preds = %match.arm.51 + %ua.raw95 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr96 = inttoptr i64 %ua.raw95 to ptr + %ua.load97 = load { { ptr, ptr, ptr }, i32, i32, i32 }, ptr %ua.ptr96, align 8 + %callN = call { ptr, i64 } @struct_to_string____SxBoxState(ptr %0, { { ptr, ptr, ptr }, i32, i32, i32 } %ua.load97) + 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.46 + br label %match.merge.45 -dispatch.default.159: ; preds = %match.arm.53 - store { ptr, i64 } { ptr @str.98, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.158 +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.160: ; preds = %match.arm.53 - %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw96) +dispatch.case.184: ; preds = %match.arm.52 + %ua.raw100 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw100) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.182 -dispatch.case.161: ; preds = %match.arm.53 - %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw98) +dispatch.case.185: ; preds = %match.arm.52 + %ua.raw102 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw102) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.158 + br label %dispatch.merge.182 -dispatch.merge.166: ; preds = %dispatch.case.169, %dispatch.case.168, %dispatch.default.167 +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.46 + br label %match.merge.45 -dispatch.default.167: ; preds = %match.arm.56 - store { ptr, i64 } { ptr @str.99, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.166 +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.168: ; preds = %match.arm.56 - %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr - %ua.load103 = load [1 x { i64, i64 }], ptr %ua.ptr102, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load103) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 - -dispatch.case.169: ; preds = %match.arm.56 +dispatch.case.192: ; preds = %match.arm.55 %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr - %ua.load107 = load [3 x { i64, i64 }], ptr %ua.ptr106, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load107) + %ua.load107 = load [4 x i64], ptr %ua.ptr106, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load107) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.190 -dispatch.merge.180: ; preds = %dispatch.case.183, %dispatch.case.182, %dispatch.default.181 +dispatch.case.193: ; preds = %match.arm.55 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr + %ua.load111 = load [1 x { i64, i64 }], ptr %ua.ptr110, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load111) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.190 + +dispatch.case.194: ; preds = %match.arm.55 + %ua.raw113 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr114 = inttoptr i64 %ua.raw113 to ptr + %ua.load115 = load [3 x { i64, i64 }], ptr %ua.ptr114, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load115) + 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.46 + br label %match.merge.45 -dispatch.default.181: ; preds = %match.arm.57 - store { ptr, i64 } { ptr @str.100, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.180 +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.182: ; preds = %match.arm.57 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr111 = inttoptr i64 %ua.raw110 to ptr - %ua.load112 = load { ptr, i64 }, ptr %ua.ptr111, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load112) +dispatch.case.212: ; preds = %match.arm.56 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr119 = inttoptr i64 %ua.raw118 to ptr + %ua.load120 = load { ptr, i64 }, ptr %ua.ptr119, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.183: ; preds = %match.arm.57 - %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr115 = inttoptr i64 %ua.raw114 to ptr - %ua.load116 = load { ptr, i64 }, ptr %ua.ptr115, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load116) +dispatch.case.213: ; 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__Any(ptr %0, { ptr, i64 } %ua.load124) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.merge.194: ; preds = %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %dispatch.case.213, %dispatch.case.212, %dispatch.case.211, %dispatch.case.210, %dispatch.case.209, %dispatch.case.208, %dispatch.case.207, %dispatch.case.206, %dispatch.case.205, %dispatch.case.204, %dispatch.case.203, %dispatch.case.202, %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.default.195 +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.46 + br label %match.merge.45 -dispatch.default.195: ; preds = %match.arm.58 - store { ptr, i64 } { ptr @str.101, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.194 +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.196: ; preds = %match.arm.58 - %ua.raw119 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw119 to ptr +dispatch.case.226: ; preds = %match.arm.57 + %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw127 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.194 + br label %dispatch.merge.224 -dispatch.case.197: ; preds = %match.arm.58 - %ua.raw121 = extractvalue { i64, i64 } %loadN, 1 - %iNp122 = inttoptr i64 %ua.raw121 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp122) +dispatch.case.227: ; preds = %match.arm.57 + %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 + %iNp130 = inttoptr i64 %ua.raw129 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp130) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.198: ; preds = %match.arm.58 - %ua.raw124 = extractvalue { i64, i64 } %loadN, 1 - %iNp125 = inttoptr i64 %ua.raw124 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp125) +dispatch.case.228: ; preds = %match.arm.57 + %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 + %iNp133 = inttoptr i64 %ua.raw132 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp133) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.199: ; preds = %match.arm.58 - %ua.raw127 = extractvalue { i64, i64 } %loadN, 1 - %iNp128 = inttoptr i64 %ua.raw127 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp128) +dispatch.case.229: ; preds = %match.arm.57 + %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 + %iNp136 = inttoptr i64 %ua.raw135 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp136) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.200: ; preds = %match.arm.58 - %ua.raw130 = extractvalue { i64, i64 } %loadN, 1 - %iNp131 = inttoptr i64 %ua.raw130 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp131) +dispatch.case.230: ; preds = %match.arm.57 + %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 + %iNp139 = inttoptr i64 %ua.raw138 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp139) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.201: ; preds = %match.arm.58 - %ua.raw133 = extractvalue { i64, i64 } %loadN, 1 - %iNp134 = inttoptr i64 %ua.raw133 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp134) +dispatch.case.231: ; preds = %match.arm.57 + %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 + %iNp142 = inttoptr i64 %ua.raw141 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp142) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.202: ; preds = %match.arm.58 - %ua.raw136 = extractvalue { i64, i64 } %loadN, 1 - %iNp137 = inttoptr i64 %ua.raw136 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp137) +dispatch.case.232: ; preds = %match.arm.57 + %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 + %iNp145 = inttoptr i64 %ua.raw144 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp145) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.203: ; preds = %match.arm.58 - %ua.raw139 = extractvalue { i64, i64 } %loadN, 1 - %iNp140 = inttoptr i64 %ua.raw139 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp140) +dispatch.case.233: ; preds = %match.arm.57 + %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 + %iNp148 = inttoptr i64 %ua.raw147 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp148) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.204: ; preds = %match.arm.58 - %ua.raw142 = extractvalue { i64, i64 } %loadN, 1 - %iNp143 = inttoptr i64 %ua.raw142 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_NSString(ptr %0, ptr %iNp143) +dispatch.case.234: ; preds = %match.arm.57 + %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 + %iNp151 = inttoptr i64 %ua.raw150 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_NSString(ptr %0, ptr %iNp151) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.205: ; preds = %match.arm.58 - %ua.raw145 = extractvalue { i64, i64 } %loadN, 1 - %iNp146 = inttoptr i64 %ua.raw145 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp146) +dispatch.case.235: ; preds = %match.arm.57 + %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 + %iNp154 = inttoptr i64 %ua.raw153 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp154) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.206: ; preds = %match.arm.58 - %ua.raw148 = extractvalue { i64, i64 } %loadN, 1 - %iNp149 = inttoptr i64 %ua.raw148 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp149) +dispatch.case.236: ; preds = %match.arm.57 + %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 + %iNp157 = inttoptr i64 %ua.raw156 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp157) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.207: ; preds = %match.arm.58 - %ua.raw151 = extractvalue { i64, i64 } %loadN, 1 - %iNp152 = inttoptr i64 %ua.raw151 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp152) +dispatch.case.237: ; preds = %match.arm.57 + %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 + %iNp160 = inttoptr i64 %ua.raw159 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp160) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.208: ; preds = %match.arm.58 - %ua.raw154 = extractvalue { i64, i64 } %loadN, 1 - %iNp155 = inttoptr i64 %ua.raw154 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SxBox(ptr %0, ptr %iNp155) +dispatch.case.238: ; preds = %match.arm.57 + %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 + %iNp163 = inttoptr i64 %ua.raw162 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SxBox(ptr %0, ptr %iNp163) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.209: ; preds = %match.arm.58 - %ua.raw157 = extractvalue { i64, i64 } %loadN, 1 - %iNp158 = inttoptr i64 %ua.raw157 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_SxBox(ptr %0, ptr %iNp158) +dispatch.case.239: ; preds = %match.arm.57 + %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 + %iNp166 = inttoptr i64 %ua.raw165 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_SxBox(ptr %0, ptr %iNp166) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.210: ; preds = %match.arm.58 - %ua.raw160 = extractvalue { i64, i64 } %loadN, 1 - %iNp161 = inttoptr i64 %ua.raw160 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp161) +dispatch.case.240: ; preds = %match.arm.57 + %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 + %iNp169 = inttoptr i64 %ua.raw168 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s32(ptr %0, ptr %iNp169) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.211: ; preds = %match.arm.58 - %ua.raw163 = extractvalue { i64, i64 } %loadN, 1 - %iNp164 = inttoptr i64 %ua.raw163 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp164) +dispatch.case.241: ; preds = %match.arm.57 + %ua.raw171 = extractvalue { i64, i64 } %loadN, 1 + %iNp172 = inttoptr i64 %ua.raw171 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp172) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.212: ; preds = %match.arm.58 - %ua.raw166 = extractvalue { i64, i64 } %loadN, 1 - %iNp167 = inttoptr i64 %ua.raw166 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp167) +dispatch.case.242: ; preds = %match.arm.57 + %ua.raw174 = extractvalue { i64, i64 } %loadN, 1 + %iNp175 = inttoptr i64 %ua.raw174 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp175) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.213: ; preds = %match.arm.58 - %ua.raw169 = extractvalue { i64, i64 } %loadN, 1 - %iNp170 = inttoptr i64 %ua.raw169 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp170) +dispatch.case.243: ; preds = %match.arm.57 + %ua.raw177 = extractvalue { i64, i64 } %loadN, 1 + %iNp178 = inttoptr i64 %ua.raw177 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp178) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.214: ; preds = %match.arm.58 - %ua.raw172 = extractvalue { i64, i64 } %loadN, 1 - %iNp173 = inttoptr i64 %ua.raw172 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp173) +dispatch.case.244: ; preds = %match.arm.57 + %ua.raw180 = extractvalue { i64, i64 } %loadN, 1 + %iNp181 = inttoptr i64 %ua.raw180 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp181) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.215: ; preds = %match.arm.58 - %ua.raw175 = extractvalue { i64, i64 } %loadN, 1 - %iNp176 = inttoptr i64 %ua.raw175 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp176) +dispatch.case.245: ; preds = %match.arm.57 + %ua.raw183 = extractvalue { i64, i64 } %loadN, 1 + %iNp184 = inttoptr i64 %ua.raw183 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp184) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.216: ; preds = %match.arm.58 - %ua.raw178 = extractvalue { i64, i64 } %loadN, 1 - %iNp179 = inttoptr i64 %ua.raw178 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp179) +dispatch.case.246: ; preds = %match.arm.57 + %ua.raw186 = extractvalue { i64, i64 } %loadN, 1 + %iNp187 = inttoptr i64 %ua.raw186 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp187) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 -dispatch.case.217: ; preds = %match.arm.58 - %ua.raw181 = extractvalue { i64, i64 } %loadN, 1 - %iNp182 = inttoptr i64 %ua.raw181 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp182) +dispatch.case.247: ; preds = %match.arm.57 + %ua.raw189 = extractvalue { i64, i64 } %loadN, 1 + %iNp190 = inttoptr i64 %ua.raw189 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp190) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.194 + br label %dispatch.merge.224 } ; Function Attrs: nounwind @@ -1618,7 +1828,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.102, i64 14 }, ptr %allocaN, 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 @@ -1649,7 +1859,7 @@ while.exit.6: ; preds = %while.hdr.4 %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.40, label %if.merge.41 + 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 @@ -1667,9 +1877,9 @@ if.else.8: ; preds = %while.body.5 %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.31, label %if.else.32 + br i1 %icmpN, label %if.then.30, label %if.else.31 -if.merge.9: ; preds = %if.merge.33, %if.merge.12 +if.merge.9: ; preds = %if.merge.32, %if.merge.12 br label %while.hdr.4 if.then.10: ; preds = %if.then.7 @@ -1707,14 +1917,14 @@ if.else.14: ; preds = %if.then.10 %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.28, label %if.else.29 + br i1 %icmpN, label %if.then.27, label %if.else.28 -if.merge.15: ; preds = %if.merge.30, %if.merge.17 +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.103, i64 36 }) + %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 @@ -1722,7 +1932,7 @@ if.then.16: ; preds = %if.then.13 %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.104, i64 2 }) + %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 @@ -1732,13 +1942,13 @@ if.then.16: ; preds = %if.then.13 %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.105, i64 4 }) + %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.106, i64 43 }) + %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 @@ -1746,7 +1956,7 @@ if.merge.17: ; preds = %if.then.16, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.107, i64 5 }) + %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 @@ -1758,83 +1968,7 @@ if.merge.17: ; preds = %if.then.16, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.15 -if.then.28: ; 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.108, 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.109, 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.110, 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.30 - -if.else.29: ; 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.30 - -if.merge.30: ; preds = %if.else.29, %if.then.28 - br label %if.merge.15 - -if.then.31: ; 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.34, label %if.else.35 - -if.else.32: ; 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.33 - -if.merge.33: ; preds = %if.merge.36, %if.else.32 - br label %if.merge.9 - -if.then.34: ; preds = %if.then.31 - %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.37, label %if.else.38 - -if.else.35: ; preds = %if.then.31 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.36 - -if.merge.36: ; preds = %if.merge.39, %if.else.35 - br label %if.merge.33 - -if.then.37: ; preds = %if.then.34 +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 @@ -1862,18 +1996,55 @@ if.then.37: ; preds = %if.then.34 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.39 + br label %if.merge.29 -if.else.38: ; preds = %if.then.34 +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.39 + br label %if.merge.29 -if.merge.39: ; preds = %if.else.38, %if.then.37 - br label %if.merge.36 +if.merge.29: ; preds = %if.else.28, %if.then.27 + br label %if.merge.15 -if.then.40: ; preds = %while.exit.6 +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 @@ -1886,6 +2057,45 @@ if.then.40: ; preds = %while.exit.6 %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 @@ -1894,11 +2104,11 @@ if.then.40: ; preds = %while.exit.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 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) + %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.41 + br label %if.merge.40 -if.merge.41: ; preds = %if.then.40, %while.exit.6 +if.merge.40: ; preds = %if.then.39, %while.exit.6 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -2134,19 +2344,19 @@ if.merge.3: ; preds = %or.merge.1 %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.42, label %if.merge.43 + br i1 %icmpN, label %if.then.41, label %if.merge.42 -if.then.42: ; preds = %if.merge.3 +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.43: ; preds = %if.merge.3 +if.merge.42: ; preds = %if.merge.3 %allocaN = alloca ptr, align 8 - %callN = call ptr @objc_getClass(ptr @str.117) + %callN = call ptr @objc_getClass(ptr @str.120) store ptr %callN, ptr %allocaN, align 8 %allocaN = alloca ptr, align 8 - %callN = call ptr @sel_registerName(ptr @str.118) + %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 @@ -2155,13 +2365,13 @@ if.merge.43: ; preds = %if.merge.3 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.44, label %if.merge.45 + br i1 %icmpN, label %if.then.43, label %if.merge.44 -if.then.44: ; preds = %if.merge.43 +if.then.43: ; preds = %if.merge.42 call void @print__ct_sa76620ef481aaa22__pack(ptr @__sx_default_context) ret i32 1 -if.merge.45: ; preds = %if.merge.43 +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 @@ -2187,14 +2397,14 @@ entry: define internal void @print__ct_s8b0209b1c8e86f29__pack(ptr %0) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.119, i64 30 }, ptr %alloca, 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.120, i64 0 }, ptr %allocaN, 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) @@ -2210,7 +2420,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.121, i64 30 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.124, i64 30 }) ret { ptr, i64 } %call } @@ -2218,7 +2428,7 @@ entry: 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.122, i64 30 }, ptr %alloca, 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 @@ -2234,7 +2444,7 @@ entry: %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.123, i64 0 }, ptr %allocaN, 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) @@ -2262,7 +2472,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.124, i64 30 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 30 }) ret { ptr, i64 } %call } @@ -2270,14 +2480,14 @@ entry: define internal void @print__ct_sa76620ef481aaa22__pack(ptr %0) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.125, i64 51 }, ptr %alloca, 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.126, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.129, i64 0 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 51) @@ -2293,7 +2503,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_2(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 51 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 51 }) ret { ptr, i64 } %call } @@ -2301,7 +2511,7 @@ entry: 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.128, i64 28 }, ptr %alloca, 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 @@ -2331,7 +2541,7 @@ entry: %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.129, i64 0 }, ptr %allocaN, 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) @@ -2383,7 +2593,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_3(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 28 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.133, i64 28 }) ret { ptr, i64 } %call } @@ -2392,35 +2602,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.131, i64 15 }, { ptr, i64 } { ptr @str.132, i64 1 }) + %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.93 + br label %while.hdr.117 -while.hdr.93: ; preds = %fv.merge, %entry +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.94, label %while.exit.95 + br i1 %icmp, label %while.body.118, label %while.exit.119 -while.body.94: ; preds = %while.hdr.93 +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.96, label %if.merge.97 + br i1 %icmpN, label %if.then.120, label %if.merge.121 -while.exit.95: ; preds = %while.hdr.93 +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.133, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, i64 1 }) ret { ptr, i64 } %callN -if.then.96: ; preds = %while.body.94 +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.134, i64 2 }) + %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.97 + br label %if.merge.121 -if.merge.97: ; preds = %if.then.96, %while.body.94 +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 @@ -2428,7 +2638,7 @@ if.merge.97: ; preds = %if.then.96, %while. %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.138, i64 2 }) + %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 @@ -2448,12 +2658,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.93 + br label %while.hdr.117 -fv.default: ; preds = %if.merge.97 +fv.default: ; preds = %if.merge.121 br label %fv.merge -fv.case: ; preds = %if.merge.97 +fv.case: ; preds = %if.merge.121 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2461,19 +2671,19 @@ fv.case: ; preds = %if.merge.97 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.97 +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.97 +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.97 +fv.case24: ; preds = %if.merge.121 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2487,43 +2697,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.139, i64 9 }, { ptr, i64 } { ptr @str.140, i64 1 }) + %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.98 + br label %while.hdr.122 -while.hdr.98: ; preds = %fv.merge, %entry +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.99, label %while.exit.100 + br i1 %icmp, label %while.body.123, label %while.exit.124 -while.body.99: ; preds = %while.hdr.98 +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.101, label %if.merge.102 + br i1 %icmpN, label %if.then.125, label %if.merge.126 -while.exit.100: ; preds = %while.hdr.98 +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.141, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 1 }) ret { ptr, i64 } %callN -if.then.101: ; preds = %while.body.99 +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.142, i64 2 }) + %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.102 + br label %if.merge.126 -if.merge.102: ; preds = %if.then.101, %while.body.99 +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.146, i64 0, i64 %loadN + %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.147, i64 2 }) + %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 @@ -2542,24 +2752,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.98 + br label %while.hdr.122 -fv.default: ; preds = %if.merge.102 +fv.default: ; preds = %if.merge.126 br label %fv.merge -fv.case: ; preds = %if.merge.102 +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.102 +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.102 +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 @@ -2571,43 +2781,43 @@ 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.148, i64 10 }, { ptr, i64 } { ptr @str.149, i64 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.103 + br label %while.hdr.127 -while.hdr.103: ; preds = %if.merge.107, %entry +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.104, label %while.exit.105 + br i1 %icmp, label %while.body.128, label %while.exit.129 -while.body.104: ; preds = %while.hdr.103 +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.106, label %if.merge.107 + br i1 %icmpN, label %if.then.130, label %if.merge.131 -while.exit.105: ; preds = %while.hdr.103 +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.150, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 1 }) ret { ptr, i64 } %callN -if.then.106: ; preds = %while.body.104 +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.151, i64 2 }) + %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.107 + br label %if.merge.131 -if.merge.107: ; preds = %if.then.106, %while.body.104 +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.152, i64 0, i64 %loadN + %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.153, i64 2 }) + %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 @@ -2618,7 +2828,7 @@ if.merge.107: ; preds = %if.then.106, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.103 + br label %while.hdr.127 } ; Function Attrs: nounwind @@ -2626,43 +2836,43 @@ 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.154, i64 3 }, { ptr, i64 } { ptr @str.155, i64 1 }) + %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.108 + br label %while.hdr.132 -while.hdr.108: ; preds = %fv.merge, %entry +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.109, label %while.exit.110 + br i1 %icmp, label %while.body.133, label %while.exit.134 -while.body.109: ; preds = %while.hdr.108 +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.111, label %if.merge.112 + br i1 %icmpN, label %if.then.135, label %if.merge.136 -while.exit.110: ; preds = %while.hdr.108 +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.156, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 1 }) ret { ptr, i64 } %callN -if.then.111: ; preds = %while.body.109 +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.157, i64 2 }) + %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.112 + br label %if.merge.136 -if.merge.112: ; preds = %if.then.111, %while.body.109 +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.159, i64 0, i64 %loadN + %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.160, i64 2 }) + %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 @@ -2679,12 +2889,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.108 + br label %while.hdr.132 -fv.default: ; preds = %if.merge.112 +fv.default: ; preds = %if.merge.136 br label %fv.merge -fv.case: ; preds = %if.merge.112 +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 @@ -2695,43 +2905,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.161, i64 10 }, { ptr, i64 } { ptr @str.162, i64 1 }) + %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.113 + br label %while.hdr.137 -while.hdr.113: ; preds = %fv.merge, %entry +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.114, label %while.exit.115 + br i1 %icmp, label %while.body.138, label %while.exit.139 -while.body.114: ; preds = %while.hdr.113 +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.116, label %if.merge.117 + br i1 %icmpN, label %if.then.140, label %if.merge.141 -while.exit.115: ; preds = %while.hdr.113 +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.163, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 1 }) ret { ptr, i64 } %callN -if.then.116: ; preds = %while.body.114 +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.164, i64 2 }) + %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.117 + br label %if.merge.141 -if.merge.117: ; preds = %if.then.116, %while.body.114 +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.167, i64 0, i64 %loadN + %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.168, i64 2 }) + %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 @@ -2749,18 +2959,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.113 + br label %while.hdr.137 -fv.default: ; preds = %if.merge.117 +fv.default: ; preds = %if.merge.141 br label %fv.merge -fv.case: ; preds = %if.merge.117 +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.117 +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 @@ -2771,43 +2981,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.169, i64 5 }, { ptr, i64 } { ptr @str.170, i64 1 }) + %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.118 + br label %while.hdr.142 -while.hdr.118: ; preds = %fv.merge, %entry +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.119, label %while.exit.120 + br i1 %icmp, label %while.body.143, label %while.exit.144 -while.body.119: ; preds = %while.hdr.118 +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.121, label %if.merge.122 + br i1 %icmpN, label %if.then.145, label %if.merge.146 -while.exit.120: ; preds = %while.hdr.118 +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.171, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 1 }) ret { ptr, i64 } %callN -if.then.121: ; preds = %while.body.119 +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.172, i64 2 }) + %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.122 + br label %if.merge.146 -if.merge.122: ; preds = %if.then.121, %while.body.119 +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.176, i64 0, i64 %loadN + %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.177, i64 2 }) + %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 @@ -2826,23 +3036,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.118 + br label %while.hdr.142 -fv.default: ; preds = %if.merge.122 +fv.default: ; preds = %if.merge.146 br label %fv.merge -fv.case: ; preds = %if.merge.122 +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.122 +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.122 +fv.case20: ; preds = %if.merge.146 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2856,43 +3066,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.178, i64 8 }, { ptr, i64 } { ptr @str.179, i64 1 }) + %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.123 + br label %while.hdr.147 -while.hdr.123: ; preds = %fv.merge, %entry +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.124, label %while.exit.125 + br i1 %icmp, label %while.body.148, label %while.exit.149 -while.body.124: ; preds = %while.hdr.123 +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.126, label %if.merge.127 + br i1 %icmpN, label %if.then.150, label %if.merge.151 -while.exit.125: ; preds = %while.hdr.123 +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.180, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.183, i64 1 }) ret { ptr, i64 } %callN -if.then.126: ; preds = %while.body.124 +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.181, i64 2 }) + %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.127 + br label %if.merge.151 -if.merge.127: ; preds = %if.then.126, %while.body.124 +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.185, i64 0, i64 %loadN + %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.186, i64 2 }) + %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 @@ -2911,23 +3121,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.123 + br label %while.hdr.147 -fv.default: ; preds = %if.merge.127 +fv.default: ; preds = %if.merge.151 br label %fv.merge -fv.case: ; preds = %if.merge.127 +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.127 +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.127 +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 @@ -2938,43 +3148,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.187, i64 17 }, { ptr, i64 } { ptr @str.188, i64 1 }) + %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.128 + br label %while.hdr.152 -while.hdr.128: ; preds = %fv.merge, %entry +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.129, label %while.exit.130 + br i1 %icmp, label %while.body.153, label %while.exit.154 -while.body.129: ; preds = %while.hdr.128 +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.131, label %if.merge.132 + br i1 %icmpN, label %if.then.155, label %if.merge.156 -while.exit.130: ; preds = %while.hdr.128 +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.189, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.192, i64 1 }) ret { ptr, i64 } %callN -if.then.131: ; preds = %while.body.129 +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.190, i64 2 }) + %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.132 + br label %if.merge.156 -if.merge.132: ; preds = %if.then.131, %while.body.129 +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.195, i64 0, i64 %loadN + %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.196, i64 2 }) + %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 @@ -2994,12 +3204,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.128 + br label %while.hdr.152 -fv.default: ; preds = %if.merge.132 +fv.default: ; preds = %if.merge.156 br label %fv.merge -fv.case: ; preds = %if.merge.132 +fv.case: ; preds = %if.merge.156 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3007,17 +3217,17 @@ fv.case: ; preds = %if.merge.132 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.132 +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.132 +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.132 +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 @@ -3028,43 +3238,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.197, i64 7 }, { ptr, i64 } { ptr @str.198, i64 1 }) + %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.133 + br label %while.hdr.157 -while.hdr.133: ; preds = %fv.merge, %entry +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.134, label %while.exit.135 + br i1 %icmp, label %while.body.158, label %while.exit.159 -while.body.134: ; preds = %while.hdr.133 +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.136, label %if.merge.137 + br i1 %icmpN, label %if.then.160, label %if.merge.161 -while.exit.135: ; preds = %while.hdr.133 +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.199, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 1 }) ret { ptr, i64 } %callN -if.then.136: ; preds = %while.body.134 +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.200, i64 2 }) + %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.137 + br label %if.merge.161 -if.merge.137: ; preds = %if.then.136, %while.body.134 +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.203, i64 0, i64 %loadN + %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.204, i64 2 }) + %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 @@ -3082,12 +3292,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.133 + br label %while.hdr.157 -fv.default: ; preds = %if.merge.137 +fv.default: ; preds = %if.merge.161 br label %fv.merge -fv.case: ; preds = %if.merge.137 +fv.case: ; preds = %if.merge.161 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3095,7 +3305,7 @@ fv.case: ; preds = %if.merge.137 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.137 +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 @@ -3107,43 +3317,43 @@ 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.205, i64 12 }, { ptr, i64 } { ptr @str.206, i64 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.138 + br label %while.hdr.162 -while.hdr.138: ; preds = %if.merge.142, %entry +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.139, label %while.exit.140 + br i1 %icmp, label %while.body.163, label %while.exit.164 -while.body.139: ; preds = %while.hdr.138 +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.141, label %if.merge.142 + br i1 %icmpN, label %if.then.165, label %if.merge.166 -while.exit.140: ; preds = %while.hdr.138 +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.207, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.210, i64 1 }) ret { ptr, i64 } %callN -if.then.141: ; preds = %while.body.139 +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.208, i64 2 }) + %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.142 + br label %if.merge.166 -if.merge.142: ; preds = %if.then.141, %while.body.139 +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.209, i64 0, i64 %loadN + %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.210, i64 2 }) + %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 @@ -3154,7 +3364,7 @@ if.merge.142: ; preds = %if.then.141, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.138 + br label %while.hdr.162 } ; Function Attrs: nounwind @@ -3162,43 +3372,43 @@ 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.211, i64 8 }, { ptr, i64 } { ptr @str.212, i64 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.143 + br label %while.hdr.167 -while.hdr.143: ; preds = %if.merge.147, %entry +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.144, label %while.exit.145 + br i1 %icmp, label %while.body.168, label %while.exit.169 -while.body.144: ; preds = %while.hdr.143 +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.146, label %if.merge.147 + br i1 %icmpN, label %if.then.170, label %if.merge.171 -while.exit.145: ; preds = %while.hdr.143 +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.213, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, i64 1 }) ret { ptr, i64 } %callN -if.then.146: ; preds = %while.body.144 +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.214, i64 2 }) + %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.147 + br label %if.merge.171 -if.merge.147: ; preds = %if.then.146, %while.body.144 +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.215, i64 0, i64 %loadN + %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.216, i64 2 }) + %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 @@ -3209,7 +3419,7 @@ if.merge.147: ; preds = %if.then.146, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.143 + br label %while.hdr.167 } ; Function Attrs: nounwind @@ -3217,43 +3427,43 @@ 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.217, i64 5 }, { ptr, i64 } { ptr @str.218, i64 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.148 + br label %while.hdr.172 -while.hdr.148: ; preds = %if.merge.152, %entry +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.149, label %while.exit.150 + br i1 %icmp, label %while.body.173, label %while.exit.174 -while.body.149: ; preds = %while.hdr.148 +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.151, label %if.merge.152 + br i1 %icmpN, label %if.then.175, label %if.merge.176 -while.exit.150: ; preds = %while.hdr.148 +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.219, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.222, i64 1 }) ret { ptr, i64 } %callN -if.then.151: ; preds = %while.body.149 +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.220, i64 2 }) + %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.152 + br label %if.merge.176 -if.merge.152: ; preds = %if.then.151, %while.body.149 +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.221, i64 0, i64 %loadN + %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.222, i64 2 }) + %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 @@ -3264,7 +3474,7 @@ if.merge.152: ; preds = %if.then.151, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.148 + br label %while.hdr.172 } ; Function Attrs: nounwind @@ -3272,43 +3482,43 @@ define internal { ptr, i64 } @struct_to_string____SxBoxState(ptr %0, { { ptr, pt entry: %alloca = alloca { { ptr, ptr, ptr }, i32, i32, i32 }, 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.223, i64 12 }, { ptr, i64 } { ptr @str.224, i64 1 }) + %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.153 + br label %while.hdr.177 -while.hdr.153: ; preds = %fv.merge, %entry +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.154, label %while.exit.155 + br i1 %icmp, label %while.body.178, label %while.exit.179 -while.body.154: ; preds = %while.hdr.153 +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.156, label %if.merge.157 + br i1 %icmpN, label %if.then.180, label %if.merge.181 -while.exit.155: ; preds = %while.hdr.153 +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.225, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.228, i64 1 }) ret { ptr, i64 } %callN -if.then.156: ; preds = %while.body.154 +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.226, i64 2 }) + %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.157 + br label %if.merge.181 -if.merge.157: ; preds = %if.then.156, %while.body.154 +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.231, i64 0, i64 %loadN + %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.232, i64 2 }) + %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 @@ -3328,12 +3538,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.153 + br label %while.hdr.177 -fv.default: ; preds = %if.merge.157 +fv.default: ; preds = %if.merge.181 br label %fv.merge -fv.case: ; preds = %if.merge.157 +fv.case: ; preds = %if.merge.181 %fv.field = extractvalue { { ptr, ptr, ptr }, i32, i32, i32 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -3341,19 +3551,19 @@ fv.case: ; preds = %if.merge.157 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.157 +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.157 +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.157 +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 @@ -3369,9 +3579,9 @@ entry: %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.241, i64 0, i64 %loadN + %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.233, i64 1 }, { ptr, i64 } %fn.load) + %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 @@ -3385,18 +3595,18 @@ entry: %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.162, label %if.merge.163 + br i1 %icmp, label %if.then.186, label %if.merge.187 -if.then.162: ; preds = %entry +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.243, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.242, i64 1 }, { ptr, i64 } %callN) + %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.163 + br label %if.merge.187 -if.merge.163: ; preds = %if.then.162, %entry +if.merge.187: ; preds = %if.then.186, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3410,9 +3620,9 @@ entry: %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.250, i64 0, i64 %loadN + %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.244, i64 1 }, { ptr, i64 } %fn.load) + %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 @@ -3426,55 +3636,105 @@ entry: %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.164, label %if.merge.165 + br i1 %icmp, label %if.then.188, label %if.merge.189 -if.then.164: ; preds = %entry +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.252, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.251, i64 1 }, { ptr, i64 } %callN) + %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.165 + br label %if.merge.189 -if.merge.165: ; preds = %if.then.164, %entry +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 + 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 + %ig.tmp = alloca [4 x i64], 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.253, i64 1 }, ptr %allocaN, 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.170 + br label %while.hdr.200 -while.hdr.170: ; preds = %if.merge.174, %entry +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.171, label %while.exit.172 + br i1 %icmp, label %while.body.201, label %while.exit.202 -while.body.171: ; preds = %while.hdr.170 +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.173, label %if.merge.174 + br i1 %icmpN, label %if.then.203, label %if.merge.204 -while.exit.172: ; preds = %while.hdr.170 +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.254, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.260, i64 1 }) ret { ptr, i64 } %call -if.then.173: ; preds = %while.body.171 +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.255, i64 2 }) + %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.174 + br label %if.merge.204 -if.merge.174: ; preds = %if.then.173, %while.body.171 +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 @@ -3492,7 +3752,7 @@ if.merge.174: ; preds = %if.then.173, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.170 + br label %while.hdr.200 } ; Function Attrs: nounwind @@ -3501,33 +3761,33 @@ entry: %alloca = alloca [3 x { 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.256, i64 1 }, ptr %allocaN, 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.175 + br label %while.hdr.205 -while.hdr.175: ; preds = %if.merge.179, %entry +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.176, label %while.exit.177 + br i1 %icmp, label %while.body.206, label %while.exit.207 -while.body.176: ; preds = %while.hdr.175 +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.178, label %if.merge.179 + br i1 %icmpN, label %if.then.208, label %if.merge.209 -while.exit.177: ; preds = %while.hdr.175 +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.257, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.263, i64 1 }) ret { ptr, i64 } %call -if.then.178: ; preds = %while.body.176 +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.258, i64 2 }) + %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.179 + br label %if.merge.209 -if.merge.179: ; preds = %if.then.178, %while.body.176 +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 @@ -3545,7 +3805,7 @@ if.merge.179: ; preds = %if.then.178, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.175 + br label %while.hdr.205 } ; Function Attrs: nounwind @@ -3554,35 +3814,35 @@ 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.259, i64 1 }, ptr %allocaN, 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.184 + br label %while.hdr.214 -while.hdr.184: ; preds = %if.merge.188, %entry +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.185, label %while.exit.186 + br i1 %icmp, label %while.body.215, label %while.exit.216 -while.body.185: ; preds = %while.hdr.184 +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.187, label %if.merge.188 + br i1 %icmpN, label %if.then.217, label %if.merge.218 -while.exit.186: ; preds = %while.hdr.184 +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.260, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.266, i64 1 }) ret { ptr, i64 } %call -if.then.187: ; preds = %while.body.185 +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.261, i64 2 }) + %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.188 + br label %if.merge.218 -if.merge.188: ; preds = %if.then.187, %while.body.185 +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 @@ -3599,7 +3859,7 @@ if.merge.188: ; preds = %if.then.187, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.184 + br label %while.hdr.214 } ; Function Attrs: nounwind @@ -3608,35 +3868,35 @@ 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.262, i64 1 }, ptr %allocaN, 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.189 + br label %while.hdr.219 -while.hdr.189: ; preds = %if.merge.193, %entry +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.190, label %while.exit.191 + br i1 %icmp, label %while.body.220, label %while.exit.221 -while.body.190: ; preds = %while.hdr.189 +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.192, label %if.merge.193 + br i1 %icmpN, label %if.then.222, label %if.merge.223 -while.exit.191: ; preds = %while.hdr.189 +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.263, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.269, i64 1 }) ret { ptr, i64 } %call -if.then.192: ; preds = %while.body.190 +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.264, i64 2 }) + %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.193 + br label %if.merge.223 -if.merge.193: ; preds = %if.then.192, %while.body.190 +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 @@ -3653,95 +3913,11 @@ if.merge.193: ; preds = %if.then.192, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.189 + 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.218, label %if.else.219 - -if.then.218: ; preds = %entry - br label %if.merge.220 - -if.else.219: ; 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.267, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.220 - -if.merge.220: ; preds = %if.else.219, %if.then.218 - %bp = phi { ptr, i64 } [ { ptr @str.265, i64 4 }, %if.then.218 ], [ %callN, %if.else.219 ] - 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.242, label %if.else.243 - -if.then.242: ; preds = %entry - br label %if.merge.244 - -if.else.243: ; 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.270, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.269, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.244 - -if.merge.244: ; preds = %if.else.243, %if.then.242 - %bp = phi { ptr, i64 } [ { ptr @str.268, i64 4 }, %if.then.242 ], [ %callN, %if.else.243 ] - 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.245, label %if.else.246 - -if.then.245: ; preds = %entry - br label %if.merge.247 - -if.else.246: ; 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 4 }, { ptr, i64 } %callN) - br label %if.merge.247 - -if.merge.247: ; preds = %if.else.246, %if.then.245 - %bp = phi { ptr, i64 } [ { ptr @str.271, i64 4 }, %if.then.245 ], [ %callN, %if.else.246 ] - 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 @@ -3759,12 +3935,96 @@ if.then.248: ; preds = %entry 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.276, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.275, i64 11 }, { ptr, i64 } %callN) + %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.274, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] + %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 } @@ -3779,20 +4039,20 @@ entry: 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.251, label %if.else.252 + br i1 %icmp, label %if.then.273, label %if.else.274 -if.then.251: ; preds = %entry - br label %if.merge.253 +if.then.273: ; preds = %entry + br label %if.merge.275 -if.else.252: ; preds = %entry +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.279, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.278, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.253 + %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.253: ; preds = %if.else.252, %if.then.251 - %bp = phi { ptr, i64 } [ { ptr @str.277, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] +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 } @@ -3806,20 +4066,20 @@ entry: 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.254, label %if.else.255 + br i1 %icmp, label %if.then.276, label %if.else.277 -if.then.254: ; preds = %entry - br label %if.merge.256 +if.then.276: ; preds = %entry + br label %if.merge.278 -if.else.255: ; preds = %entry +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.282, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.281, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.256 + %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.256: ; preds = %if.else.255, %if.then.254 - %bp = phi { ptr, i64 } [ { ptr @str.280, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] +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 } @@ -3834,20 +4094,20 @@ entry: 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.257, label %if.else.258 + br i1 %icmp, label %if.then.279, label %if.else.280 -if.then.257: ; preds = %entry - br label %if.merge.259 +if.then.279: ; preds = %entry + br label %if.merge.281 -if.else.258: ; preds = %entry +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.285, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.284, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.259 + %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.259: ; preds = %if.else.258, %if.then.257 - %bp = phi { ptr, i64 } [ { ptr @str.283, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] +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 } @@ -3862,20 +4122,20 @@ entry: 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.260, label %if.else.261 + br i1 %icmp, label %if.then.282, label %if.else.283 -if.then.260: ; preds = %entry - br label %if.merge.262 +if.then.282: ; preds = %entry + br label %if.merge.284 -if.else.261: ; preds = %entry +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.288, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.287, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.262 + %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.262: ; preds = %if.else.261, %if.then.260 - %bp = phi { ptr, i64 } [ { ptr @str.286, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] +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 } @@ -3890,20 +4150,20 @@ entry: 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.263, label %if.else.264 + br i1 %icmp, label %if.then.285, label %if.else.286 -if.then.263: ; preds = %entry - br label %if.merge.265 +if.then.285: ; preds = %entry + br label %if.merge.287 -if.else.264: ; preds = %entry +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.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.265 + %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.265: ; preds = %if.else.264, %if.then.263 - %bp = phi { ptr, i64 } [ { ptr @str.289, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] +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 } @@ -3918,20 +4178,20 @@ entry: 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.266, label %if.else.267 + br i1 %icmp, label %if.then.288, label %if.else.289 -if.then.266: ; preds = %entry - br label %if.merge.268 +if.then.288: ; preds = %entry + br label %if.merge.290 -if.else.267: ; preds = %entry +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.294, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.293, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.268 + %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.268: ; preds = %if.else.267, %if.then.266 - %bp = phi { ptr, i64 } [ { ptr @str.292, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] +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 } @@ -3946,20 +4206,20 @@ entry: 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.269, label %if.else.270 + br i1 %icmp, label %if.then.291, label %if.else.292 -if.then.269: ; preds = %entry - br label %if.merge.271 +if.then.291: ; preds = %entry + br label %if.merge.293 -if.else.270: ; preds = %entry +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.297, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.296, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.271 + %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.271: ; preds = %if.else.270, %if.then.269 - %bp = phi { ptr, i64 } [ { ptr @str.295, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] +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 } @@ -3974,20 +4234,20 @@ entry: 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.272, label %if.else.273 + br i1 %icmp, label %if.then.294, label %if.else.295 -if.then.272: ; preds = %entry - br label %if.merge.274 +if.then.294: ; preds = %entry + br label %if.merge.296 -if.else.273: ; preds = %entry +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.300, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.299, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.274 + %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.274: ; preds = %if.else.273, %if.then.272 - %bp = phi { ptr, i64 } [ { ptr @str.298, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] +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 } @@ -4002,20 +4262,20 @@ entry: 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.275, label %if.else.276 + br i1 %icmp, label %if.then.297, label %if.else.298 -if.then.275: ; preds = %entry - br label %if.merge.277 +if.then.297: ; preds = %entry + br label %if.merge.299 -if.else.276: ; preds = %entry +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.303, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.302, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.277 + %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.277: ; preds = %if.else.276, %if.then.275 - %bp = phi { ptr, i64 } [ { ptr @str.301, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] +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 } @@ -4030,20 +4290,20 @@ entry: 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.278, label %if.else.279 + br i1 %icmp, label %if.then.300, label %if.else.301 -if.then.278: ; preds = %entry - br label %if.merge.280 +if.then.300: ; preds = %entry + br label %if.merge.302 -if.else.279: ; preds = %entry +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.306, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.305, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.280 + %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.280: ; preds = %if.else.279, %if.then.278 - %bp = phi { ptr, i64 } [ { ptr @str.304, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] +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 } @@ -4058,20 +4318,20 @@ entry: 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.281, label %if.else.282 + br i1 %icmp, label %if.then.303, label %if.else.304 -if.then.281: ; preds = %entry - br label %if.merge.283 +if.then.303: ; preds = %entry + br label %if.merge.305 -if.else.282: ; preds = %entry +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.309, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.283 + %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.283: ; preds = %if.else.282, %if.then.281 - %bp = phi { ptr, i64 } [ { ptr @str.307, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] +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 } @@ -4086,20 +4346,20 @@ entry: 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.284, label %if.else.285 + br i1 %icmp, label %if.then.306, label %if.else.307 -if.then.284: ; preds = %entry - br label %if.merge.286 +if.then.306: ; preds = %entry + br label %if.merge.308 -if.else.285: ; preds = %entry +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.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.286 + %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.286: ; preds = %if.else.285, %if.then.284 - %bp = phi { ptr, i64 } [ { ptr @str.310, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] +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 } @@ -4114,20 +4374,20 @@ entry: 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.287, label %if.else.288 + br i1 %icmp, label %if.then.309, label %if.else.310 -if.then.287: ; preds = %entry - br label %if.merge.289 +if.then.309: ; preds = %entry + br label %if.merge.311 -if.else.288: ; preds = %entry +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.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.289 + %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.289: ; preds = %if.else.288, %if.then.287 - %bp = phi { ptr, i64 } [ { ptr @str.313, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] +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 } @@ -4142,20 +4402,20 @@ entry: 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.290, label %if.else.291 + br i1 %icmp, label %if.then.312, label %if.else.313 -if.then.290: ; preds = %entry - br label %if.merge.292 +if.then.312: ; preds = %entry + br label %if.merge.314 -if.else.291: ; preds = %entry +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.318, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.317, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.292 + %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.292: ; preds = %if.else.291, %if.then.290 - %bp = phi { ptr, i64 } [ { ptr @str.316, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] +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 } @@ -4170,20 +4430,20 @@ entry: 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.293, label %if.else.294 + br i1 %icmp, label %if.then.315, label %if.else.316 -if.then.293: ; preds = %entry - br label %if.merge.295 +if.then.315: ; preds = %entry + br label %if.merge.317 -if.else.294: ; preds = %entry +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.321, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.320, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.295 + %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.295: ; preds = %if.else.294, %if.then.293 - %bp = phi { ptr, i64 } [ { ptr @str.319, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] +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 } @@ -4198,20 +4458,20 @@ entry: 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.296, label %if.else.297 + br i1 %icmp, label %if.then.318, label %if.else.319 -if.then.296: ; preds = %entry - br label %if.merge.298 +if.then.318: ; preds = %entry + br label %if.merge.320 -if.else.297: ; preds = %entry +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.324, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.323, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.298 + %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.298: ; preds = %if.else.297, %if.then.296 - %bp = phi { ptr, i64 } [ { ptr @str.322, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] +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 } @@ -4226,20 +4486,20 @@ entry: 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.299, label %if.else.300 + br i1 %icmp, label %if.then.321, label %if.else.322 -if.then.299: ; preds = %entry - br label %if.merge.301 +if.then.321: ; preds = %entry + br label %if.merge.323 -if.else.300: ; preds = %entry +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.327, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.326, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.301 + %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.301: ; preds = %if.else.300, %if.then.299 - %bp = phi { ptr, i64 } [ { ptr @str.325, i64 4 }, %if.then.299 ], [ %callN, %if.else.300 ] +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 } @@ -4254,20 +4514,20 @@ entry: 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.302, label %if.else.303 + br i1 %icmp, label %if.then.324, label %if.else.325 -if.then.302: ; preds = %entry - br label %if.merge.304 +if.then.324: ; preds = %entry + br label %if.merge.326 -if.else.303: ; preds = %entry +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.330, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.329, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.304 + %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.304: ; preds = %if.else.303, %if.then.302 - %bp = phi { ptr, i64 } [ { ptr @str.328, i64 4 }, %if.then.302 ], [ %callN, %if.else.303 ] +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 } @@ -4369,15 +4629,15 @@ 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_.331) + %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_.332) + %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_.333) + %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_.334) + %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_.335) + %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.341) store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_area, align 8 ret void } @@ -4389,25 +4649,25 @@ 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_.336, i64 0) + %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_.337) + %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_.338) - %2 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_setWidth_imp, ptr @OBJC_METH_VAR_TYPE_.339) - %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.340) - %3 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_height_imp, ptr @OBJC_METH_VAR_TYPE_.341) - %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.342) - %4 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_setHeight_imp, ptr @OBJC_METH_VAR_TYPE_.343) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.344) - %5 = call i1 @class_addMethod(ptr %cls, ptr %selN, ptr @__SxBox_area_imp, ptr @OBJC_METH_VAR_TYPE_.345) + %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_.346) - %6 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxBox_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.347) - %sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.348) - %7 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxBox_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.349) + %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 @@ -4415,7 +4675,7 @@ entry: define internal void @__sx_objc_class_init() { entry: - %cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_.350) + %cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_.356) store ptr %cls, ptr @OBJC_CLASSLIST_REFERENCES_SxBox, align 8 ret void } diff --git a/examples/expected/1329-ffi-objc-call-03-selector-sharing.ir b/examples/expected/1329-ffi-objc-call-03-selector-sharing.ir index 1a5385c..0bd7302 100644 --- a/examples/expected/1329-ffi-objc-call-03-selector-sharing.ir +++ b/examples/expected/1329-ffi-objc-call-03-selector-sharing.ir @@ -165,38 +165,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -209,34 +214,32 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -246,6 +249,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -359,7 +365,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -377,9 +383,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -417,9 +423,9 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 @@ -468,7 +474,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -496,35 +502,35 @@ if.then.24: ; preds = %if.else.10 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.26 + br label %if.merge.25 -if.else.25: ; preds = %if.else.10 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 + br label %if.merge.25 -if.merge.26: ; preds = %if.else.25, %if.then.24 +if.merge.25: ; preds = %if.else.24, %if.then.23 br label %if.merge.11 -if.then.27: ; preds = %if.else.4 +if.then.26: ; preds = %if.else.4 %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.30, label %if.else.31 + br i1 %icmpN, label %if.then.29, label %if.else.30 -if.else.28: ; preds = %if.else.4 +if.else.27: ; preds = %if.else.4 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.29 + br label %if.merge.28 -if.merge.29: ; preds = %if.merge.32, %if.else.28 +if.merge.28: ; preds = %if.merge.31, %if.else.27 br label %if.merge.5 -if.then.30: ; preds = %if.then.27 +if.then.29: ; preds = %if.then.26 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -533,18 +539,18 @@ if.then.30: ; preds = %if.then.27 %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.33, label %if.else.34 + br i1 %icmpN, label %if.then.32, label %if.else.33 -if.else.31: ; preds = %if.then.27 +if.else.30: ; preds = %if.then.26 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.32 + br label %if.merge.31 -if.merge.32: ; preds = %if.merge.35, %if.else.31 - br label %if.merge.29 +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 -if.then.33: ; preds = %if.then.30 +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -572,18 +578,18 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.34 -if.else.34: ; preds = %if.then.30 +if.else.33: ; preds = %if.then.29 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 -if.then.36: ; preds = %while.exit.2 +if.then.35: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -606,9 +612,9 @@ if.then.36: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1332-ffi-objc-call-06-sret-return.ir b/examples/expected/1332-ffi-objc-call-06-sret-return.ir index 9420bf0..f22d9e6 100644 --- a/examples/expected/1332-ffi-objc-call-06-sret-return.ir +++ b/examples/expected/1332-ffi-objc-call-06-sret-return.ir @@ -5,246 +5,247 @@ @__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_SELECTOR_REFERENCES_tripleValue = internal global ptr null @str = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.1 = private unnamed_addr constant [5 x i8] c"true\00", align 1 -@str.2 = private unnamed_addr constant [6 x i8] c"false\00", align 1 -@str.3 = private unnamed_addr constant [2 x i8] c"0\00", align 1 -@str.4 = private unnamed_addr constant [4 x i8] c"\00", align 1 -@str.5 = private unnamed_addr constant [1 x i8] zeroinitializer, 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 [86 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] @tn.str = private constant [13 x i8] c"\00" -@tn.str.6 = private constant [5 x i8] c"bool\00" -@tn.str.7 = private constant [3 x i8] c"s8\00" -@tn.str.8 = private constant [4 x i8] c"s16\00" -@tn.str.9 = private constant [4 x i8] c"s32\00" -@tn.str.10 = private constant [4 x i8] c"s64\00" -@tn.str.11 = private constant [3 x i8] c"u8\00" -@tn.str.12 = private constant [4 x i8] c"u16\00" -@tn.str.13 = private constant [4 x i8] c"u32\00" -@tn.str.14 = private constant [4 x i8] c"u64\00" -@tn.str.15 = private constant [4 x i8] c"f32\00" -@tn.str.16 = private constant [4 x i8] c"f64\00" -@tn.str.17 = private constant [7 x i8] c"string\00" -@tn.str.18 = private constant [4 x i8] c"Any\00" -@tn.str.19 = private constant [9 x i8] c"noreturn\00" -@tn.str.20 = private constant [6 x i8] c"isize\00" -@tn.str.21 = private constant [6 x i8] c"usize\00" -@tn.str.22 = private constant [5 x i8] c"void\00" -@tn.str.23 = private constant [6 x i8] c"*void\00" -@tn.str.24 = private constant [16 x i8] c"Source_Location\00" -@tn.str.25 = private constant [10 x i8] c"Allocator\00" -@tn.str.26 = private constant [11 x i8] c"CAllocator\00" -@tn.str.27 = private constant [12 x i8] c"*CAllocator\00" -@tn.str.28 = private constant [4 x i8] c"GPA\00" -@tn.str.29 = private constant [5 x i8] c"*GPA\00" -@tn.str.30 = private constant [11 x i8] c"ArenaChunk\00" -@tn.str.31 = private constant [12 x i8] c"*ArenaChunk\00" -@tn.str.32 = private constant [6 x i8] c"Arena\00" -@tn.str.33 = private constant [7 x i8] c"*Arena\00" -@tn.str.34 = private constant [6 x i8] c"[*]u8\00" -@tn.str.35 = private constant [9 x i8] c"BufAlloc\00" -@tn.str.36 = private constant [10 x i8] c"*BufAlloc\00" -@tn.str.37 = private constant [18 x i8] c"TrackingAllocator\00" -@tn.str.38 = private constant [19 x i8] c"*TrackingAllocator\00" -@tn.str.39 = private constant [8 x i8] c"Context\00" -@tn.str.40 = private constant [9 x i8] c"[]string\00" -@tn.str.41 = private constant [16 x i8] c"OperatingSystem\00" -@tn.str.42 = private constant [13 x i8] c"Architecture\00" -@tn.str.43 = private constant [13 x i8] c"BuildOptions\00" -@tn.str.44 = private constant [11 x i8] c"() -> bool\00" -@tn.str.45 = private constant [9 x i8] c"NSString\00" -@tn.str.46 = private constant [10 x i8] c"*NSString\00" -@tn.str.47 = private constant [10 x i8] c"Closure()\00" -@tn.str.48 = private constant [7 x i8] c"Triple\00" -@tn.str.49 = private constant [13 x i8] c"**CAllocator\00" -@tn.str.50 = private constant [5 x i8] c"*s64\00" -@tn.str.51 = private constant [7 x i8] c"**void\00" -@tn.str.52 = private constant [6 x i8] c"*bool\00" -@tn.str.53 = private constant [8 x i8] c"*string\00" -@tn.str.54 = private constant [6 x i8] c"[]Any\00" -@tn.str.55 = private constant [5 x i8] c"*Any\00" -@tn.str.56 = private constant [7 x i8] c"[1]Any\00" -@tn.str.57 = private constant [8 x i8] c"*[1]Any\00" -@tn.str.58 = private constant [7 x i8] c"*[]Any\00" -@tn.str.59 = private constant [4 x i8] c"*u8\00" -@tn.str.60 = private constant [8 x i8] c"*Triple\00" -@tn.str.61 = private constant [7 x i8] c"[3]Any\00" -@tn.str.62 = private constant [8 x i8] c"*[3]Any\00" -@tn.str.63 = private constant [5 x i8] c"*f64\00" -@tn.str.64 = private constant [17 x i8] c"*Source_Location\00" -@tn.str.65 = private constant [11 x i8] c"*Allocator\00" -@tn.str.66 = private constant [9 x i8] c"*Context\00" -@tn.str.67 = private constant [14 x i8] c"*BuildOptions\00" -@tn.str.68 = private constant [17 x i8] c"*OperatingSystem\00" -@tn.str.69 = private constant [14 x i8] c"*Architecture\00" -@tn.str.70 = private constant [10 x i8] c"*[]string\00" -@tn.str.71 = private constant [6 x i8] c"**GPA\00" -@tn.str.72 = private constant [13 x i8] c"**ArenaChunk\00" -@tn.str.73 = private constant [8 x i8] c"**Arena\00" -@tn.str.74 = private constant [7 x i8] c"*[*]u8\00" -@tn.str.75 = private constant [11 x i8] c"**BufAlloc\00" -@tn.str.76 = private constant [20 x i8] c"**TrackingAllocator\00" -@tn.str.77 = private constant [11 x i8] c"**NSString\00" -@tn.str.78 = private constant [14 x i8] c"***CAllocator\00" -@tn.str.79 = private constant [6 x i8] c"**s64\00" -@tn.str.80 = private constant [8 x i8] c"***void\00" -@tn.str.81 = private constant [7 x i8] c"**bool\00" -@tn.str.82 = private constant [9 x i8] c"**string\00" -@tn.str.83 = private constant [6 x i8] c"**Any\00" -@tn.str.84 = private constant [9 x i8] c"**[1]Any\00" -@tn.str.85 = private constant [8 x i8] c"**[]Any\00" -@tn.str.86 = private constant [5 x i8] c"**u8\00" -@tn.str.87 = private constant [9 x i8] c"**Triple\00" -@tn.str.88 = private constant [9 x i8] c"**[3]Any\00" -@__sx_type_names = private constant [84 x { ptr, i64 }] [{ ptr, i64 } { ptr @tn.str, i64 12 }, { ptr, i64 } { ptr @tn.str.6, i64 4 }, { ptr, i64 } { ptr @tn.str.7, i64 2 }, { ptr, i64 } { ptr @tn.str.8, i64 3 }, { ptr, i64 } { ptr @tn.str.9, i64 3 }, { ptr, i64 } { ptr @tn.str.10, i64 3 }, { ptr, i64 } { ptr @tn.str.11, i64 2 }, { ptr, i64 } { ptr @tn.str.12, i64 3 }, { 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 6 }, { ptr, i64 } { ptr @tn.str.18, i64 3 }, { ptr, i64 } { ptr @tn.str.19, i64 8 }, { ptr, i64 } { ptr @tn.str.20, i64 5 }, { ptr, i64 } { ptr @tn.str.21, i64 5 }, { ptr, i64 } { ptr @tn.str.22, i64 4 }, { ptr, i64 } { ptr @tn.str.23, i64 5 }, { ptr, i64 } { ptr @tn.str.24, i64 15 }, { ptr, i64 } { ptr @tn.str.25, i64 9 }, { ptr, i64 } { ptr @tn.str.26, i64 10 }, { ptr, i64 } { ptr @tn.str.27, i64 11 }, { ptr, i64 } { ptr @tn.str.28, i64 3 }, { ptr, i64 } { ptr @tn.str.29, i64 4 }, { ptr, i64 } { ptr @tn.str.30, i64 10 }, { ptr, i64 } { ptr @tn.str.31, i64 11 }, { ptr, i64 } { ptr @tn.str.32, i64 5 }, { ptr, i64 } { ptr @tn.str.33, i64 6 }, { ptr, i64 } { ptr @tn.str.34, i64 5 }, { ptr, i64 } { ptr @tn.str.35, i64 8 }, { ptr, i64 } { ptr @tn.str.36, i64 9 }, { ptr, i64 } { ptr @tn.str.37, i64 17 }, { ptr, i64 } { ptr @tn.str.38, i64 18 }, { ptr, i64 } { ptr @tn.str.39, i64 7 }, { ptr, i64 } { ptr @tn.str.40, i64 8 }, { ptr, i64 } { ptr @tn.str.41, i64 15 }, { ptr, i64 } { ptr @tn.str.42, i64 12 }, { ptr, i64 } { ptr @tn.str.43, i64 12 }, { ptr, i64 } { ptr @tn.str.44, i64 10 }, { ptr, i64 } { ptr @tn.str.45, i64 8 }, { ptr, i64 } { ptr @tn.str.46, i64 9 }, { ptr, i64 } { ptr @tn.str.47, i64 9 }, { ptr, i64 } { ptr @tn.str.48, i64 6 }, { ptr, i64 } { ptr @tn.str.49, i64 12 }, { ptr, i64 } { ptr @tn.str.50, i64 4 }, { ptr, i64 } { ptr @tn.str.51, i64 6 }, { ptr, i64 } { ptr @tn.str.52, i64 5 }, { ptr, i64 } { ptr @tn.str.53, i64 7 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 4 }, { ptr, i64 } { ptr @tn.str.56, i64 6 }, { ptr, i64 } { ptr @tn.str.57, i64 7 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 3 }, { ptr, i64 } { ptr @tn.str.60, i64 7 }, { ptr, i64 } { ptr @tn.str.61, i64 6 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 4 }, { ptr, i64 } { ptr @tn.str.64, i64 16 }, { ptr, i64 } { ptr @tn.str.65, i64 10 }, { ptr, i64 } { ptr @tn.str.66, i64 8 }, { ptr, i64 } { ptr @tn.str.67, i64 13 }, { ptr, i64 } { ptr @tn.str.68, i64 16 }, { ptr, i64 } { ptr @tn.str.69, i64 13 }, { ptr, i64 } { ptr @tn.str.70, i64 9 }, { ptr, i64 } { ptr @tn.str.71, i64 5 }, { ptr, i64 } { ptr @tn.str.72, i64 12 }, { ptr, i64 } { ptr @tn.str.73, i64 7 }, { ptr, i64 } { ptr @tn.str.74, i64 6 }, { ptr, i64 } { ptr @tn.str.75, i64 10 }, { ptr, i64 } { ptr @tn.str.76, i64 19 }, { ptr, i64 } { ptr @tn.str.77, i64 10 }, { ptr, i64 } { ptr @tn.str.78, i64 13 }, { ptr, i64 } { ptr @tn.str.79, i64 5 }, { ptr, i64 } { ptr @tn.str.80, i64 7 }, { ptr, i64 } { ptr @tn.str.81, i64 6 }, { ptr, i64 } { ptr @tn.str.82, i64 8 }, { ptr, i64 } { ptr @tn.str.83, i64 5 }, { ptr, i64 } { ptr @tn.str.84, i64 8 }, { ptr, i64 } { ptr @tn.str.85, i64 7 }, { ptr, i64 } { ptr @tn.str.86, i64 4 }, { ptr, i64 } { ptr @tn.str.87, i64 8 }, { ptr, i64 } { ptr @tn.str.88, i64 8 }] -@str.89 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.90 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.91 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@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 [7 x i8] c"Triple\00" +@tn.str.51 = private constant [13 x i8] c"**CAllocator\00" +@tn.str.52 = private constant [5 x i8] c"*s64\00" +@tn.str.53 = private constant [7 x i8] c"**void\00" +@tn.str.54 = private constant [6 x i8] c"*bool\00" +@tn.str.55 = private constant [8 x i8] c"*string\00" +@tn.str.56 = private constant [6 x i8] c"[]Any\00" +@tn.str.57 = private constant [5 x i8] c"*Any\00" +@tn.str.58 = private constant [7 x i8] c"[1]Any\00" +@tn.str.59 = private constant [8 x i8] c"*[1]Any\00" +@tn.str.60 = private constant [7 x i8] c"*[]Any\00" +@tn.str.61 = private constant [4 x i8] c"*u8\00" +@tn.str.62 = private constant [8 x i8] c"*Triple\00" +@tn.str.63 = private constant [7 x i8] c"[3]Any\00" +@tn.str.64 = private constant [8 x i8] c"*[3]Any\00" +@tn.str.65 = private constant [8 x i8] c"*[4]s64\00" +@tn.str.66 = private constant [5 x i8] c"*f64\00" +@tn.str.67 = private constant [17 x i8] c"*Source_Location\00" +@tn.str.68 = private constant [11 x i8] c"*Allocator\00" +@tn.str.69 = private constant [9 x i8] c"*Context\00" +@tn.str.70 = private constant [14 x i8] c"*BuildOptions\00" +@tn.str.71 = private constant [17 x i8] c"*OperatingSystem\00" +@tn.str.72 = private constant [14 x i8] c"*Architecture\00" +@tn.str.73 = private constant [10 x i8] c"*[]string\00" +@tn.str.74 = private constant [6 x i8] c"**GPA\00" +@tn.str.75 = private constant [13 x i8] c"**ArenaChunk\00" +@tn.str.76 = private constant [8 x i8] c"**Arena\00" +@tn.str.77 = private constant [7 x i8] c"*[*]u8\00" +@tn.str.78 = private constant [11 x i8] c"**BufAlloc\00" +@tn.str.79 = private constant [20 x i8] c"**TrackingAllocator\00" +@tn.str.80 = private constant [11 x i8] c"**NSString\00" +@tn.str.81 = private constant [14 x i8] c"***CAllocator\00" +@tn.str.82 = private constant [6 x i8] c"**s64\00" +@tn.str.83 = private constant [8 x i8] c"***void\00" +@tn.str.84 = private constant [7 x i8] c"**bool\00" +@tn.str.85 = private constant [9 x i8] c"**string\00" +@tn.str.86 = private constant [6 x i8] c"**Any\00" +@tn.str.87 = private constant [9 x i8] c"**[1]Any\00" +@tn.str.88 = private constant [8 x i8] c"**[]Any\00" +@tn.str.89 = private constant [5 x i8] c"**u8\00" +@tn.str.90 = private constant [9 x i8] c"**Triple\00" +@tn.str.91 = private constant [9 x i8] c"**[3]Any\00" +@__sx_type_names = private constant [86 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 6 }, { ptr, i64 } { ptr @tn.str.51, i64 12 }, { ptr, i64 } { ptr @tn.str.52, i64 4 }, { ptr, i64 } { ptr @tn.str.53, i64 6 }, { ptr, i64 } { ptr @tn.str.54, i64 5 }, { ptr, i64 } { ptr @tn.str.55, i64 7 }, { ptr, i64 } { ptr @tn.str.56, i64 5 }, { ptr, i64 } { ptr @tn.str.57, i64 4 }, { ptr, i64 } { ptr @tn.str.58, i64 6 }, { ptr, i64 } { ptr @tn.str.59, i64 7 }, { ptr, i64 } { ptr @tn.str.60, i64 6 }, { ptr, i64 } { ptr @tn.str.61, i64 3 }, { ptr, i64 } { ptr @tn.str.62, i64 7 }, { ptr, i64 } { ptr @tn.str.63, i64 6 }, { ptr, i64 } { ptr @tn.str.64, i64 7 }, { ptr, i64 } { ptr @tn.str.65, i64 7 }, { ptr, i64 } { ptr @tn.str.66, i64 4 }, { ptr, i64 } { ptr @tn.str.67, i64 16 }, { ptr, i64 } { ptr @tn.str.68, i64 10 }, { ptr, i64 } { ptr @tn.str.69, i64 8 }, { ptr, i64 } { ptr @tn.str.70, i64 13 }, { ptr, i64 } { ptr @tn.str.71, i64 16 }, { ptr, i64 } { ptr @tn.str.72, i64 13 }, { ptr, i64 } { ptr @tn.str.73, i64 9 }, { ptr, i64 } { ptr @tn.str.74, i64 5 }, { ptr, i64 } { ptr @tn.str.75, i64 12 }, { ptr, i64 } { ptr @tn.str.76, i64 7 }, { ptr, i64 } { ptr @tn.str.77, i64 6 }, { ptr, i64 } { ptr @tn.str.78, i64 10 }, { ptr, i64 } { ptr @tn.str.79, i64 19 }, { ptr, i64 } { ptr @tn.str.80, i64 10 }, { ptr, i64 } { ptr @tn.str.81, i64 13 }, { ptr, i64 } { ptr @tn.str.82, i64 5 }, { ptr, i64 } { ptr @tn.str.83, i64 7 }, { ptr, i64 } { ptr @tn.str.84, i64 6 }, { ptr, i64 } { ptr @tn.str.85, i64 8 }, { ptr, i64 } { ptr @tn.str.86, i64 5 }, { ptr, i64 } { ptr @tn.str.87, i64 8 }, { ptr, i64 } { ptr @tn.str.88, i64 7 }, { ptr, i64 } { ptr @tn.str.89, i64 4 }, { ptr, i64 } { ptr @tn.str.90, i64 8 }, { ptr, i64 } { ptr @tn.str.91, i64 8 }] @str.92 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.94 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 -@str.95 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.96 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.97 = private unnamed_addr constant [5 x i8] c")); \00", align 1 -@str.98 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 -@str.99 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 -@str.100 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 -@str.101 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.102 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.94 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.96 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.97 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 +@str.98 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.99 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.100 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.101 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 +@str.102 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.103 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.104 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.105 = private unnamed_addr constant [5 x i8] c")); \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 [9 x i8] c"NSObject\00", align 1 -@str.110 = private unnamed_addr constant [14 x i8] c"SxTripleProbe\00", align 1 -@str.111 = private unnamed_addr constant [12 x i8] c"tripleValue\00", align 1 -@str.112 = private unnamed_addr constant [15 x i8] c"{Triple=qqq}@:\00", align 1 -@str.113 = private unnamed_addr constant [16 x i8] c"addMethod = {}\0A\00", align 1 -@str.114 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.115 = private unnamed_addr constant [16 x i8] c"addMethod = {}\0A\00", align 1 -@str.116 = private unnamed_addr constant [23 x i8] c"triple = ({}, {}, {})\0A\00", align 1 +@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 +@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 +@str.112 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1 +@str.113 = private unnamed_addr constant [14 x i8] c"SxTripleProbe\00", align 1 +@str.114 = private unnamed_addr constant [12 x i8] c"tripleValue\00", align 1 +@str.115 = private unnamed_addr constant [15 x i8] c"{Triple=qqq}@:\00", align 1 +@str.116 = private unnamed_addr constant [16 x i8] c"addMethod = {}\0A\00", align 1 @str.117 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@str.118 = private unnamed_addr constant [23 x i8] c"triple = ({}, {}, {})\0A\00", align 1 -@str.119 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 -@str.120 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.121 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.118 = private unnamed_addr constant [16 x i8] c"addMethod = {}\0A\00", align 1 +@str.119 = private unnamed_addr constant [23 x i8] c"triple = ({}, {}, {})\0A\00", align 1 +@str.120 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 +@str.121 = private unnamed_addr constant [23 x i8] c"triple = ({}, {}, {})\0A\00", align 1 +@str.122 = private unnamed_addr constant [16 x i8] c"Source_Location\00", align 1 +@str.123 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.124 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1 @fld.str = private constant [5 x i8] c"file\00" -@fld.str.123 = private constant [5 x i8] c"line\00" -@fld.str.124 = private constant [4 x i8] c"col\00" -@fld.str.125 = 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.123, i64 4 }, { ptr, i64 } { ptr @fld.str.124, i64 3 }, { ptr, i64 } { ptr @fld.str.125, i64 4 }] -@str.126 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.127 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 -@str.128 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.129 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.130 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.131 = private constant [4 x i8] c"ctx\00" -@fld.str.132 = private constant [6 x i8] c"alloc\00" -@fld.str.133 = private constant [8 x i8] c"dealloc\00" -@field_names.134 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.131, i64 3 }, { ptr, i64 } { ptr @fld.str.132, i64 5 }, { ptr, i64 } { ptr @fld.str.133, i64 7 }] -@str.135 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.136 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 -@str.137 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.138 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.139 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.140 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.141 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.142 = private unnamed_addr constant [4 x i8] c"GPA\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 [12 x i8] c"alloc_count\00" -@field_names.147 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.146, i64 11 }] -@str.148 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.149 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 -@str.150 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.151 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.153 = private constant [5 x i8] c"next\00" -@fld.str.154 = private constant [4 x i8] c"cap\00" -@field_names.155 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.153, i64 4 }, { ptr, i64 } { ptr @fld.str.154, i64 3 }] -@str.156 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.157 = private unnamed_addr constant [6 x i8] c"Arena\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 [6 x i8] c"first\00" -@fld.str.162 = private constant [10 x i8] c"end_index\00" -@fld.str.163 = private constant [7 x i8] c"parent\00" -@field_names.164 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.161, i64 5 }, { ptr, i64 } { ptr @fld.str.162, i64 9 }, { ptr, i64 } { ptr @fld.str.163, i64 6 }] -@str.165 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.166 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 -@str.167 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.168 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.170 = private constant [4 x i8] c"buf\00" -@fld.str.171 = private constant [4 x i8] c"len\00" -@fld.str.172 = private constant [4 x i8] c"pos\00" -@field_names.173 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.170, i64 3 }, { ptr, i64 } { ptr @fld.str.171, i64 3 }, { ptr, i64 } { ptr @fld.str.172, i64 3 }] -@str.174 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.175 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 -@str.176 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.177 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.178 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.179 = private constant [7 x i8] c"parent\00" -@fld.str.180 = private constant [12 x i8] c"alloc_count\00" -@fld.str.181 = private constant [14 x i8] c"dealloc_count\00" -@fld.str.182 = private constant [18 x i8] c"total_alloc_bytes\00" -@field_names.183 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.179, i64 6 }, { ptr, i64 } { ptr @fld.str.180, i64 11 }, { ptr, i64 } { ptr @fld.str.181, i64 13 }, { ptr, i64 } { ptr @fld.str.182, i64 17 }] -@str.184 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.185 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 -@str.186 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.187 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.188 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.189 = private constant [10 x i8] c"allocator\00" -@fld.str.190 = private constant [5 x i8] c"data\00" -@field_names.191 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.189, i64 9 }, { ptr, i64 } { ptr @fld.str.190, i64 4 }] -@str.192 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.193 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 -@str.194 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.195 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.196 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.197 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.198 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.199 = private unnamed_addr constant [9 x i8] c"NSString\00", align 1 -@str.200 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.201 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.202 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@field_names.203 = private constant [0 x { ptr, i64 }] zeroinitializer -@str.204 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.205 = private unnamed_addr constant [7 x i8] c"Triple\00", align 1 -@str.206 = private unnamed_addr constant [2 x i8] c"{\00", align 1 -@str.207 = private unnamed_addr constant [2 x i8] c"}\00", align 1 -@str.208 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@fld.str.209 = private constant [2 x i8] c"a\00" -@fld.str.210 = private constant [2 x i8] c"b\00" -@fld.str.211 = private constant [2 x i8] c"c\00" -@field_names.212 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.209, i64 1 }, { ptr, i64 } { ptr @fld.str.210, i64 1 }, { ptr, i64 } { ptr @fld.str.211, i64 1 }] -@str.213 = private unnamed_addr constant [3 x i8] c": \00", align 1 -@str.214 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.215 = private constant [6 x i8] c"macos\00" -@fld.str.216 = private constant [6 x i8] c"linux\00" -@fld.str.217 = private constant [8 x i8] c"windows\00" -@fld.str.218 = private constant [5 x i8] c"wasm\00" -@fld.str.219 = private constant [4 x i8] c"ios\00" -@fld.str.220 = private constant [8 x i8] c"android\00" -@fld.str.221 = private constant [8 x i8] c"unknown\00" -@field_names.222 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.215, i64 5 }, { ptr, i64 } { ptr @fld.str.216, i64 5 }, { ptr, i64 } { ptr @fld.str.217, i64 7 }, { ptr, i64 } { ptr @fld.str.218, i64 4 }, { ptr, i64 } { ptr @fld.str.219, i64 3 }, { ptr, i64 } { ptr @fld.str.220, i64 7 }, { ptr, i64 } { ptr @fld.str.221, i64 7 }] -@str.223 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.224 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.225 = private unnamed_addr constant [2 x i8] c".\00", align 1 -@fld.str.226 = private constant [8 x i8] c"aarch64\00" -@fld.str.227 = private constant [7 x i8] c"x86_64\00" -@fld.str.228 = private constant [7 x i8] c"wasm32\00" -@fld.str.229 = private constant [7 x i8] c"wasm64\00" -@fld.str.230 = private constant [8 x i8] c"unknown\00" -@field_names.231 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.226, i64 7 }, { ptr, i64 } { ptr @fld.str.227, i64 6 }, { ptr, i64 } { ptr @fld.str.228, i64 6 }, { ptr, i64 } { ptr @fld.str.229, i64 6 }, { ptr, i64 } { ptr @fld.str.230, i64 7 }] -@str.232 = private unnamed_addr constant [2 x i8] c"(\00", align 1 -@str.233 = private unnamed_addr constant [2 x i8] c")\00", align 1 -@str.234 = private unnamed_addr constant [2 x i8] c"[\00", align 1 -@str.235 = private unnamed_addr constant [2 x i8] c"]\00", align 1 -@str.236 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.126 = private constant [5 x i8] c"line\00" +@fld.str.127 = private constant [4 x i8] c"col\00" +@fld.str.128 = 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.126, i64 4 }, { ptr, i64 } { ptr @fld.str.127, i64 3 }, { ptr, i64 } { ptr @fld.str.128, i64 4 }] +@str.129 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.130 = private unnamed_addr constant [10 x i8] c"Allocator\00", align 1 +@str.131 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.132 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.133 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.134 = private constant [4 x i8] c"ctx\00" +@fld.str.135 = private constant [6 x i8] c"alloc\00" +@fld.str.136 = private constant [8 x i8] c"dealloc\00" +@field_names.137 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.134, i64 3 }, { ptr, i64 } { ptr @fld.str.135, i64 5 }, { ptr, i64 } { ptr @fld.str.136, i64 7 }] +@str.138 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.139 = private unnamed_addr constant [11 x i8] c"CAllocator\00", align 1 +@str.140 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.141 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.143 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.144 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.145 = private unnamed_addr constant [4 x i8] c"GPA\00", align 1 +@str.146 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.147 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.148 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.149 = private constant [12 x i8] c"alloc_count\00" +@field_names.150 = private constant [1 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.149, i64 11 }] +@str.151 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.152 = private unnamed_addr constant [11 x i8] c"ArenaChunk\00", align 1 +@str.153 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.154 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.156 = private constant [5 x i8] c"next\00" +@fld.str.157 = private constant [4 x i8] c"cap\00" +@field_names.158 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.156, i64 4 }, { ptr, i64 } { ptr @fld.str.157, i64 3 }] +@str.159 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.160 = private unnamed_addr constant [6 x i8] c"Arena\00", align 1 +@str.161 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.162 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.163 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.164 = private constant [6 x i8] c"first\00" +@fld.str.165 = private constant [10 x i8] c"end_index\00" +@fld.str.166 = private constant [7 x i8] c"parent\00" +@field_names.167 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.164, i64 5 }, { ptr, i64 } { ptr @fld.str.165, i64 9 }, { ptr, i64 } { ptr @fld.str.166, i64 6 }] +@str.168 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.169 = private unnamed_addr constant [9 x i8] c"BufAlloc\00", align 1 +@str.170 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.171 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.173 = private constant [4 x i8] c"buf\00" +@fld.str.174 = private constant [4 x i8] c"len\00" +@fld.str.175 = private constant [4 x i8] c"pos\00" +@field_names.176 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.173, i64 3 }, { ptr, i64 } { ptr @fld.str.174, i64 3 }, { ptr, i64 } { ptr @fld.str.175, i64 3 }] +@str.177 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.178 = private unnamed_addr constant [18 x i8] c"TrackingAllocator\00", align 1 +@str.179 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.180 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.181 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.182 = private constant [7 x i8] c"parent\00" +@fld.str.183 = private constant [12 x i8] c"alloc_count\00" +@fld.str.184 = private constant [14 x i8] c"dealloc_count\00" +@fld.str.185 = private constant [18 x i8] c"total_alloc_bytes\00" +@field_names.186 = private constant [4 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.182, i64 6 }, { ptr, i64 } { ptr @fld.str.183, i64 11 }, { ptr, i64 } { ptr @fld.str.184, i64 13 }, { ptr, i64 } { ptr @fld.str.185, i64 17 }] +@str.187 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.188 = private unnamed_addr constant [8 x i8] c"Context\00", align 1 +@str.189 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.190 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.191 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@fld.str.192 = private constant [10 x i8] c"allocator\00" +@fld.str.193 = private constant [5 x i8] c"data\00" +@field_names.194 = private constant [2 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.192, i64 9 }, { ptr, i64 } { ptr @fld.str.193, i64 4 }] +@str.195 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.196 = private unnamed_addr constant [13 x i8] c"BuildOptions\00", align 1 +@str.197 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.198 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.199 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.200 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.201 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.202 = private unnamed_addr constant [9 x i8] c"NSString\00", align 1 +@str.203 = private unnamed_addr constant [2 x i8] c"{\00", align 1 +@str.204 = private unnamed_addr constant [2 x i8] c"}\00", align 1 +@str.205 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@field_names.206 = private constant [0 x { ptr, i64 }] zeroinitializer +@str.207 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.208 = private unnamed_addr constant [7 x i8] c"Triple\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 +@fld.str.212 = private constant [2 x i8] c"a\00" +@fld.str.213 = private constant [2 x i8] c"b\00" +@fld.str.214 = private constant [2 x i8] c"c\00" +@field_names.215 = private constant [3 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.212, i64 1 }, { ptr, i64 } { ptr @fld.str.213, i64 1 }, { ptr, i64 } { ptr @fld.str.214, i64 1 }] +@str.216 = private unnamed_addr constant [3 x i8] c": \00", align 1 +@str.217 = private unnamed_addr constant [2 x i8] c".\00", align 1 +@fld.str.218 = private constant [6 x i8] c"macos\00" +@fld.str.219 = private constant [6 x i8] c"linux\00" +@fld.str.220 = private constant [8 x i8] c"windows\00" +@fld.str.221 = private constant [5 x i8] c"wasm\00" +@fld.str.222 = private constant [4 x i8] c"ios\00" +@fld.str.223 = private constant [8 x i8] c"android\00" +@fld.str.224 = private constant [8 x i8] c"unknown\00" +@field_names.225 = private constant [7 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.218, i64 5 }, { ptr, i64 } { ptr @fld.str.219, i64 5 }, { ptr, i64 } { ptr @fld.str.220, i64 7 }, { ptr, i64 } { ptr @fld.str.221, i64 4 }, { ptr, i64 } { ptr @fld.str.222, i64 3 }, { ptr, i64 } { ptr @fld.str.223, i64 7 }, { ptr, i64 } { ptr @fld.str.224, i64 7 }] +@str.226 = private unnamed_addr constant [2 x i8] c"(\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 +@fld.str.229 = private constant [8 x i8] c"aarch64\00" +@fld.str.230 = private constant [7 x i8] c"x86_64\00" +@fld.str.231 = private constant [7 x i8] c"wasm32\00" +@fld.str.232 = private constant [7 x i8] c"wasm64\00" +@fld.str.233 = private constant [8 x i8] c"unknown\00" +@field_names.234 = private constant [5 x { ptr, i64 }] [{ ptr, i64 } { ptr @fld.str.229, i64 7 }, { ptr, i64 } { ptr @fld.str.230, i64 6 }, { ptr, i64 } { ptr @fld.str.231, i64 6 }, { ptr, i64 } { ptr @fld.str.232, i64 6 }, { ptr, i64 } { ptr @fld.str.233, i64 7 }] +@str.235 = private unnamed_addr constant [2 x i8] c"(\00", align 1 +@str.236 = private unnamed_addr constant [2 x i8] c")\00", align 1 @str.237 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.238 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.239 = private unnamed_addr constant [3 x i8] c", \00", align 1 @@ -254,66 +255,72 @@ @str.243 = private unnamed_addr constant [2 x i8] c"[\00", align 1 @str.244 = private unnamed_addr constant [2 x i8] c"]\00", align 1 @str.245 = private unnamed_addr constant [3 x i8] c", \00", align 1 -@str.246 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.247 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 -@str.248 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 -@str.249 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.250 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 -@str.251 = private unnamed_addr constant [4 x i8] c"@0x\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 +@str.248 = private unnamed_addr constant [3 x i8] c", \00", align 1 +@str.249 = private unnamed_addr constant [2 x i8] c"[\00", align 1 +@str.250 = private unnamed_addr constant [2 x i8] c"]\00", align 1 +@str.251 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.252 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.253 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 +@str.253 = private unnamed_addr constant [6 x i8] c"*void\00", align 1 @str.254 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.255 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.256 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 +@str.256 = private unnamed_addr constant [12 x i8] c"*CAllocator\00", align 1 @str.257 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.258 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.259 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 +@str.259 = private unnamed_addr constant [5 x i8] c"*GPA\00", align 1 @str.260 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.261 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.262 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 +@str.262 = private unnamed_addr constant [12 x i8] c"*ArenaChunk\00", align 1 @str.263 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.264 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.265 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 +@str.265 = private unnamed_addr constant [7 x i8] c"*Arena\00", align 1 @str.266 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.267 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.268 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 +@str.268 = private unnamed_addr constant [6 x i8] c"[*]u8\00", align 1 @str.269 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.270 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.271 = private unnamed_addr constant [10 x i8] c"*NSString\00", align 1 +@str.271 = private unnamed_addr constant [10 x i8] c"*BufAlloc\00", align 1 @str.272 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.273 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.274 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 +@str.274 = private unnamed_addr constant [19 x i8] c"*TrackingAllocator\00", align 1 @str.275 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.276 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.277 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 +@str.277 = private unnamed_addr constant [10 x i8] c"*NSString\00", align 1 @str.278 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.279 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.280 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 +@str.280 = private unnamed_addr constant [13 x i8] c"**CAllocator\00", align 1 @str.281 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.282 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.283 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 +@str.283 = private unnamed_addr constant [5 x i8] c"*s64\00", align 1 @str.284 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.285 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.286 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 +@str.286 = private unnamed_addr constant [7 x i8] c"**void\00", align 1 @str.287 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.288 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.289 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 +@str.289 = private unnamed_addr constant [6 x i8] c"*bool\00", align 1 @str.290 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.291 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.292 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 +@str.292 = private unnamed_addr constant [8 x i8] c"*string\00", align 1 @str.293 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.294 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.295 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 +@str.295 = private unnamed_addr constant [5 x i8] c"*Any\00", align 1 @str.296 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.297 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.298 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 +@str.298 = private unnamed_addr constant [8 x i8] c"*[1]Any\00", align 1 @str.299 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.300 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.301 = private unnamed_addr constant [8 x i8] c"*Triple\00", align 1 +@str.301 = private unnamed_addr constant [7 x i8] c"*[]Any\00", align 1 @str.302 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @str.303 = private unnamed_addr constant [5 x i8] c"null\00", align 1 -@str.304 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 +@str.304 = private unnamed_addr constant [4 x i8] c"*u8\00", align 1 @str.305 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.306 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.307 = private unnamed_addr constant [8 x i8] c"*Triple\00", align 1 +@str.308 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 +@str.309 = private unnamed_addr constant [5 x i8] c"null\00", align 1 +@str.310 = private unnamed_addr constant [8 x i8] c"*[3]Any\00", align 1 +@str.311 = private unnamed_addr constant [4 x i8] c"@0x\00", align 1 @OBJC_METH_VAR_NAME_ = private unnamed_addr constant [12 x i8] c"tripleValue\00" @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }] @@ -454,38 +461,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -498,50 +510,178 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 + 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.56, label %if.merge.57 + +if.then.56: ; preds = %entry + ret { ptr, i64 } { ptr @str.1, i64 1 } + +if.merge.57: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 20) + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 19, ptr %allocaN, align 8 + br label %while.hdr.66 + +while.hdr.66: ; preds = %while.exit.77, %if.merge.57 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.70, label %or.rhs.69 + +while.body.67: ; preds = %or.merge.74 + %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.75 + +while.exit.68: ; preds = %or.merge.74 + %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.69: ; preds = %while.hdr.66 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp15 = alloca [4 x i64], 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.70 + +or.merge.70: ; preds = %or.rhs.69, %while.hdr.66 + %bp = phi i1 [ true, %while.hdr.66 ], [ %icmpN, %or.rhs.69 ] + br i1 %bp, label %or.merge.72, label %or.rhs.71 + +or.rhs.71: ; preds = %or.merge.70 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp20 = alloca [4 x i64], 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.72 + +or.merge.72: ; preds = %or.rhs.71, %or.merge.70 + %bpN = phi i1 [ true, %or.merge.70 ], [ %icmpN, %or.rhs.71 ] + br i1 %bpN, label %or.merge.74, label %or.rhs.73 + +or.rhs.73: ; preds = %or.merge.72 + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp26 = alloca [4 x i64], 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.74 + +or.merge.74: ; preds = %or.rhs.73, %or.merge.72 + %bpN = phi i1 [ true, %or.merge.72 ], [ %icmpN, %or.rhs.73 ] + br i1 %bpN, label %while.body.67, label %while.exit.68 + +while.hdr.75: ; preds = %while.body.76, %while.body.67 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp slt i64 %loadN, 4 + br i1 %icmpN, label %while.body.76, label %while.exit.77 + +while.body.76: ; preds = %while.hdr.75 + %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 + %ig.tmp36 = alloca [4 x i64], 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 + %allocaN = alloca i64, align 8 + 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.75 + +while.exit.77: ; preds = %while.hdr.75 + %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.66 +} + ; 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.54, label %if.else.55 + br i1 %load, label %if.then.78, label %if.else.79 -if.then.54: ; preds = %entry - br label %if.merge.56 +if.then.78: ; preds = %entry + br label %if.merge.80 -if.else.55: ; preds = %entry - br label %if.merge.56 +if.else.79: ; preds = %entry + br label %if.merge.80 -if.merge.56: ; preds = %if.else.55, %if.then.54 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.54 ], [ { ptr @str.2, i64 5 }, %if.else.55 ] +if.merge.80: ; preds = %if.else.79, %if.then.78 + %bp = phi { ptr, i64 } [ { ptr @str.2, i64 4 }, %if.then.78 ], [ { ptr @str.3, i64 5 }, %if.else.79 ] ret { ptr, i64 } %bp } @@ -555,19 +695,19 @@ entry: %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.60, label %if.else.61 + br i1 %loadN, label %if.then.84, label %if.else.85 -if.then.60: ; preds = %entry +if.then.84: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.62 + br label %if.merge.86 -if.else.61: ; preds = %entry +if.else.85: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.62 + br label %if.merge.86 -if.merge.62: ; preds = %if.else.61, %if.then.60 - %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] +if.merge.86: ; preds = %if.else.85, %if.then.84 + %bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -584,15 +724,15 @@ if.merge.62: ; preds = %if.else.61, %if.the 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.63, label %if.merge.64 + br i1 %icmp, label %if.then.87, label %if.merge.88 -if.then.63: ; preds = %if.merge.62 +if.then.87: ; preds = %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.64 + br label %if.merge.88 -if.merge.64: ; preds = %if.then.63, %if.merge.62 +if.merge.88: ; preds = %if.then.87, %if.merge.86 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -610,16 +750,16 @@ if.merge.64: ; preds = %if.then.63, %if.mer %allocaN = alloca i64, align 8 store i64 %lenN, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.65, label %if.else.66 + br i1 %loadN, label %if.then.89, label %if.else.90 -if.then.65: ; preds = %if.merge.64 - br label %if.merge.67 +if.then.89: ; preds = %if.merge.88 + br label %if.merge.91 -if.else.66: ; preds = %if.merge.64 - br label %if.merge.67 +if.else.90: ; preds = %if.merge.88 + br label %if.merge.91 -if.merge.67: ; preds = %if.else.66, %if.then.65 - %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] +if.merge.91: ; preds = %if.else.90, %if.then.89 + %bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -636,17 +776,17 @@ if.merge.67: ; preds = %if.else.66, %if.the %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.68, label %if.merge.69 + br i1 %loadN, label %if.then.92, label %if.merge.93 -if.then.68: ; preds = %if.merge.67 +if.then.92: ; preds = %if.merge.91 %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.69 + br label %if.merge.93 -if.merge.69: ; preds = %if.then.68, %if.merge.67 +if.merge.93: ; preds = %if.then.92, %if.merge.91 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -709,39 +849,39 @@ entry: %loadN = load i64, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 %loadN, ptr %allocaN, align 8 - br label %while.hdr.215 + br label %while.hdr.237 -while.hdr.215: ; preds = %if.merge.220, %entry +while.hdr.237: ; preds = %if.merge.242, %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.216, label %while.exit.217 + br i1 %icmp, label %while.body.238, label %while.exit.239 -while.body.216: ; preds = %while.hdr.215 +while.body.238: ; preds = %while.hdr.237 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 16 %allocaN = alloca i64, align 8 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.218, label %if.else.219 + br i1 %icmpN, label %if.then.240, label %if.else.241 -while.exit.217: ; preds = %while.hdr.215 +while.exit.239: ; preds = %while.hdr.237 ret void -if.then.218: ; preds = %while.body.216 +if.then.240: ; preds = %while.body.238 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.220 + br label %if.merge.242 -if.else.219: ; preds = %while.body.216 +if.else.241: ; preds = %while.body.238 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, 10 %addN = add i64 %sub, 97 - br label %if.merge.220 + br label %if.merge.242 -if.merge.220: ; preds = %if.else.219, %if.then.218 - %bp = phi i64 [ %addN, %if.then.218 ], [ %addN, %if.else.219 ] +if.merge.242: ; preds = %if.else.241, %if.then.240 + %bp = phi i64 [ %addN, %if.then.240 ], [ %addN, %if.else.241 ] %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %igp.data = extractvalue { ptr, i64 } %loadN, 0 @@ -754,37 +894,29 @@ if.merge.220: ; preds = %if.else.219, %if.th %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.215 + br label %while.hdr.237 } ; Function Attrs: nounwind -define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 { +define internal [4 x i64] @decompose_u16x4(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 - %icmp = icmp eq i64 %load, 0 - br i1 %icmp, label %if.then.205, label %if.merge.206 - -if.then.205: ; preds = %entry - ret { ptr, i64 } { ptr @str.3, i64 1 } - -if.merge.206: ; preds = %entry - %loadN = load i64, ptr %alloca, align 8 - %srem = srem i64 %loadN, 65536 + %srem = srem i64 %load, 65536 %allocaN = alloca i64, align 8 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.207, label %if.merge.208 + %icmp = icmp slt i64 %loadN, 0 + br i1 %icmp, label %if.then.58, label %if.merge.59 -if.then.207: ; preds = %if.merge.206 +if.then.58: ; 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.208 + br label %if.merge.59 -if.merge.208: ; preds = %if.then.207, %if.merge.206 +if.merge.59: ; preds = %if.then.58, %entry %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -797,15 +929,15 @@ if.merge.208: ; preds = %if.then.207, %if.me 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.209, label %if.merge.210 + br i1 %icmpN, label %if.then.60, label %if.merge.61 -if.then.209: ; preds = %if.merge.208 +if.then.60: ; preds = %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.210 + br label %if.merge.61 -if.merge.210: ; preds = %if.then.209, %if.merge.208 +if.merge.61: ; preds = %if.then.60, %if.merge.59 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -818,15 +950,15 @@ if.merge.210: ; preds = %if.then.209, %if.me 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.211, label %if.merge.212 + br i1 %icmpN, label %if.then.62, label %if.merge.63 -if.then.211: ; preds = %if.merge.210 +if.then.62: ; preds = %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.212 + br label %if.merge.63 -if.merge.212: ; preds = %if.then.211, %if.merge.210 +if.merge.63: ; preds = %if.then.62, %if.merge.61 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -839,65 +971,116 @@ if.merge.212: ; preds = %if.then.211, %if.me 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.213, label %if.merge.214 + br i1 %icmpN, label %if.then.64, label %if.merge.65 -if.then.213: ; preds = %if.merge.212 +if.then.64: ; preds = %if.merge.63 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.214 + br label %if.merge.65 -if.merge.214: ; preds = %if.then.213, %if.merge.212 - %call = call { ptr, i64 } @cstring(ptr %0, i64 16) +if.merge.65: ; preds = %if.then.64, %if.merge.63 + %allocaN = alloca [4 x i64], align 8 + 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 + 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.235, label %if.merge.236 + +if.then.235: ; preds = %entry + ret { ptr, i64 } { ptr @str.4, i64 1 } + +if.merge.236: ; preds = %entry + %loadN = load i64, ptr %alloca, align 8 + %call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN) + %allocaN = alloca [4 x i64], align 8 + store [4 x i64] %call, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } %call, ptr %allocaN, align 8 + store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %loadN = load i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp9 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp14 = alloca [4 x i64], 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 i64, ptr %allocaN, align 8 - call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) + %loadN = load [4 x i64], ptr %allocaN, align 8 + %ig.tmp19 = alloca [4 x i64], 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) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.221 + br label %while.hdr.243 -while.hdr.221: ; preds = %if.merge.225, %if.merge.214 +while.hdr.243: ; preds = %if.merge.247, %if.merge.236 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp slt i64 %loadN, 15 - br i1 %icmpN, label %while.body.222, label %while.exit.223 + br i1 %icmpN, label %while.body.244, label %while.exit.245 -while.body.222: ; preds = %while.hdr.221 +while.body.244: ; preds = %while.hdr.243 %loadN = load { ptr, i64 }, ptr %allocaN, 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 + %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.224, label %if.merge.225 + br i1 %icmpN, label %if.then.246, label %if.merge.247 -while.exit.223: ; preds = %if.then.224, %while.hdr.221 +while.exit.245: ; preds = %if.then.246, %while.hdr.243 %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 16, %loadN - %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) + %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.224: ; preds = %while.body.222 - br label %while.exit.223 +if.then.246: ; preds = %while.body.244 + br label %while.exit.245 -if.merge.225: ; preds = %while.body.222 +if.merge.247: ; preds = %while.body.244 %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %while.hdr.221 + %add = add i64 %loadN, 1 + store i64 %add, ptr %allocaN, align 8 + br label %while.hdr.243 } ; Function Attrs: nounwind @@ -976,7 +1159,7 @@ entry: %alloca = alloca { i64, i64 }, align 8 store { i64, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.4, i64 3 }, ptr %allocaN, 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 @@ -984,546 +1167,573 @@ entry: 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.53 [ - i64 17, label %match.arm.39 - i64 2, label %match.arm.40 - i64 3, label %match.arm.40 - i64 4, label %match.arm.40 - i64 5, label %match.arm.40 - i64 6, label %match.arm.40 - i64 7, label %match.arm.40 - i64 8, label %match.arm.40 - i64 9, label %match.arm.40 - i64 16, label %match.arm.40 - i64 15, label %match.arm.40 - i64 12, label %match.arm.41 - i64 1, label %match.arm.42 - i64 10, label %match.arm.43 - i64 11, label %match.arm.43 - i64 19, label %match.arm.44 - i64 20, label %match.arm.44 - i64 21, label %match.arm.44 - i64 23, label %match.arm.44 - i64 25, label %match.arm.44 - i64 27, label %match.arm.44 - i64 30, label %match.arm.44 - i64 32, label %match.arm.44 - i64 34, label %match.arm.44 + switch i64 %ua.raw, label %match.unr.52 [ + i64 17, label %match.arm.38 + i64 2, label %match.arm.39 + i64 3, label %match.arm.39 + i64 4, label %match.arm.39 + i64 5, label %match.arm.39 + i64 6, label %match.arm.39 + i64 7, label %match.arm.39 + i64 8, label %match.arm.39 + i64 9, label %match.arm.39 + i64 16, label %match.arm.39 + i64 15, label %match.arm.39 + i64 12, label %match.arm.40 + i64 1, label %match.arm.41 + i64 10, label %match.arm.42 + i64 11, label %match.arm.42 + i64 19, label %match.arm.43 + i64 20, label %match.arm.43 + i64 21, label %match.arm.43 + i64 23, label %match.arm.43 + i64 25, label %match.arm.43 + i64 27, label %match.arm.43 + i64 30, label %match.arm.43 + i64 32, label %match.arm.43 + i64 34, label %match.arm.43 + i64 39, label %match.arm.43 + i64 41, label %match.arm.43 + i64 44, label %match.arm.43 + i64 37, label %match.arm.44 i64 38, label %match.arm.44 - i64 40, label %match.arm.44 - i64 43, label %match.arm.44 - i64 36, label %match.arm.45 - i64 37, label %match.arm.45 - i64 51, label %match.arm.48 - i64 56, label %match.arm.48 - i64 35, label %match.arm.49 + i64 35, label %match.arm.47 + i64 52, label %match.arm.47 + i64 57, label %match.arm.47 + i64 36, label %match.arm.48 + i64 50, label %match.arm.48 + i64 18, label %match.arm.49 + i64 22, label %match.arm.49 + i64 24, label %match.arm.49 + i64 26, label %match.arm.49 + i64 28, label %match.arm.49 + i64 29, label %match.arm.49 + i64 31, label %match.arm.49 + i64 33, label %match.arm.49 + i64 42, label %match.arm.49 + i64 45, label %match.arm.49 + i64 46, label %match.arm.49 + i64 47, label %match.arm.49 + i64 48, label %match.arm.49 i64 49, label %match.arm.49 - i64 18, label %match.arm.50 - i64 22, label %match.arm.50 - i64 24, label %match.arm.50 - i64 26, label %match.arm.50 - i64 28, label %match.arm.50 - i64 29, label %match.arm.50 - i64 31, label %match.arm.50 - i64 33, label %match.arm.50 - i64 41, label %match.arm.50 - i64 44, label %match.arm.50 - i64 45, label %match.arm.50 - i64 46, label %match.arm.50 - i64 47, label %match.arm.50 - i64 48, label %match.arm.50 - i64 50, label %match.arm.50 - i64 52, label %match.arm.50 - i64 53, label %match.arm.50 - i64 54, label %match.arm.50 - i64 55, label %match.arm.50 - i64 57, label %match.arm.50 - i64 13, label %match.arm.52 + i64 51, label %match.arm.49 + i64 53, label %match.arm.49 + i64 54, label %match.arm.49 + i64 55, label %match.arm.49 + i64 56, label %match.arm.49 + i64 58, label %match.arm.49 + i64 13, label %match.arm.51 ] -match.merge.38: ; preds = %dispatch.merge.180, %dispatch.merge.166, %dispatch.merge.152, %dispatch.merge.144, %dispatch.merge.70, %float.merge.59, %match.unr.53, %match.arm.52, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.37: ; preds = %dispatch.merge.210, %dispatch.merge.196, %dispatch.merge.176, %dispatch.merge.168, %dispatch.merge.94, %float.merge.83, %if.merge.55, %match.unr.52, %match.arm.51, %match.arm.41, %match.arm.40, %match.arm.38 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN -match.arm.39: ; preds = %entry - store { ptr, i64 } { ptr @str.5, i64 0 }, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.38: ; preds = %entry + store { ptr, i64 } { ptr @str.6, i64 0 }, ptr %allocaN, align 8 + br label %match.merge.37 -match.arm.40: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw6 = extractvalue { i64, i64 } %loadN, 1 - %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw6) - store { ptr, i64 } %call, ptr %allocaN, align 8 - br label %match.merge.38 +match.arm.39: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry + %loadN = load { i64, i64 }, ptr %allocaN, align 8 + %tiu.tid = extractvalue { i64, i64 } %loadN, 1 + %tiu.gep = getelementptr inbounds [86 x i1], ptr @__sx_type_is_unsigned, i64 0, i64 %tiu.tid + %tiu.load = load i1, ptr %tiu.gep, align 1 + br i1 %tiu.load, label %if.then.53, label %if.else.54 -match.arm.41: ; preds = %entry +match.arm.40: ; preds = %entry %allocaN = alloca { ptr, i64 }, align 8 %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw9 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr = inttoptr i64 %ua.raw9 to ptr + %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.38 + br label %match.merge.37 -match.arm.42: ; preds = %entry +match.arm.41: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 - %ua.raw12 = extractvalue { i64, i64 } %loadN, 1 - %tr = trunc i64 %ua.raw12 to i1 - %callN = call { ptr, i64 } @bool_to_string(ptr %0, i1 %tr) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %match.merge.38 + %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.37 -match.arm.43: ; preds = %entry, %entry +match.arm.42: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 + br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82 -match.arm.44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +match.arm.43: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw18 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw16 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.71 [ - i64 19, label %dispatch.case.72 - i64 20, label %dispatch.case.73 - i64 21, label %dispatch.case.74 - i64 23, label %dispatch.case.75 - i64 25, label %dispatch.case.76 - i64 27, label %dispatch.case.77 - i64 30, label %dispatch.case.78 - i64 32, label %dispatch.case.79 - i64 34, label %dispatch.case.80 - i64 38, label %dispatch.case.81 - i64 40, label %dispatch.case.82 - i64 43, label %dispatch.case.83 + switch i64 %ua.raw16, label %dispatch.default.95 [ + i64 19, label %dispatch.case.96 + i64 20, label %dispatch.case.97 + i64 21, label %dispatch.case.98 + i64 23, label %dispatch.case.99 + i64 25, label %dispatch.case.100 + i64 27, label %dispatch.case.101 + i64 30, label %dispatch.case.102 + i64 32, label %dispatch.case.103 + i64 34, label %dispatch.case.104 + i64 39, label %dispatch.case.105 + i64 41, label %dispatch.case.106 + i64 44, label %dispatch.case.107 ] -match.arm.45: ; preds = %entry, %entry +match.arm.44: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw22 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw20 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw22, label %dispatch.default.145 [ - i64 36, label %dispatch.case.146 - i64 37, label %dispatch.case.147 + switch i64 %ua.raw20, label %dispatch.default.169 [ + i64 37, label %dispatch.case.170 + i64 38, label %dispatch.case.171 ] +match.arm.45: ; No predecessors! + unreachable + match.arm.46: ; No predecessors! unreachable -match.arm.47: ; No predecessors! - unreachable +match.arm.47: ; 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 + %allocaN = alloca { ptr, i64 }, align 8 + switch i64 %ua.raw24, label %dispatch.default.177 [ + i64 35, label %dispatch.case.178 + i64 52, label %dispatch.case.179 + i64 57, label %dispatch.case.180 + ] match.arm.48: ; preds = %entry, %entry %loadN = load { i64, i64 }, ptr %allocaN, align 8 - %ua.raw26 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw28 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw26, label %dispatch.default.153 [ - i64 51, label %dispatch.case.154 - i64 56, label %dispatch.case.155 + switch i64 %ua.raw28, label %dispatch.default.197 [ + i64 36, label %dispatch.case.198 + i64 50, label %dispatch.case.199 ] -match.arm.49: ; preds = %entry, %entry +match.arm.49: ; preds = %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.raw30 = extractvalue { i64, i64 } %loadN, 1 + %ua.raw32 = extractvalue { i64, i64 } %loadN, 1 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw30, label %dispatch.default.167 [ - i64 35, label %dispatch.case.168 - i64 49, label %dispatch.case.169 + switch i64 %ua.raw32, label %dispatch.default.211 [ + i64 18, label %dispatch.case.212 + i64 22, label %dispatch.case.213 + i64 24, label %dispatch.case.214 + i64 26, label %dispatch.case.215 + i64 28, label %dispatch.case.216 + i64 29, label %dispatch.case.217 + i64 31, label %dispatch.case.218 + i64 33, label %dispatch.case.219 + i64 42, label %dispatch.case.220 + i64 45, label %dispatch.case.221 + i64 46, label %dispatch.case.222 + i64 47, label %dispatch.case.223 + i64 48, label %dispatch.case.224 + i64 49, label %dispatch.case.225 + i64 51, label %dispatch.case.226 + i64 53, label %dispatch.case.227 + i64 54, label %dispatch.case.228 + i64 55, label %dispatch.case.229 + i64 56, label %dispatch.case.230 + i64 58, label %dispatch.case.231 ] -match.arm.50: ; preds = %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.raw34 = extractvalue { i64, i64 } %loadN, 1 - %loadN = load { i64, i64 }, ptr %alloca, align 8 - %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw34, label %dispatch.default.181 [ - i64 18, label %dispatch.case.182 - i64 22, label %dispatch.case.183 - i64 24, label %dispatch.case.184 - i64 26, label %dispatch.case.185 - i64 28, label %dispatch.case.186 - i64 29, label %dispatch.case.187 - i64 31, label %dispatch.case.188 - i64 33, label %dispatch.case.189 - i64 41, label %dispatch.case.190 - i64 44, label %dispatch.case.191 - i64 45, label %dispatch.case.192 - i64 46, label %dispatch.case.193 - i64 47, label %dispatch.case.194 - i64 48, label %dispatch.case.195 - i64 50, label %dispatch.case.196 - i64 52, label %dispatch.case.197 - i64 53, label %dispatch.case.198 - i64 54, label %dispatch.case.199 - i64 55, label %dispatch.case.200 - i64 57, label %dispatch.case.201 - ] - -match.arm.51: ; No predecessors! +match.arm.50: ; No predecessors! unreachable -match.arm.52: ; preds = %entry +match.arm.51: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 - %tn.gep = getelementptr inbounds [84 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid + %tn.gep = getelementptr inbounds [86 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid %tn.load = load { ptr, i64 }, ptr %tn.gep, align 8 store { ptr, i64 } %tn.load, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -match.unr.53: ; preds = %entry - br label %match.merge.38 +match.unr.52: ; preds = %entry + br label %match.merge.37 -f32.unbox.57: ; preds = %match.arm.43 - %ua.raw38 = extractvalue { i64, i64 } %loadN, 1 - %trN = trunc i64 %ua.raw38 to i32 +if.then.53: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw37 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @uint_to_string(ptr %0, i64 %ua.raw37) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.else.54: ; preds = %match.arm.39 + %loadN = load { i64, i64 }, ptr %alloca, align 8 + %ua.raw40 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %ua.raw40) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.55 + +if.merge.55: ; preds = %if.else.54, %if.then.53 + br label %match.merge.37 + +f32.unbox.81: ; preds = %match.arm.42 + %ua.raw42 = extractvalue { i64, i64 } %loadN, 1 + %trN = trunc i64 %ua.raw42 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.59 + br label %float.merge.83 -f64.unbox.58: ; preds = %match.arm.43 - %ua.raw39 = extractvalue { i64, i64 } %loadN, 1 - %iNd = bitcast i64 %ua.raw39 to double +f64.unbox.82: ; preds = %match.arm.42 + %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 + %iNd = bitcast i64 %ua.raw43 to double store double %iNd, ptr %allocaN, align 8 - br label %float.merge.59 + br label %float.merge.83 -float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 +float.merge.83: ; preds = %fN.unbox.82, %fN.unbox.81 %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.38 + br label %match.merge.37 -dispatch.merge.70: ; preds = %dispatch.case.83, %dispatch.case.82, %dispatch.case.81, %dispatch.case.80, %dispatch.case.79, %dispatch.case.78, %dispatch.case.77, %dispatch.case.76, %dispatch.case.75, %dispatch.case.74, %dispatch.case.73, %dispatch.case.72, %dispatch.default.71 +dispatch.merge.94: ; preds = %dispatch.case.107, %dispatch.case.106, %dispatch.case.105, %dispatch.case.104, %dispatch.case.103, %dispatch.case.102, %dispatch.case.101, %dispatch.case.100, %dispatch.case.99, %dispatch.case.98, %dispatch.case.97, %dispatch.case.96, %dispatch.default.95 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.71: ; preds = %match.arm.44 - store { ptr, i64 } { ptr @str.89, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.70 +dispatch.default.95: ; preds = %match.arm.43 + store { ptr, i64 } { ptr @str.92, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.94 -dispatch.case.72: ; preds = %match.arm.44 - %ua.raw43 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr44 = inttoptr i64 %ua.raw43 to ptr - %ua.load45 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr44, align 8 - %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load45) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 - -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.96: ; preds = %match.arm.43 %ua.raw47 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr48 = inttoptr i64 %ua.raw47 to ptr - %ua.load49 = load { ptr, ptr, ptr }, ptr %ua.ptr48, align 8 - %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load49) + %ua.load49 = load { { ptr, i64 }, i32, i32, { ptr, i64 } }, ptr %ua.ptr48, align 8 + %callN = call { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %ua.load49) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.97: ; preds = %match.arm.43 %ua.raw51 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr52 = inttoptr i64 %ua.raw51 to ptr - %ua.load53 = load {}, ptr %ua.ptr52, align 1 - %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load53) + %ua.load53 = load { ptr, ptr, ptr }, ptr %ua.ptr52, align 8 + %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load53) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.98: ; preds = %match.arm.43 %ua.raw55 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr56 = inttoptr i64 %ua.raw55 to ptr - %ua.load57 = load { i64 }, ptr %ua.ptr56, align 8 - %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load57) + %ua.load57 = load {}, ptr %ua.ptr56, align 1 + %callN = call { ptr, i64 } @struct_to_string__CAllocator(ptr %0, {} %ua.load57) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.99: ; preds = %match.arm.43 %ua.raw59 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr60 = inttoptr i64 %ua.raw59 to ptr - %ua.load61 = load { ptr, i64 }, ptr %ua.ptr60, align 8 - %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load61) + %ua.load61 = load { i64 }, ptr %ua.ptr60, align 8 + %callN = call { ptr, i64 } @struct_to_string__GPA(ptr %0, { i64 } %ua.load61) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.100: ; preds = %match.arm.43 %ua.raw63 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr64 = inttoptr i64 %ua.raw63 to ptr - %ua.load65 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr64, align 8 - %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load65) + %ua.load65 = load { ptr, i64 }, ptr %ua.ptr64, align 8 + %callN = call { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } %ua.load65) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.101: ; preds = %match.arm.43 %ua.raw67 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr68 = inttoptr i64 %ua.raw67 to ptr - %ua.load69 = load { ptr, i64, i64 }, ptr %ua.ptr68, align 8 - %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load69) + %ua.load69 = load { ptr, i64, { ptr, ptr, ptr } }, ptr %ua.ptr68, align 8 + %callN = call { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %ua.load69) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.102: ; preds = %match.arm.43 %ua.raw71 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr72 = inttoptr i64 %ua.raw71 to ptr - %ua.load73 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr72, align 8 - %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load73) + %ua.load73 = load { ptr, i64, i64 }, ptr %ua.ptr72, align 8 + %callN = call { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 } %ua.load73) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.103: ; preds = %match.arm.43 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr - %ua.load77 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr76, align 8 - %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load77) + %ua.load77 = load { { ptr, ptr, ptr }, i64, i64, i64 }, ptr %ua.ptr76, align 8 + %callN = call { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.104: ; preds = %match.arm.43 %ua.raw79 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr80 = inttoptr i64 %ua.raw79 to ptr - %ua.load81 = load {}, ptr %ua.ptr80, align 1 - %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load81) + %ua.load81 = load { { ptr, ptr, ptr }, ptr }, ptr %ua.ptr80, align 8 + %callN = call { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.82: ; preds = %match.arm.44 +dispatch.case.105: ; preds = %match.arm.43 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr %ua.load85 = load {}, ptr %ua.ptr84, align 1 - %callN = call { ptr, i64 } @struct_to_string__NSString(ptr %0, {} %ua.load85) + %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.case.83: ; preds = %match.arm.44 +dispatch.case.106: ; preds = %match.arm.43 %ua.raw87 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr88 = inttoptr i64 %ua.raw87 to ptr - %ua.load89 = load { i64, i64, i64 }, ptr %ua.ptr88, align 8 - %callN = call { ptr, i64 } @struct_to_string__Triple(ptr %0, { i64, i64, i64 } %ua.load89) + %ua.load89 = load {}, ptr %ua.ptr88, align 1 + %callN = call { ptr, i64 } @struct_to_string__NSString(ptr %0, {} %ua.load89) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.70 + br label %dispatch.merge.94 -dispatch.merge.144: ; preds = %dispatch.case.147, %dispatch.case.146, %dispatch.default.145 +dispatch.case.107: ; preds = %match.arm.43 + %ua.raw91 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr92 = inttoptr i64 %ua.raw91 to ptr + %ua.load93 = load { i64, i64, i64 }, ptr %ua.ptr92, align 8 + %callN = call { ptr, i64 } @struct_to_string__Triple(ptr %0, { i64, i64, i64 } %ua.load93) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.94 + +dispatch.merge.168: ; preds = %dispatch.case.171, %dispatch.case.170, %dispatch.default.169 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.145: ; preds = %match.arm.45 - store { ptr, i64 } { ptr @str.90, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.144 +dispatch.default.169: ; preds = %match.arm.44 + store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.168 -dispatch.case.146: ; preds = %match.arm.45 - %ua.raw92 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw92) +dispatch.case.170: ; preds = %match.arm.44 + %ua.raw96 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__OperatingSystem(ptr %0, i64 %ua.raw96) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 + br label %dispatch.merge.168 -dispatch.case.147: ; preds = %match.arm.45 - %ua.raw94 = extractvalue { i64, i64 } %loadN, 1 - %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw94) +dispatch.case.171: ; preds = %match.arm.44 + %ua.raw98 = extractvalue { i64, i64 } %loadN, 1 + %callN = call { ptr, i64 } @enum_to_string__Architecture(ptr %0, i64 %ua.raw98) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.144 + br label %dispatch.merge.168 -dispatch.merge.152: ; preds = %dispatch.case.155, %dispatch.case.154, %dispatch.default.153 +dispatch.merge.176: ; preds = %dispatch.case.180, %dispatch.case.179, %dispatch.case.178, %dispatch.default.177 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.153: ; preds = %match.arm.48 - store { ptr, i64 } { ptr @str.91, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.152 +dispatch.default.177: ; preds = %match.arm.47 + store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.176 -dispatch.case.154: ; preds = %match.arm.48 - %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr - %ua.load99 = load [1 x { i64, i64 }], ptr %ua.ptr98, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load99) - store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.152 - -dispatch.case.155: ; preds = %match.arm.48 +dispatch.case.178: ; preds = %match.arm.47 %ua.raw101 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr102 = inttoptr i64 %ua.raw101 to ptr - %ua.load103 = load [3 x { i64, i64 }], ptr %ua.ptr102, align 8 - %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load103) + %ua.load103 = load [4 x i64], ptr %ua.ptr102, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %ua.load103) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.152 + br label %dispatch.merge.176 -dispatch.merge.166: ; preds = %dispatch.case.169, %dispatch.case.168, %dispatch.default.167 +dispatch.case.179: ; preds = %match.arm.47 + %ua.raw105 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr106 = inttoptr i64 %ua.raw105 to ptr + %ua.load107 = load [1 x { i64, i64 }], ptr %ua.ptr106, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %ua.load107) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.176 + +dispatch.case.180: ; preds = %match.arm.47 + %ua.raw109 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr110 = inttoptr i64 %ua.raw109 to ptr + %ua.load111 = load [3 x { i64, i64 }], ptr %ua.ptr110, align 8 + %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load111) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %dispatch.merge.176 + +dispatch.merge.196: ; preds = %dispatch.case.199, %dispatch.case.198, %dispatch.default.197 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 - br label %match.merge.38 + br label %match.merge.37 -dispatch.default.167: ; preds = %match.arm.49 - store { ptr, i64 } { ptr @str.92, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.166 +dispatch.default.197: ; preds = %match.arm.48 + store { ptr, i64 } { ptr @str.95, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.196 -dispatch.case.168: ; preds = %match.arm.49 - %ua.raw106 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr107 = inttoptr i64 %ua.raw106 to ptr - %ua.load108 = load { ptr, i64 }, ptr %ua.ptr107, align 8 - %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load108) +dispatch.case.198: ; preds = %match.arm.48 + %ua.raw114 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr115 = inttoptr i64 %ua.raw114 to ptr + %ua.load116 = load { ptr, i64 }, ptr %ua.ptr115, align 8 + %callN = call { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %ua.load116) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.case.169: ; preds = %match.arm.49 - %ua.raw110 = extractvalue { i64, i64 } %loadN, 1 - %ua.ptr111 = inttoptr i64 %ua.raw110 to ptr - %ua.load112 = load { ptr, i64 }, ptr %ua.ptr111, align 8 - %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load112) +dispatch.case.199: ; preds = %match.arm.48 + %ua.raw118 = extractvalue { i64, i64 } %loadN, 1 + %ua.ptr119 = inttoptr i64 %ua.raw118 to ptr + %ua.load120 = load { ptr, i64 }, ptr %ua.ptr119, align 8 + %callN = call { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %ua.load120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.166 + br label %dispatch.merge.196 -dispatch.merge.180: ; preds = %dispatch.case.201, %dispatch.case.200, %dispatch.case.199, %dispatch.case.198, %dispatch.case.197, %dispatch.case.196, %dispatch.case.195, %dispatch.case.194, %dispatch.case.193, %dispatch.case.192, %dispatch.case.191, %dispatch.case.190, %dispatch.case.189, %dispatch.case.188, %dispatch.case.187, %dispatch.case.186, %dispatch.case.185, %dispatch.case.184, %dispatch.case.183, %dispatch.case.182, %dispatch.default.181 +dispatch.merge.210: ; preds = %dispatch.case.231, %dispatch.case.230, %dispatch.case.229, %dispatch.case.228, %dispatch.case.227, %dispatch.case.226, %dispatch.case.225, %dispatch.case.224, %dispatch.case.223, %dispatch.case.222, %dispatch.case.221, %dispatch.case.220, %dispatch.case.219, %dispatch.case.218, %dispatch.case.217, %dispatch.case.216, %dispatch.case.215, %dispatch.case.214, %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.38 + br label %match.merge.37 -dispatch.default.181: ; preds = %match.arm.50 - store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.180 +dispatch.default.211: ; preds = %match.arm.49 + store { ptr, i64 } { ptr @str.96, i64 0 }, ptr %allocaN, align 8 + br label %dispatch.merge.210 -dispatch.case.182: ; preds = %match.arm.50 - %ua.raw115 = extractvalue { i64, i64 } %loadN, 1 - %iNp = inttoptr i64 %ua.raw115 to ptr +dispatch.case.212: ; preds = %match.arm.49 + %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 + %iNp = inttoptr i64 %ua.raw123 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.180 + br label %dispatch.merge.210 -dispatch.case.183: ; preds = %match.arm.50 - %ua.raw117 = extractvalue { i64, i64 } %loadN, 1 - %iNp118 = inttoptr i64 %ua.raw117 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp118) +dispatch.case.213: ; preds = %match.arm.49 + %ua.raw125 = extractvalue { i64, i64 } %loadN, 1 + %iNp126 = inttoptr i64 %ua.raw125 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_CAllocator(ptr %0, ptr %iNp126) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.184: ; preds = %match.arm.50 - %ua.raw120 = extractvalue { i64, i64 } %loadN, 1 - %iNp121 = inttoptr i64 %ua.raw120 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp121) +dispatch.case.214: ; preds = %match.arm.49 + %ua.raw128 = extractvalue { i64, i64 } %loadN, 1 + %iNp129 = inttoptr i64 %ua.raw128 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_GPA(ptr %0, ptr %iNp129) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.185: ; preds = %match.arm.50 - %ua.raw123 = extractvalue { i64, i64 } %loadN, 1 - %iNp124 = inttoptr i64 %ua.raw123 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp124) +dispatch.case.215: ; preds = %match.arm.49 + %ua.raw131 = extractvalue { i64, i64 } %loadN, 1 + %iNp132 = inttoptr i64 %ua.raw131 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ArenaChunk(ptr %0, ptr %iNp132) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.186: ; preds = %match.arm.50 - %ua.raw126 = extractvalue { i64, i64 } %loadN, 1 - %iNp127 = inttoptr i64 %ua.raw126 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp127) +dispatch.case.216: ; preds = %match.arm.49 + %ua.raw134 = extractvalue { i64, i64 } %loadN, 1 + %iNp135 = inttoptr i64 %ua.raw134 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Arena(ptr %0, ptr %iNp135) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.187: ; preds = %match.arm.50 - %ua.raw129 = extractvalue { i64, i64 } %loadN, 1 - %iNp130 = inttoptr i64 %ua.raw129 to ptr - %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp130) +dispatch.case.217: ; preds = %match.arm.49 + %ua.raw137 = extractvalue { i64, i64 } %loadN, 1 + %iNp138 = inttoptr i64 %ua.raw137 to ptr + %callN = call { ptr, i64 } @pointer_to_string__mptr_u8(ptr %0, ptr %iNp138) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.188: ; preds = %match.arm.50 - %ua.raw132 = extractvalue { i64, i64 } %loadN, 1 - %iNp133 = inttoptr i64 %ua.raw132 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp133) +dispatch.case.218: ; preds = %match.arm.49 + %ua.raw140 = extractvalue { i64, i64 } %loadN, 1 + %iNp141 = inttoptr i64 %ua.raw140 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_BufAlloc(ptr %0, ptr %iNp141) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.189: ; preds = %match.arm.50 - %ua.raw135 = extractvalue { i64, i64 } %loadN, 1 - %iNp136 = inttoptr i64 %ua.raw135 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp136) +dispatch.case.219: ; preds = %match.arm.49 + %ua.raw143 = extractvalue { i64, i64 } %loadN, 1 + %iNp144 = inttoptr i64 %ua.raw143 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_TrackingAllocator(ptr %0, ptr %iNp144) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.190: ; preds = %match.arm.50 - %ua.raw138 = extractvalue { i64, i64 } %loadN, 1 - %iNp139 = inttoptr i64 %ua.raw138 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_NSString(ptr %0, ptr %iNp139) +dispatch.case.220: ; preds = %match.arm.49 + %ua.raw146 = extractvalue { i64, i64 } %loadN, 1 + %iNp147 = inttoptr i64 %ua.raw146 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_NSString(ptr %0, ptr %iNp147) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.191: ; preds = %match.arm.50 - %ua.raw141 = extractvalue { i64, i64 } %loadN, 1 - %iNp142 = inttoptr i64 %ua.raw141 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp142) +dispatch.case.221: ; preds = %match.arm.49 + %ua.raw149 = extractvalue { i64, i64 } %loadN, 1 + %iNp150 = inttoptr i64 %ua.raw149 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_CAllocator(ptr %0, ptr %iNp150) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.192: ; preds = %match.arm.50 - %ua.raw144 = extractvalue { i64, i64 } %loadN, 1 - %iNp145 = inttoptr i64 %ua.raw144 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp145) +dispatch.case.222: ; preds = %match.arm.49 + %ua.raw152 = extractvalue { i64, i64 } %loadN, 1 + %iNp153 = inttoptr i64 %ua.raw152 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_s64(ptr %0, ptr %iNp153) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.193: ; preds = %match.arm.50 - %ua.raw147 = extractvalue { i64, i64 } %loadN, 1 - %iNp148 = inttoptr i64 %ua.raw147 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp148) +dispatch.case.223: ; preds = %match.arm.49 + %ua.raw155 = extractvalue { i64, i64 } %loadN, 1 + %iNp156 = inttoptr i64 %ua.raw155 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_ptr_void(ptr %0, ptr %iNp156) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.194: ; preds = %match.arm.50 - %ua.raw150 = extractvalue { i64, i64 } %loadN, 1 - %iNp151 = inttoptr i64 %ua.raw150 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp151) +dispatch.case.224: ; preds = %match.arm.49 + %ua.raw158 = extractvalue { i64, i64 } %loadN, 1 + %iNp159 = inttoptr i64 %ua.raw158 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_bool(ptr %0, ptr %iNp159) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.195: ; preds = %match.arm.50 - %ua.raw153 = extractvalue { i64, i64 } %loadN, 1 - %iNp154 = inttoptr i64 %ua.raw153 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp154) +dispatch.case.225: ; preds = %match.arm.49 + %ua.raw161 = extractvalue { i64, i64 } %loadN, 1 + %iNp162 = inttoptr i64 %ua.raw161 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_string(ptr %0, ptr %iNp162) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.196: ; preds = %match.arm.50 - %ua.raw156 = extractvalue { i64, i64 } %loadN, 1 - %iNp157 = inttoptr i64 %ua.raw156 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp157) +dispatch.case.226: ; preds = %match.arm.49 + %ua.raw164 = extractvalue { i64, i64 } %loadN, 1 + %iNp165 = inttoptr i64 %ua.raw164 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Any(ptr %0, ptr %iNp165) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.197: ; preds = %match.arm.50 - %ua.raw159 = extractvalue { i64, i64 } %loadN, 1 - %iNp160 = inttoptr i64 %ua.raw159 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp160) +dispatch.case.227: ; preds = %match.arm.49 + %ua.raw167 = extractvalue { i64, i64 } %loadN, 1 + %iNp168 = inttoptr i64 %ua.raw167 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_1_Any(ptr %0, ptr %iNp168) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.198: ; preds = %match.arm.50 - %ua.raw162 = extractvalue { i64, i64 } %loadN, 1 - %iNp163 = inttoptr i64 %ua.raw162 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp163) +dispatch.case.228: ; preds = %match.arm.49 + %ua.raw170 = extractvalue { i64, i64 } %loadN, 1 + %iNp171 = inttoptr i64 %ua.raw170 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_SL_Any(ptr %0, ptr %iNp171) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.199: ; preds = %match.arm.50 - %ua.raw165 = extractvalue { i64, i64 } %loadN, 1 - %iNp166 = inttoptr i64 %ua.raw165 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp166) +dispatch.case.229: ; preds = %match.arm.49 + %ua.raw173 = extractvalue { i64, i64 } %loadN, 1 + %iNp174 = inttoptr i64 %ua.raw173 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_u8(ptr %0, ptr %iNp174) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.200: ; preds = %match.arm.50 - %ua.raw168 = extractvalue { i64, i64 } %loadN, 1 - %iNp169 = inttoptr i64 %ua.raw168 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_Triple(ptr %0, ptr %iNp169) +dispatch.case.230: ; preds = %match.arm.49 + %ua.raw176 = extractvalue { i64, i64 } %loadN, 1 + %iNp177 = inttoptr i64 %ua.raw176 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_Triple(ptr %0, ptr %iNp177) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 -dispatch.case.201: ; preds = %match.arm.50 - %ua.raw171 = extractvalue { i64, i64 } %loadN, 1 - %iNp172 = inttoptr i64 %ua.raw171 to ptr - %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp172) +dispatch.case.231: ; preds = %match.arm.49 + %ua.raw179 = extractvalue { i64, i64 } %loadN, 1 + %iNp180 = inttoptr i64 %ua.raw179 to ptr + %callN = call { ptr, i64 } @pointer_to_string__ptr_AR_3_Any(ptr %0, ptr %iNp180) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.180 + br label %dispatch.merge.210 } ; Function Attrs: nounwind @@ -1532,7 +1742,7 @@ entry: %alloca = alloca { ptr, i64 }, align 8 store { ptr, i64 } %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.94, i64 14 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.97, i64 14 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -1563,7 +1773,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -1581,9 +1791,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -1621,14 +1831,14 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.95, i64 36 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, 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 @@ -1636,7 +1846,7 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.96, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, 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 @@ -1646,13 +1856,13 @@ if.then.12: ; preds = %if.then.9 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.97, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 br label %if.merge.13 if.merge.13: ; preds = %if.then.12, %if.then.9 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.98, i64 43 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.101, 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 @@ -1660,7 +1870,7 @@ if.merge.13: ; preds = %if.then.12, %if.the %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.99, i64 5 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.102, i64 5 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -1672,83 +1882,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 - %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.100, 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.101, 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.102, 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.26 - -if.else.25: ; preds = %if.else.10 - %loadN = load i64, ptr %allocaN, align 8 - %addN = add i64 %loadN, 1 - store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 - -if.merge.26: ; preds = %if.else.25, %if.then.24 - br label %if.merge.11 - -if.then.27: ; preds = %if.else.4 - %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.30, label %if.else.31 - -if.else.28: ; preds = %if.else.4 - %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.merge.32, %if.else.28 - br label %if.merge.5 - -if.then.30: ; preds = %if.then.27 - %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.33, label %if.else.34 - -if.else.31: ; preds = %if.then.27 - %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.29 - -if.then.33: ; preds = %if.then.30 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.103, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1776,18 +1910,55 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.25 -if.else.34: ; preds = %if.then.30 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.25 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.25: ; preds = %if.else.24, %if.then.23 + br label %if.merge.11 -if.then.36: ; preds = %while.exit.2 +if.then.26: ; preds = %if.else.4 + %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.29, label %if.else.30 + +if.else.27: ; preds = %if.else.4 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.28 + +if.merge.28: ; preds = %if.merge.31, %if.else.27 + br label %if.merge.5 + +if.then.29: ; preds = %if.then.26 + %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.32, label %if.else.33 + +if.else.30: ; preds = %if.then.26 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.31 + +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 + +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.106, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -1800,6 +1971,45 @@ if.then.36: ; preds = %while.exit.2 %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 + %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.108, 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.34 + +if.else.33: ; preds = %if.then.29 + %loadN = load i64, ptr %allocaN, align 8 + %addN = add i64 %loadN, 1 + store i64 %addN, ptr %allocaN, align 8 + br label %if.merge.34 + +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 + +if.then.35: ; preds = %while.exit.2 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, 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.110, 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 @@ -1808,11 +2018,11 @@ if.then.36: ; preds = %while.exit.2 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.108, i64 4 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -1994,19 +2204,19 @@ entry: define i32 @main() #0 { entry: call void @__sx_objc_selector_init() - %call = call ptr @objc_getClass(ptr @str.109) + %call = call ptr @objc_getClass(ptr @str.112) %alloca = alloca ptr, align 8 store ptr %call, ptr %alloca, align 8 %load = load ptr, ptr %alloca, align 8 - %callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.110, i64 0) + %callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.113, i64 0) %allocaN = alloca ptr, align 8 store ptr %callN, ptr %allocaN, align 8 - %callN = call ptr @sel_registerName(ptr @str.111) + %callN = call ptr @sel_registerName(ptr @str.114) %allocaN = alloca ptr, align 8 store ptr %callN, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8 - %callN = call i1 @class_addMethod(ptr %loadN, ptr %loadN, ptr @triple_imp, ptr @str.112) + %callN = call i1 @class_addMethod(ptr %loadN, ptr %loadN, ptr @triple_imp, ptr @str.115) %allocaN = alloca i1, align 1 store i1 %callN, ptr %allocaN, align 1 %loadN = load i1, ptr %allocaN, align 1 @@ -2052,7 +2262,7 @@ entry: define internal void @print__ct_s7f3aff1506f207ab__pack_bool(ptr %0, i1 %1) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.113, i64 15 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.116, i64 15 }, ptr %alloca, align 8 %allocaN = alloca i1, align 1 store i1 %1, ptr %allocaN, align 1 %allocaN = alloca [1 x { i64, i64 }], align 8 @@ -2068,7 +2278,7 @@ entry: %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.114, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.117, 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) @@ -2096,7 +2306,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_0(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.115, i64 15 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.118, i64 15 }) ret { ptr, i64 } %call } @@ -2104,7 +2314,7 @@ entry: define internal void @print__ct_s337be2777a405332__pack_s64_s64_s64(ptr %0, i64 %1, i64 %2, i64 %3) #0 { entry: %alloca = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.116, i64 22 }, ptr %alloca, align 8 + store { ptr, i64 } { ptr @str.119, i64 22 }, ptr %alloca, align 8 %allocaN = alloca i64, align 8 store i64 %1, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 @@ -2131,7 +2341,7 @@ entry: %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.117, i64 0 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.120, 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 10) @@ -2180,7 +2390,7 @@ entry: ; Function Attrs: nounwind define internal { ptr, i64 } @__insert_1(ptr %0) #0 { entry: - %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.118, i64 22 }) + %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.121, i64 22 }) ret { ptr, i64 } %call } @@ -2189,35 +2399,35 @@ define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, entry: %alloca = alloca { { ptr, i64 }, i32, i32, { 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.119, i64 15 }, { ptr, i64 } { ptr @str.120, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.122, i64 15 }, { ptr, i64 } { ptr @str.123, 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.84 + br label %while.hdr.108 -while.hdr.84: ; preds = %fv.merge, %entry +while.hdr.108: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.85, label %while.exit.86 + br i1 %icmp, label %while.body.109, label %while.exit.110 -while.body.85: ; preds = %while.hdr.84 +while.body.109: ; preds = %while.hdr.108 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.87, label %if.merge.88 + br i1 %icmpN, label %if.then.111, label %if.merge.112 -while.exit.86: ; preds = %while.hdr.84 +while.exit.110: ; preds = %while.hdr.108 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 1 }) ret { ptr, i64 } %callN -if.then.87: ; preds = %while.body.85 +if.then.111: ; preds = %while.body.109 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.88 + br label %if.merge.112 -if.merge.88: ; preds = %if.then.87, %while.body.85 +if.merge.112: ; preds = %if.then.111, %while.body.109 %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 @@ -2225,7 +2435,7 @@ if.merge.88: ; preds = %if.then.87, %while. %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.126, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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 @@ -2245,12 +2455,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.84 + br label %while.hdr.108 -fv.default: ; preds = %if.merge.88 +fv.default: ; preds = %if.merge.112 br label %fv.merge -fv.case: ; preds = %if.merge.88 +fv.case: ; preds = %if.merge.112 %fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0 %ba.tmp = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8 @@ -2258,19 +2468,19 @@ fv.case: ; preds = %if.merge.88 %fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.88 +fv.case17: ; preds = %if.merge.112 %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.88 +fv.case20: ; preds = %if.merge.112 %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.88 +fv.case24: ; preds = %if.merge.112 %fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3 %ba.tmp26 = alloca { ptr, i64 }, align 8 store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8 @@ -2284,43 +2494,43 @@ define internal { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, pt 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.127, i64 9 }, { ptr, i64 } { ptr @str.128, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.130, i64 9 }, { ptr, i64 } { ptr @str.131, 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.89 + br label %while.hdr.113 -while.hdr.89: ; preds = %fv.merge, %entry +while.hdr.113: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.90, label %while.exit.91 + br i1 %icmp, label %while.body.114, label %while.exit.115 -while.body.90: ; preds = %while.hdr.89 +while.body.114: ; preds = %while.hdr.113 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.92, label %if.merge.93 + br i1 %icmpN, label %if.then.116, label %if.merge.117 -while.exit.91: ; preds = %while.hdr.89 +while.exit.115: ; preds = %while.hdr.113 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, i64 1 }) ret { ptr, i64 } %callN -if.then.92: ; preds = %while.body.90 +if.then.116: ; preds = %while.body.114 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.93 + br label %if.merge.117 -if.merge.93: ; preds = %if.then.92, %while.body.90 +if.merge.117: ; preds = %if.then.116, %while.body.114 %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.134, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.137, 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.135, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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 @@ -2339,24 +2549,24 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.89 + br label %while.hdr.113 -fv.default: ; preds = %if.merge.93 +fv.default: ; preds = %if.merge.117 br label %fv.merge -fv.case: ; preds = %if.merge.93 +fv.case: ; preds = %if.merge.117 %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.93 +fv.case17: ; preds = %if.merge.117 %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.93 +fv.case21: ; preds = %if.merge.117 %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 @@ -2368,43 +2578,43 @@ 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.136, i64 10 }, { ptr, i64 } { ptr @str.137, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.139, i64 10 }, { ptr, i64 } { ptr @str.140, 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.94 + br label %while.hdr.118 -while.hdr.94: ; preds = %if.merge.98, %entry +while.hdr.118: ; preds = %if.merge.122, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.95, label %while.exit.96 + br i1 %icmp, label %while.body.119, label %while.exit.120 -while.body.95: ; preds = %while.hdr.94 +while.body.119: ; preds = %while.hdr.118 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.97, label %if.merge.98 + br i1 %icmpN, label %if.then.121, label %if.merge.122 -while.exit.96: ; preds = %while.hdr.94 +while.exit.120: ; preds = %while.hdr.118 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, i64 1 }) ret { ptr, i64 } %callN -if.then.97: ; preds = %while.body.95 +if.then.121: ; preds = %while.body.119 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.98 + br label %if.merge.122 -if.merge.98: ; preds = %if.then.97, %while.body.95 +if.merge.122: ; preds = %if.then.121, %while.body.119 %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.140, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.143, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.144, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2415,7 +2625,7 @@ if.merge.98: ; preds = %if.then.97, %while. %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.94 + br label %while.hdr.118 } ; Function Attrs: nounwind @@ -2423,43 +2633,43 @@ 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.142, i64 3 }, { ptr, i64 } { ptr @str.143, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.145, i64 3 }, { ptr, i64 } { ptr @str.146, 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.99 + br label %while.hdr.123 -while.hdr.99: ; preds = %fv.merge, %entry +while.hdr.123: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.100, label %while.exit.101 + br i1 %icmp, label %while.body.124, label %while.exit.125 -while.body.100: ; preds = %while.hdr.99 +while.body.124: ; preds = %while.hdr.123 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.102, label %if.merge.103 + br i1 %icmpN, label %if.then.126, label %if.merge.127 -while.exit.101: ; preds = %while.hdr.99 +while.exit.125: ; preds = %while.hdr.123 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 1 }) ret { ptr, i64 } %callN -if.then.102: ; preds = %while.body.100 +if.then.126: ; preds = %while.body.124 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.103 + br label %if.merge.127 -if.merge.103: ; preds = %if.then.102, %while.body.100 +if.merge.127: ; preds = %if.then.126, %while.body.124 %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.147, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [1 x { ptr, i64 }], ptr @field_names.150, 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.148, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, 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 @@ -2476,12 +2686,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.99 + br label %while.hdr.123 -fv.default: ; preds = %if.merge.103 +fv.default: ; preds = %if.merge.127 br label %fv.merge -fv.case: ; preds = %if.merge.103 +fv.case: ; preds = %if.merge.127 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2492,43 +2702,43 @@ define internal { ptr, i64 } @struct_to_string__ArenaChunk(ptr %0, { ptr, i64 } 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.149, i64 10 }, { ptr, i64 } { ptr @str.150, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.152, i64 10 }, { ptr, i64 } { ptr @str.153, 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.104 + br label %while.hdr.128 -while.hdr.104: ; preds = %fv.merge, %entry +while.hdr.128: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.105, label %while.exit.106 + br i1 %icmp, label %while.body.129, label %while.exit.130 -while.body.105: ; preds = %while.hdr.104 +while.body.129: ; preds = %while.hdr.128 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.107, label %if.merge.108 + br i1 %icmpN, label %if.then.131, label %if.merge.132 -while.exit.106: ; preds = %while.hdr.104 +while.exit.130: ; preds = %while.hdr.128 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 1 }) ret { ptr, i64 } %callN -if.then.107: ; preds = %while.body.105 +if.then.131: ; preds = %while.body.129 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.108 + br label %if.merge.132 -if.merge.108: ; preds = %if.then.107, %while.body.105 +if.merge.132: ; preds = %if.then.131, %while.body.129 %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.155, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.158, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, 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 @@ -2546,18 +2756,18 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.104 + br label %while.hdr.128 -fv.default: ; preds = %if.merge.108 +fv.default: ; preds = %if.merge.132 br label %fv.merge -fv.case: ; preds = %if.merge.108 +fv.case: ; preds = %if.merge.132 %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.108 +fv.case17: ; preds = %if.merge.132 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2568,43 +2778,43 @@ define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, entry: %alloca = alloca { ptr, i64, { 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.157, i64 5 }, { ptr, i64 } { ptr @str.158, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 5 }, { ptr, i64 } { ptr @str.161, 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.109 + br label %while.hdr.133 -while.hdr.109: ; preds = %fv.merge, %entry +while.hdr.133: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.110, label %while.exit.111 + br i1 %icmp, label %while.body.134, label %while.exit.135 -while.body.110: ; preds = %while.hdr.109 +while.body.134: ; preds = %while.hdr.133 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.112, label %if.merge.113 + br i1 %icmpN, label %if.then.136, label %if.merge.137 -while.exit.111: ; preds = %while.hdr.109 +while.exit.135: ; preds = %while.hdr.133 %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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.162, i64 1 }) ret { ptr, i64 } %callN -if.then.112: ; preds = %while.body.110 +if.then.136: ; preds = %while.body.134 %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 }) + %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 - br label %if.merge.113 + br label %if.merge.137 -if.merge.113: ; preds = %if.then.112, %while.body.110 +if.merge.137: ; preds = %if.then.136, %while.body.134 %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.164, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.167, 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.165, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, 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 @@ -2623,23 +2833,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.109 + br label %while.hdr.133 -fv.default: ; preds = %if.merge.113 +fv.default: ; preds = %if.merge.137 br label %fv.merge -fv.case: ; preds = %if.merge.113 +fv.case: ; preds = %if.merge.137 %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.113 +fv.case17: ; preds = %if.merge.137 %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.113 +fv.case20: ; preds = %if.merge.137 %fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8 @@ -2653,43 +2863,43 @@ define internal { ptr, i64 } @struct_to_string__BufAlloc(ptr %0, { ptr, i64, i64 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.166, i64 8 }, { ptr, i64 } { ptr @str.167, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.169, i64 8 }, { ptr, i64 } { ptr @str.170, 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.114 + br label %while.hdr.138 -while.hdr.114: ; preds = %fv.merge, %entry +while.hdr.138: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.115, label %while.exit.116 + br i1 %icmp, label %while.body.139, label %while.exit.140 -while.body.115: ; preds = %while.hdr.114 +while.body.139: ; preds = %while.hdr.138 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.117, label %if.merge.118 + br i1 %icmpN, label %if.then.141, label %if.merge.142 -while.exit.116: ; preds = %while.hdr.114 +while.exit.140: ; preds = %while.hdr.138 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.171, i64 1 }) ret { ptr, i64 } %callN -if.then.117: ; preds = %while.body.115 +if.then.141: ; preds = %while.body.139 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.118 + br label %if.merge.142 -if.merge.118: ; preds = %if.then.117, %while.body.115 +if.merge.142: ; preds = %if.then.141, %while.body.139 %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.173, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.176, 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.174, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, 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 @@ -2708,23 +2918,23 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.114 + br label %while.hdr.138 -fv.default: ; preds = %if.merge.118 +fv.default: ; preds = %if.merge.142 br label %fv.merge -fv.case: ; preds = %if.merge.118 +fv.case: ; preds = %if.merge.142 %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.118 +fv.case17: ; preds = %if.merge.142 %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.118 +fv.case20: ; preds = %if.merge.142 %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 @@ -2735,43 +2945,43 @@ define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { pt entry: %alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, 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.175, i64 17 }, { ptr, i64 } { ptr @str.176, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.178, i64 17 }, { ptr, i64 } { ptr @str.179, 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.119 + br label %while.hdr.143 -while.hdr.119: ; preds = %fv.merge, %entry +while.hdr.143: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.120, label %while.exit.121 + br i1 %icmp, label %while.body.144, label %while.exit.145 -while.body.120: ; preds = %while.hdr.119 +while.body.144: ; preds = %while.hdr.143 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.122, label %if.merge.123 + br i1 %icmpN, label %if.then.146, label %if.merge.147 -while.exit.121: ; preds = %while.hdr.119 +while.exit.145: ; preds = %while.hdr.143 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.180, i64 1 }) ret { ptr, i64 } %callN -if.then.122: ; preds = %while.body.120 +if.then.146: ; preds = %while.body.144 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.181, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.123 + br label %if.merge.147 -if.merge.123: ; preds = %if.then.122, %while.body.120 +if.merge.147: ; preds = %if.then.146, %while.body.144 %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.183, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [4 x { ptr, i64 }], ptr @field_names.186, 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.184, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, 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 @@ -2791,12 +3001,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.119 + br label %while.hdr.143 -fv.default: ; preds = %if.merge.123 +fv.default: ; preds = %if.merge.147 br label %fv.merge -fv.case: ; preds = %if.merge.123 +fv.case: ; preds = %if.merge.147 %fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2804,17 +3014,17 @@ fv.case: ; preds = %if.merge.123 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.123 +fv.case17: ; preds = %if.merge.147 %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.123 +fv.case20: ; preds = %if.merge.147 %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.123 +fv.case23: ; preds = %if.merge.147 %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 @@ -2825,43 +3035,43 @@ define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, pt entry: %alloca = alloca { { ptr, 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.185, i64 7 }, { ptr, i64 } { ptr @str.186, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 7 }, { ptr, i64 } { ptr @str.189, 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.124 + br label %while.hdr.148 -while.hdr.124: ; preds = %fv.merge, %entry +while.hdr.148: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.125, label %while.exit.126 + br i1 %icmp, label %while.body.149, label %while.exit.150 -while.body.125: ; preds = %while.hdr.124 +while.body.149: ; preds = %while.hdr.148 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.127, label %if.merge.128 + br i1 %icmpN, label %if.then.151, label %if.merge.152 -while.exit.126: ; preds = %while.hdr.124 +while.exit.150: ; preds = %while.hdr.148 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.187, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.190, i64 1 }) ret { ptr, i64 } %callN -if.then.127: ; preds = %while.body.125 +if.then.151: ; preds = %while.body.149 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.188, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.191, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.128 + br label %if.merge.152 -if.merge.128: ; preds = %if.then.127, %while.body.125 +if.merge.152: ; preds = %if.then.151, %while.body.149 %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.191, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [2 x { ptr, i64 }], ptr @field_names.194, 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.192, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, 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 @@ -2879,12 +3089,12 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.124 + br label %while.hdr.148 -fv.default: ; preds = %if.merge.128 +fv.default: ; preds = %if.merge.152 br label %fv.merge -fv.case: ; preds = %if.merge.128 +fv.case: ; preds = %if.merge.152 %fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0 %ba.tmp = alloca { ptr, ptr, ptr }, align 8 store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8 @@ -2892,7 +3102,7 @@ fv.case: ; preds = %if.merge.128 %fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.128 +fv.case17: ; preds = %if.merge.152 %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 @@ -2904,43 +3114,43 @@ 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.193, i64 12 }, { ptr, i64 } { ptr @str.194, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.196, i64 12 }, { ptr, i64 } { ptr @str.197, 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.129 + br label %while.hdr.153 -while.hdr.129: ; preds = %if.merge.133, %entry +while.hdr.153: ; preds = %if.merge.157, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.130, label %while.exit.131 + br i1 %icmp, label %while.body.154, label %while.exit.155 -while.body.130: ; preds = %while.hdr.129 +while.body.154: ; preds = %while.hdr.153 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.132, label %if.merge.133 + br i1 %icmpN, label %if.then.156, label %if.merge.157 -while.exit.131: ; preds = %while.hdr.129 +while.exit.155: ; preds = %while.hdr.153 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.195, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.198, i64 1 }) ret { ptr, i64 } %callN -if.then.132: ; preds = %while.body.130 +if.then.156: ; preds = %while.body.154 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.196, i64 2 }) + %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 - br label %if.merge.133 + br label %if.merge.157 -if.merge.133: ; preds = %if.then.132, %while.body.130 +if.merge.157: ; preds = %if.then.156, %while.body.154 %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.197, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 x { ptr, i64 }], ptr @field_names.200, 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.198, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load {}, ptr %alloca, align 1 @@ -2951,7 +3161,7 @@ if.merge.133: ; preds = %if.then.132, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.129 + br label %while.hdr.153 } ; Function Attrs: nounwind @@ -2959,43 +3169,43 @@ 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.199, i64 8 }, { ptr, i64 } { ptr @str.200, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 8 }, { ptr, i64 } { ptr @str.203, 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.134 + br label %while.hdr.158 -while.hdr.134: ; preds = %if.merge.138, %entry +while.hdr.158: ; preds = %if.merge.162, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.135, label %while.exit.136 + br i1 %icmp, label %while.body.159, label %while.exit.160 -while.body.135: ; preds = %while.hdr.134 +while.body.159: ; preds = %while.hdr.158 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.137, label %if.merge.138 + br i1 %icmpN, label %if.then.161, label %if.merge.162 -while.exit.136: ; preds = %while.hdr.134 +while.exit.160: ; preds = %while.hdr.158 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.201, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.204, i64 1 }) ret { ptr, i64 } %callN -if.then.137: ; preds = %while.body.135 +if.then.161: ; preds = %while.body.159 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.202, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.205, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.138 + br label %if.merge.162 -if.merge.138: ; preds = %if.then.137, %while.body.135 +if.merge.162: ; preds = %if.then.161, %while.body.159 %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.203, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [0 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.204, i64 2 }) + %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 %alloca, align 1 @@ -3006,7 +3216,7 @@ if.merge.138: ; preds = %if.then.137, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.134 + br label %while.hdr.158 } ; Function Attrs: nounwind @@ -3014,43 +3224,43 @@ define internal { ptr, i64 } @struct_to_string__Triple(ptr %0, { i64, i64, i64 } entry: %alloca = alloca { i64, i64, i64 }, align 8 store { i64, i64, i64 } %1, ptr %alloca, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.205, i64 6 }, { ptr, i64 } { ptr @str.206, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.208, i64 6 }, { 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.139 + br label %while.hdr.163 -while.hdr.139: ; preds = %fv.merge, %entry +while.hdr.163: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.140, label %while.exit.141 + br i1 %icmp, label %while.body.164, label %while.exit.165 -while.body.140: ; preds = %while.hdr.139 +while.body.164: ; preds = %while.hdr.163 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.142, label %if.merge.143 + br i1 %icmpN, label %if.then.166, label %if.merge.167 -while.exit.141: ; preds = %while.hdr.139 +while.exit.165: ; preds = %while.hdr.163 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.207, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.210, i64 1 }) ret { ptr, i64 } %callN -if.then.142: ; preds = %while.body.140 +if.then.166: ; preds = %while.body.164 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.208, i64 2 }) + %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.143 + br label %if.merge.167 -if.merge.143: ; preds = %if.then.142, %while.body.140 +if.merge.167: ; preds = %if.then.166, %while.body.164 %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.212, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [3 x { ptr, i64 }], ptr @field_names.215, 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 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.216, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { i64, i64, i64 }, ptr %alloca, align 8 @@ -3069,22 +3279,22 @@ fv.merge: ; preds = %fv.default, %fv.cas %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.139 + br label %while.hdr.163 -fv.default: ; preds = %if.merge.143 +fv.default: ; preds = %if.merge.167 br label %fv.merge -fv.case: ; preds = %if.merge.143 +fv.case: ; preds = %if.merge.167 %fv.field = extractvalue { i64, i64, i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.143 +fv.case17: ; preds = %if.merge.167 %fv.field18 = extractvalue { 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.143 +fv.case20: ; preds = %if.merge.167 %fv.field21 = extractvalue { i64, i64, i64 } %loadN, 2 %fv.val22 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field21, 1 br label %fv.merge @@ -3099,9 +3309,9 @@ entry: %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.222, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [7 x { ptr, i64 }], ptr @field_names.225, 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.214, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, 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 @@ -3115,18 +3325,18 @@ entry: %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.148, label %if.merge.149 + br i1 %icmp, label %if.then.172, label %if.merge.173 -if.then.148: ; preds = %entry +if.then.172: ; 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.224, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.223, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.227, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, 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.149 + br label %if.merge.173 -if.merge.149: ; preds = %if.then.148, %entry +if.merge.173: ; preds = %if.then.172, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3140,9 +3350,9 @@ entry: %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.231, i64 0, i64 %loadN + %fn.gep = getelementptr inbounds [5 x { ptr, i64 }], ptr @field_names.234, 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.225, i64 1 }, { ptr, i64 } %fn.load) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.228, 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 @@ -3156,55 +3366,105 @@ entry: %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.150, label %if.merge.151 + br i1 %icmp, label %if.then.174, label %if.merge.175 -if.then.150: ; preds = %entry +if.then.174: ; 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.233, i64 1 }) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.232, i64 1 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 1 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.235, 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.151 + br label %if.merge.175 -if.merge.151: ; preds = %if.then.150, %entry +if.merge.175: ; preds = %if.then.174, %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 + store [4 x i64] %1, ptr %alloca, align 8 + %allocaN = alloca { ptr, i64 }, align 8 + store { ptr, i64 } { ptr @str.237, i64 1 }, ptr %allocaN, align 8 + %allocaN = alloca i64, align 8 + store i64 0, ptr %allocaN, align 8 + br label %while.hdr.181 + +while.hdr.181: ; preds = %if.merge.185, %entry + %load = load i64, ptr %allocaN, align 8 + %icmp = icmp slt i64 %load, 4 + br i1 %icmp, label %while.body.182, label %while.exit.183 + +while.body.182: ; preds = %while.hdr.181 + %loadN = load i64, ptr %allocaN, align 8 + %icmpN = icmp sgt i64 %loadN, 0 + br i1 %icmpN, label %if.then.184, label %if.merge.185 + +while.exit.183: ; preds = %while.hdr.181 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.238, i64 1 }) + ret { ptr, i64 } %call + +if.then.184: ; preds = %while.body.182 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.239, i64 2 }) + store { ptr, i64 } %callN, ptr %allocaN, align 8 + br label %if.merge.185 + +if.merge.185: ; preds = %if.then.184, %while.body.182 + %loadN = load { ptr, i64 }, ptr %allocaN, align 8 + %loadN = load [4 x i64], ptr %alloca, align 8 + %loadN = load i64, ptr %allocaN, align 8 + %ig.tmp = alloca [4 x i64], 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.181 +} + ; 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 store [1 x { i64, i64 }] %1, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - store { ptr, i64 } { ptr @str.234, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.240, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.156 + br label %while.hdr.186 -while.hdr.156: ; preds = %if.merge.160, %entry +while.hdr.186: ; preds = %if.merge.190, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.157, label %while.exit.158 + br i1 %icmp, label %while.body.187, label %while.exit.188 -while.body.157: ; preds = %while.hdr.156 +while.body.187: ; preds = %while.hdr.186 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.159, label %if.merge.160 + br i1 %icmpN, label %if.then.189, label %if.merge.190 -while.exit.158: ; preds = %while.hdr.156 +while.exit.188: ; preds = %while.hdr.186 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.235, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.241, i64 1 }) ret { ptr, i64 } %call -if.then.159: ; preds = %while.body.157 +if.then.189: ; preds = %while.body.187 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.236, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.242, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.160 + br label %if.merge.190 -if.merge.160: ; preds = %if.then.159, %while.body.157 +if.merge.190: ; preds = %if.then.189, %while.body.187 %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 @@ -3222,7 +3482,7 @@ if.merge.160: ; preds = %if.then.159, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.156 + br label %while.hdr.186 } ; Function Attrs: nounwind @@ -3231,33 +3491,33 @@ entry: %alloca = alloca [3 x { 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.237, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.243, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.161 + br label %while.hdr.191 -while.hdr.161: ; preds = %if.merge.165, %entry +while.hdr.191: ; preds = %if.merge.195, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.162, label %while.exit.163 + br i1 %icmp, label %while.body.192, label %while.exit.193 -while.body.162: ; preds = %while.hdr.161 +while.body.192: ; preds = %while.hdr.191 %loadN = load i64, ptr %allocaN, align 8 %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %if.then.164, label %if.merge.165 + br i1 %icmpN, label %if.then.194, label %if.merge.195 -while.exit.163: ; preds = %while.hdr.161 +while.exit.193: ; preds = %while.hdr.191 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.238, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.244, i64 1 }) ret { ptr, i64 } %call -if.then.164: ; preds = %while.body.162 +if.then.194: ; preds = %while.body.192 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.239, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.245, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.165 + br label %if.merge.195 -if.merge.165: ; preds = %if.then.164, %while.body.162 +if.merge.195: ; preds = %if.then.194, %while.body.192 %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 @@ -3275,7 +3535,7 @@ if.merge.165: ; preds = %if.then.164, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.161 + br label %while.hdr.191 } ; Function Attrs: nounwind @@ -3284,35 +3544,35 @@ 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.240, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.246, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.170 + br label %while.hdr.200 -while.hdr.170: ; preds = %if.merge.174, %entry +while.hdr.200: ; preds = %if.merge.204, %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.171, label %while.exit.172 + br i1 %icmp, label %while.body.201, label %while.exit.202 -while.body.171: ; preds = %while.hdr.170 +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.173, label %if.merge.174 + br i1 %icmpN, label %if.then.203, label %if.merge.204 -while.exit.172: ; preds = %while.hdr.170 +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.241, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.247, i64 1 }) ret { ptr, i64 } %call -if.then.173: ; preds = %while.body.171 +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.242, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.248, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.174 + br label %if.merge.204 -if.merge.174: ; preds = %if.then.173, %while.body.171 +if.merge.204: ; preds = %if.then.203, %while.body.201 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3329,7 +3589,7 @@ if.merge.174: ; preds = %if.then.173, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.170 + br label %while.hdr.200 } ; Function Attrs: nounwind @@ -3338,35 +3598,35 @@ 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.243, i64 1 }, ptr %allocaN, align 8 + store { ptr, i64 } { ptr @str.249, i64 1 }, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.175 + br label %while.hdr.205 -while.hdr.175: ; preds = %if.merge.179, %entry +while.hdr.205: ; preds = %if.merge.209, %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.176, label %while.exit.177 + br i1 %icmp, label %while.body.206, label %while.exit.207 -while.body.176: ; preds = %while.hdr.175 +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.178, label %if.merge.179 + br i1 %icmpN, label %if.then.208, label %if.merge.209 -while.exit.177: ; preds = %while.hdr.175 +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.244, i64 1 }) + %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.250, i64 1 }) ret { ptr, i64 } %call -if.then.178: ; preds = %while.body.176 +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.245, i64 2 }) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.251, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.179 + br label %if.merge.209 -if.merge.179: ; preds = %if.then.178, %while.body.176 +if.merge.209: ; preds = %if.then.208, %while.body.206 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3383,95 +3643,11 @@ if.merge.179: ; preds = %if.then.178, %while %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 1 store i64 %add, ptr %allocaN, align 8 - br label %while.hdr.175 + br label %while.hdr.205 } ; 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.202, label %if.else.203 - -if.then.202: ; preds = %entry - br label %if.merge.204 - -if.else.203: ; 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.248, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.247, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.204 - -if.merge.204: ; preds = %if.else.203, %if.then.202 - %bp = phi { ptr, i64 } [ { ptr @str.246, i64 4 }, %if.then.202 ], [ %callN, %if.else.203 ] - 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.226, label %if.else.227 - -if.then.226: ; preds = %entry - br label %if.merge.228 - -if.else.227: ; 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.251, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.228 - -if.merge.228: ; preds = %if.else.227, %if.then.226 - %bp = phi { ptr, i64 } [ { ptr @str.249, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] - 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.229, label %if.else.230 - -if.then.229: ; preds = %entry - br label %if.merge.231 - -if.else.230: ; 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.254, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.231 - -if.merge.231: ; preds = %if.else.230, %if.then.229 - %bp = phi { ptr, i64 } [ { ptr @str.252, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] - 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 @@ -3489,12 +3665,96 @@ if.then.232: ; preds = %entry if.else.233: ; 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.257, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 11 }, { ptr, i64 } %callN) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.254, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 5 }, { ptr, i64 } %callN) br label %if.merge.234 if.merge.234: ; preds = %if.else.233, %if.then.232 - %bp = phi { ptr, i64 } [ { ptr @str.255, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] + %bp = phi { ptr, i64 } [ { ptr @str.252, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] + 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.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.257, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.250 + +if.merge.250: ; preds = %if.else.249, %if.then.248 + %bp = phi { ptr, i64 } [ { ptr @str.255, i64 4 }, %if.then.248 ], [ %callN, %if.else.249 ] + 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.251, label %if.else.252 + +if.then.251: ; preds = %entry + br label %if.merge.253 + +if.else.252: ; 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.260, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.253 + +if.merge.253: ; preds = %if.else.252, %if.then.251 + %bp = phi { ptr, i64 } [ { ptr @str.258, i64 4 }, %if.then.251 ], [ %callN, %if.else.252 ] + 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.254, label %if.else.255 + +if.then.254: ; preds = %entry + br label %if.merge.256 + +if.else.255: ; 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.263, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.262, i64 11 }, { ptr, i64 } %callN) + br label %if.merge.256 + +if.merge.256: ; preds = %if.else.255, %if.then.254 + %bp = phi { ptr, i64 } [ { ptr @str.261, i64 4 }, %if.then.254 ], [ %callN, %if.else.255 ] ret { ptr, i64 } %bp } @@ -3509,20 +3769,20 @@ entry: 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.235, label %if.else.236 + br i1 %icmp, label %if.then.257, label %if.else.258 -if.then.235: ; preds = %entry - br label %if.merge.237 +if.then.257: ; preds = %entry + br label %if.merge.259 -if.else.236: ; preds = %entry +if.else.258: ; 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.260, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.237 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.266, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.265, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.259 -if.merge.237: ; preds = %if.else.236, %if.then.235 - %bp = phi { ptr, i64 } [ { ptr @str.258, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] +if.merge.259: ; preds = %if.else.258, %if.then.257 + %bp = phi { ptr, i64 } [ { ptr @str.264, i64 4 }, %if.then.257 ], [ %callN, %if.else.258 ] ret { ptr, i64 } %bp } @@ -3536,20 +3796,20 @@ entry: 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.238, label %if.else.239 + br i1 %icmp, label %if.then.260, label %if.else.261 -if.then.238: ; preds = %entry - br label %if.merge.240 +if.then.260: ; preds = %entry + br label %if.merge.262 -if.else.239: ; preds = %entry +if.else.261: ; 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.263, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.262, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.240 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.269, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.262 -if.merge.240: ; preds = %if.else.239, %if.then.238 - %bp = phi { ptr, i64 } [ { ptr @str.261, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] +if.merge.262: ; preds = %if.else.261, %if.then.260 + %bp = phi { ptr, i64 } [ { ptr @str.267, i64 4 }, %if.then.260 ], [ %callN, %if.else.261 ] ret { ptr, i64 } %bp } @@ -3564,20 +3824,20 @@ entry: 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.241, label %if.else.242 + br i1 %icmp, label %if.then.263, label %if.else.264 -if.then.241: ; preds = %entry - br label %if.merge.243 +if.then.263: ; preds = %entry + br label %if.merge.265 -if.else.242: ; preds = %entry +if.else.264: ; 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.266, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.265, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.243 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.272, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.265 -if.merge.243: ; preds = %if.else.242, %if.then.241 - %bp = phi { ptr, i64 } [ { ptr @str.264, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] +if.merge.265: ; preds = %if.else.264, %if.then.263 + %bp = phi { ptr, i64 } [ { ptr @str.270, i64 4 }, %if.then.263 ], [ %callN, %if.else.264 ] ret { ptr, i64 } %bp } @@ -3592,20 +3852,20 @@ entry: 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.244, label %if.else.245 + br i1 %icmp, label %if.then.266, label %if.else.267 -if.then.244: ; preds = %entry - br label %if.merge.246 +if.then.266: ; preds = %entry + br label %if.merge.268 -if.else.245: ; preds = %entry +if.else.267: ; 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.269, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.246 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.275, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.274, i64 18 }, { ptr, i64 } %callN) + br label %if.merge.268 -if.merge.246: ; preds = %if.else.245, %if.then.244 - %bp = phi { ptr, i64 } [ { ptr @str.267, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] +if.merge.268: ; preds = %if.else.267, %if.then.266 + %bp = phi { ptr, i64 } [ { ptr @str.273, i64 4 }, %if.then.266 ], [ %callN, %if.else.267 ] ret { ptr, i64 } %bp } @@ -3620,20 +3880,20 @@ entry: 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.247, label %if.else.248 + br i1 %icmp, label %if.then.269, label %if.else.270 -if.then.247: ; preds = %entry - br label %if.merge.249 +if.then.269: ; preds = %entry + br label %if.merge.271 -if.else.248: ; preds = %entry +if.else.270: ; 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.272, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.249 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.278, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.277, i64 9 }, { ptr, i64 } %callN) + br label %if.merge.271 -if.merge.249: ; preds = %if.else.248, %if.then.247 - %bp = phi { ptr, i64 } [ { ptr @str.270, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] +if.merge.271: ; preds = %if.else.270, %if.then.269 + %bp = phi { ptr, i64 } [ { ptr @str.276, i64 4 }, %if.then.269 ], [ %callN, %if.else.270 ] ret { ptr, i64 } %bp } @@ -3648,20 +3908,20 @@ entry: 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.250, label %if.else.251 + br i1 %icmp, label %if.then.272, label %if.else.273 -if.then.250: ; preds = %entry - br label %if.merge.252 +if.then.272: ; preds = %entry + br label %if.merge.274 -if.else.251: ; preds = %entry +if.else.273: ; 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.275, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.274, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.252 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.281, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 12 }, { ptr, i64 } %callN) + br label %if.merge.274 -if.merge.252: ; preds = %if.else.251, %if.then.250 - %bp = phi { ptr, i64 } [ { ptr @str.273, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] +if.merge.274: ; preds = %if.else.273, %if.then.272 + %bp = phi { ptr, i64 } [ { ptr @str.279, i64 4 }, %if.then.272 ], [ %callN, %if.else.273 ] ret { ptr, i64 } %bp } @@ -3676,20 +3936,20 @@ entry: 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.253, label %if.else.254 + br i1 %icmp, label %if.then.275, label %if.else.276 -if.then.253: ; preds = %entry - br label %if.merge.255 +if.then.275: ; preds = %entry + br label %if.merge.277 -if.else.254: ; preds = %entry +if.else.276: ; 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.278, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.277, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.255 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.284, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.277 -if.merge.255: ; preds = %if.else.254, %if.then.253 - %bp = phi { ptr, i64 } [ { ptr @str.276, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] +if.merge.277: ; preds = %if.else.276, %if.then.275 + %bp = phi { ptr, i64 } [ { ptr @str.282, i64 4 }, %if.then.275 ], [ %callN, %if.else.276 ] ret { ptr, i64 } %bp } @@ -3704,20 +3964,20 @@ entry: 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.256, label %if.else.257 + br i1 %icmp, label %if.then.278, label %if.else.279 -if.then.256: ; preds = %entry - br label %if.merge.258 +if.then.278: ; preds = %entry + br label %if.merge.280 -if.else.257: ; preds = %entry +if.else.279: ; 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.281, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.258 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.287, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.280 -if.merge.258: ; preds = %if.else.257, %if.then.256 - %bp = phi { ptr, i64 } [ { ptr @str.279, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] +if.merge.280: ; preds = %if.else.279, %if.then.278 + %bp = phi { ptr, i64 } [ { ptr @str.285, i64 4 }, %if.then.278 ], [ %callN, %if.else.279 ] ret { ptr, i64 } %bp } @@ -3732,20 +3992,20 @@ entry: 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.259, label %if.else.260 + br i1 %icmp, label %if.then.281, label %if.else.282 -if.then.259: ; preds = %entry - br label %if.merge.261 +if.then.281: ; preds = %entry + br label %if.merge.283 -if.else.260: ; preds = %entry +if.else.282: ; 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.284, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.261 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.290, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.289, i64 5 }, { ptr, i64 } %callN) + br label %if.merge.283 -if.merge.261: ; preds = %if.else.260, %if.then.259 - %bp = phi { ptr, i64 } [ { ptr @str.282, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] +if.merge.283: ; preds = %if.else.282, %if.then.281 + %bp = phi { ptr, i64 } [ { ptr @str.288, i64 4 }, %if.then.281 ], [ %callN, %if.else.282 ] ret { ptr, i64 } %bp } @@ -3760,20 +4020,20 @@ entry: 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.262, label %if.else.263 + br i1 %icmp, label %if.then.284, label %if.else.285 -if.then.262: ; preds = %entry - br label %if.merge.264 +if.then.284: ; preds = %entry + br label %if.merge.286 -if.else.263: ; preds = %entry +if.else.285: ; 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.287, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.264 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.293, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.292, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.286 -if.merge.264: ; preds = %if.else.263, %if.then.262 - %bp = phi { ptr, i64 } [ { ptr @str.285, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] +if.merge.286: ; preds = %if.else.285, %if.then.284 + %bp = phi { ptr, i64 } [ { ptr @str.291, i64 4 }, %if.then.284 ], [ %callN, %if.else.285 ] ret { ptr, i64 } %bp } @@ -3788,20 +4048,20 @@ entry: 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.265, label %if.else.266 + br i1 %icmp, label %if.then.287, label %if.else.288 -if.then.265: ; preds = %entry - br label %if.merge.267 +if.then.287: ; preds = %entry + br label %if.merge.289 -if.else.266: ; preds = %entry +if.else.288: ; 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.290, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.289, i64 4 }, { ptr, i64 } %callN) - br label %if.merge.267 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.296, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.295, i64 4 }, { ptr, i64 } %callN) + br label %if.merge.289 -if.merge.267: ; preds = %if.else.266, %if.then.265 - %bp = phi { ptr, i64 } [ { ptr @str.288, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] +if.merge.289: ; preds = %if.else.288, %if.then.287 + %bp = phi { ptr, i64 } [ { ptr @str.294, i64 4 }, %if.then.287 ], [ %callN, %if.else.288 ] ret { ptr, i64 } %bp } @@ -3816,20 +4076,20 @@ entry: 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.268, label %if.else.269 + br i1 %icmp, label %if.then.290, label %if.else.291 -if.then.268: ; preds = %entry - br label %if.merge.270 +if.then.290: ; preds = %entry + br label %if.merge.292 -if.else.269: ; preds = %entry +if.else.291: ; 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.293, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.292, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.270 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.299, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.298, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.292 -if.merge.270: ; preds = %if.else.269, %if.then.268 - %bp = phi { ptr, i64 } [ { ptr @str.291, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] +if.merge.292: ; preds = %if.else.291, %if.then.290 + %bp = phi { ptr, i64 } [ { ptr @str.297, i64 4 }, %if.then.290 ], [ %callN, %if.else.291 ] ret { ptr, i64 } %bp } @@ -3844,20 +4104,20 @@ entry: 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.271, label %if.else.272 + br i1 %icmp, label %if.then.293, label %if.else.294 -if.then.271: ; preds = %entry - br label %if.merge.273 +if.then.293: ; preds = %entry + br label %if.merge.295 -if.else.272: ; preds = %entry +if.else.294: ; 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.296, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.295, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.273 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.302, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 6 }, { ptr, i64 } %callN) + br label %if.merge.295 -if.merge.273: ; preds = %if.else.272, %if.then.271 - %bp = phi { ptr, i64 } [ { ptr @str.294, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] +if.merge.295: ; preds = %if.else.294, %if.then.293 + %bp = phi { ptr, i64 } [ { ptr @str.300, i64 4 }, %if.then.293 ], [ %callN, %if.else.294 ] ret { ptr, i64 } %bp } @@ -3872,20 +4132,20 @@ entry: 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.274, label %if.else.275 + br i1 %icmp, label %if.then.296, label %if.else.297 -if.then.274: ; preds = %entry - br label %if.merge.276 +if.then.296: ; preds = %entry + br label %if.merge.298 -if.else.275: ; preds = %entry +if.else.297: ; 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.299, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.298, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.276 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.305, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 3 }, { ptr, i64 } %callN) + br label %if.merge.298 -if.merge.276: ; preds = %if.else.275, %if.then.274 - %bp = phi { ptr, i64 } [ { ptr @str.297, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] +if.merge.298: ; preds = %if.else.297, %if.then.296 + %bp = phi { ptr, i64 } [ { ptr @str.303, i64 4 }, %if.then.296 ], [ %callN, %if.else.297 ] ret { ptr, i64 } %bp } @@ -3900,20 +4160,20 @@ entry: 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.277, label %if.else.278 + br i1 %icmp, label %if.then.299, label %if.else.300 -if.then.277: ; preds = %entry - br label %if.merge.279 +if.then.299: ; preds = %entry + br label %if.merge.301 -if.else.278: ; preds = %entry +if.else.300: ; 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.302, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.301, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.279 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.308, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.307, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.301 -if.merge.279: ; preds = %if.else.278, %if.then.277 - %bp = phi { ptr, i64 } [ { ptr @str.300, i64 4 }, %if.then.277 ], [ %callN, %if.else.278 ] +if.merge.301: ; preds = %if.else.300, %if.then.299 + %bp = phi { ptr, i64 } [ { ptr @str.306, i64 4 }, %if.then.299 ], [ %callN, %if.else.300 ] ret { ptr, i64 } %bp } @@ -3928,20 +4188,20 @@ entry: 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.280, label %if.else.281 + br i1 %icmp, label %if.then.302, label %if.else.303 -if.then.280: ; preds = %entry - br label %if.merge.282 +if.then.302: ; preds = %entry + br label %if.merge.304 -if.else.281: ; preds = %entry +if.else.303: ; 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.305, i64 3 }, { ptr, i64 } %call) - %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.304, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.282 + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.311, i64 3 }, { ptr, i64 } %call) + %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.310, i64 7 }, { ptr, i64 } %callN) + br label %if.merge.304 -if.merge.282: ; preds = %if.else.281, %if.then.280 - %bp = phi { ptr, i64 } [ { ptr @str.303, i64 4 }, %if.then.280 ], [ %callN, %if.else.281 ] +if.merge.304: ; preds = %if.else.303, %if.then.302 + %bp = phi { ptr, i64 } [ { ptr @str.309, i64 4 }, %if.then.302 ], [ %callN, %if.else.303 ] ret { ptr, i64 } %bp } diff --git a/examples/expected/1347-ffi-objc-dsl-07-mangling-table.ir b/examples/expected/1347-ffi-objc-dsl-07-mangling-table.ir index d6958ab..e2f8750 100644 --- a/examples/expected/1347-ffi-objc-dsl-07-mangling-table.ir +++ b/examples/expected/1347-ffi-objc-dsl-07-mangling-table.ir @@ -191,38 +191,43 @@ if.merge.15: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.16, label %if.else.17 - -if.then.16: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.18 - -if.else.17: ; preds = %if.merge.15 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.18 - -if.merge.18: ; preds = %if.else.17, %if.then.16 - %bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.19 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.16 -while.hdr.19: ; preds = %while.body.20, %if.merge.18 +while.hdr.16: ; preds = %if.merge.20, %if.merge.15 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.20, label %while.exit.21 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.17, label %while.exit.18 -while.body.20: ; preds = %while.hdr.19 +while.body.17: ; preds = %while.hdr.16 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.19, label %if.merge.20 + +while.exit.18: ; preds = %while.hdr.16 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.21, label %if.merge.22 + +if.then.19: ; preds = %while.body.17 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.20 + +if.merge.20: ; preds = %if.then.19, %while.body.17 + %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 @@ -235,34 +240,32 @@ while.body.20: ; preds = %while.hdr.19 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.19 + br label %while.hdr.16 -while.exit.21: ; preds = %while.hdr.19 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.22, label %if.merge.23 - -if.then.22: ; preds = %while.exit.21 +if.then.21: ; preds = %while.exit.18 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.23 + br label %if.merge.22 -if.merge.23: ; preds = %if.then.22, %while.exit.21 +if.merge.22: ; preds = %if.then.21, %while.exit.18 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -272,6 +275,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -385,7 +391,7 @@ while.exit.2: ; preds = %while.hdr.0 %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.36, label %if.merge.37 + br i1 %icmpN, label %if.then.35, label %if.merge.36 if.then.3: ; preds = %while.body.1 %loadN = load i64, ptr %allocaN, align 8 @@ -403,9 +409,9 @@ if.else.4: ; preds = %while.body.1 %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.27, label %if.else.28 + br i1 %icmpN, label %if.then.26, label %if.else.27 -if.merge.5: ; preds = %if.merge.29, %if.merge.8 +if.merge.5: ; preds = %if.merge.28, %if.merge.8 br label %while.hdr.0 if.then.6: ; preds = %if.then.3 @@ -443,9 +449,9 @@ if.else.10: ; preds = %if.then.6 %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.24, label %if.else.25 + br i1 %icmpN, label %if.then.23, label %if.else.24 -if.merge.11: ; preds = %if.merge.26, %if.merge.13 +if.merge.11: ; preds = %if.merge.25, %if.merge.13 br label %if.merge.8 if.then.12: ; preds = %if.then.9 @@ -494,7 +500,7 @@ if.merge.13: ; preds = %if.then.12, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.11 -if.then.24: ; preds = %if.else.10 +if.then.23: ; preds = %if.else.10 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -522,35 +528,35 @@ if.then.24: ; preds = %if.else.10 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.26 + br label %if.merge.25 -if.else.25: ; preds = %if.else.10 +if.else.24: ; preds = %if.else.10 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.26 + br label %if.merge.25 -if.merge.26: ; preds = %if.else.25, %if.then.24 +if.merge.25: ; preds = %if.else.24, %if.then.23 br label %if.merge.11 -if.then.27: ; preds = %if.else.4 +if.then.26: ; preds = %if.else.4 %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.30, label %if.else.31 + br i1 %icmpN, label %if.then.29, label %if.else.30 -if.else.28: ; preds = %if.else.4 +if.else.27: ; preds = %if.else.4 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.29 + br label %if.merge.28 -if.merge.29: ; preds = %if.merge.32, %if.else.28 +if.merge.28: ; preds = %if.merge.31, %if.else.27 br label %if.merge.5 -if.then.30: ; preds = %if.then.27 +if.then.29: ; preds = %if.then.26 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -559,18 +565,18 @@ if.then.30: ; preds = %if.then.27 %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.33, label %if.else.34 + br i1 %icmpN, label %if.then.32, label %if.else.33 -if.else.31: ; preds = %if.then.27 +if.else.30: ; preds = %if.then.26 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.32 + br label %if.merge.31 -if.merge.32: ; preds = %if.merge.35, %if.else.31 - br label %if.merge.29 +if.merge.31: ; preds = %if.merge.34, %if.else.30 + br label %if.merge.28 -if.then.33: ; preds = %if.then.30 +if.then.32: ; preds = %if.then.29 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -598,18 +604,18 @@ if.then.33: ; preds = %if.then.30 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.35 + br label %if.merge.34 -if.else.34: ; preds = %if.then.30 +if.else.33: ; preds = %if.then.29 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.35 + br label %if.merge.34 -if.merge.35: ; preds = %if.else.34, %if.then.33 - br label %if.merge.32 +if.merge.34: ; preds = %if.else.33, %if.then.32 + br label %if.merge.31 -if.then.36: ; preds = %while.exit.2 +if.then.35: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -632,9 +638,9 @@ if.then.36: ; preds = %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.then.36, %while.exit.2 +if.merge.36: ; preds = %if.then.35, %while.exit.2 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1402-ffi-jni-call-03-methodid-sharing.ir b/examples/expected/1402-ffi-jni-call-03-methodid-sharing.ir index 2f48be8..086ecfc 100644 --- a/examples/expected/1402-ffi-jni-call-03-methodid-sharing.ir +++ b/examples/expected/1402-ffi-jni-call-03-methodid-sharing.ir @@ -164,38 +164,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -208,34 +213,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -245,6 +248,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -358,7 +364,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -376,9 +382,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -416,9 +422,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -467,7 +473,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -495,35 +501,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -532,18 +538,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -571,18 +577,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -605,9 +611,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1403-ffi-jni-call-04-jint-return.ir b/examples/expected/1403-ffi-jni-call-04-jint-return.ir index e557414..f0965d4 100644 --- a/examples/expected/1403-ffi-jni-call-04-jint-return.ir +++ b/examples/expected/1403-ffi-jni-call-04-jint-return.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1404-ffi-jni-call-05-jlong-return.ir b/examples/expected/1404-ffi-jni-call-05-jlong-return.ir index e0b052b..0344725 100644 --- a/examples/expected/1404-ffi-jni-call-05-jlong-return.ir +++ b/examples/expected/1404-ffi-jni-call-05-jlong-return.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1405-ffi-jni-call-06-jdouble-return.ir b/examples/expected/1405-ffi-jni-call-06-jdouble-return.ir index ca9b11f..26558b7 100644 --- a/examples/expected/1405-ffi-jni-call-06-jdouble-return.ir +++ b/examples/expected/1405-ffi-jni-call-06-jdouble-return.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1406-ffi-jni-call-07-jboolean-return.ir b/examples/expected/1406-ffi-jni-call-07-jboolean-return.ir index a97bbcd..aca6390 100644 --- a/examples/expected/1406-ffi-jni-call-07-jboolean-return.ir +++ b/examples/expected/1406-ffi-jni-call-07-jboolean-return.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1407-ffi-jni-call-08-jobject-return.ir b/examples/expected/1407-ffi-jni-call-08-jobject-return.ir index 84e73eb..65ca09b 100644 --- a/examples/expected/1407-ffi-jni-call-08-jobject-return.ir +++ b/examples/expected/1407-ffi-jni-call-08-jobject-return.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1408-ffi-jni-call-09-static.ir b/examples/expected/1408-ffi-jni-call-09-static.ir index 634b382..5e92c38 100644 --- a/examples/expected/1408-ffi-jni-call-09-static.ir +++ b/examples/expected/1408-ffi-jni-call-09-static.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1418-ffi-jni-class-08-call.ir b/examples/expected/1418-ffi-jni-class-08-call.ir index 9c4411a..20eb039 100644 --- a/examples/expected/1418-ffi-jni-class-08-call.ir +++ b/examples/expected/1418-ffi-jni-class-08-call.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1421-ffi-jni-env-02-lexical-direct.ir b/examples/expected/1421-ffi-jni-env-02-lexical-direct.ir index 56dfaa1..ad00e91 100644 --- a/examples/expected/1421-ffi-jni-env-02-lexical-direct.ir +++ b/examples/expected/1421-ffi-jni-env-02-lexical-direct.ir @@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry %icmpN = icmp slt i64 %loadN, 0 %allocaN = alloca i1, align 1 store i1 %icmpN, ptr %allocaN, align 1 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.18, label %if.else.19 - -if.then.18: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - %sub = sub i64 0, %loadN - br label %if.merge.20 - -if.else.19: ; preds = %if.merge.17 - %loadN = load i64, ptr %alloca, align 8 - br label %if.merge.20 - -if.merge.20: ; preds = %if.else.19, %if.then.18 - %bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ] - %allocaN = alloca i64, align 8 - store i64 %bp, ptr %allocaN, align 8 %call = call { ptr, i64 } @cstring(ptr %0, i64 20) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 %allocaN = alloca i64, align 8 store i64 19, ptr %allocaN, align 8 - br label %while.hdr.21 + %loadN = load i64, ptr %alloca, align 8 + %allocaN = alloca i64, align 8 + store i64 %loadN, ptr %allocaN, align 8 + br label %while.hdr.18 -while.hdr.21: ; preds = %while.body.22, %if.merge.20 +while.hdr.18: ; preds = %if.merge.22, %if.merge.17 %loadN = load i64, ptr %allocaN, align 8 - %icmpN = icmp sgt i64 %loadN, 0 - br i1 %icmpN, label %while.body.22, label %while.exit.23 + %icmpN = icmp ne i64 %loadN, 0 + br i1 %icmpN, label %while.body.19, label %while.exit.20 -while.body.22: ; preds = %while.hdr.21 +while.body.19: ; preds = %while.hdr.18 %loadN = load i64, ptr %allocaN, align 8 %srem = srem i64 %loadN, 10 - %add = add i64 %srem, 48 + %allocaN = alloca i64, align 8 + 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.21, label %if.merge.22 + +while.exit.20: ; preds = %while.hdr.18 + %loadN = load i1, ptr %allocaN, align 1 + br i1 %loadN, label %if.then.23, label %if.merge.24 + +if.then.21: ; preds = %while.body.19 + %loadN = load i64, ptr %allocaN, align 8 + %sub = sub i64 0, %loadN + store i64 %sub, ptr %allocaN, align 8 + br label %if.merge.22 + +if.merge.22: ; preds = %if.then.21, %while.body.19 + %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 @@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, 1 store i64 %subN, ptr %allocaN, align 8 - br label %while.hdr.21 + br label %while.hdr.18 -while.exit.23: ; preds = %while.hdr.21 - %loadN = load i1, ptr %allocaN, align 1 - br i1 %loadN, label %if.then.24, label %if.merge.25 - -if.then.24: ; preds = %while.exit.23 +if.then.23: ; preds = %while.exit.20 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 - %igp.data21 = extractvalue { ptr, i64 } %loadN, 0 - %igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN - store i8 45, ptr %igp.ptr22, align 1 + %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.25 + br label %if.merge.24 -if.merge.25: ; preds = %if.then.24, %while.exit.23 +if.merge.24: ; preds = %if.then.23, %while.exit.20 %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 20, %loadN - %subN = sub i64 %subN, 1 + %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 +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 @@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2 %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.38, label %if.merge.39 + br i1 %icmpN, label %if.then.37, label %if.merge.38 if.then.5: ; preds = %while.body.3 %loadN = load i64, ptr %allocaN, align 8 @@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3 %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.29, label %if.else.30 + br i1 %icmpN, label %if.then.28, label %if.else.29 -if.merge.7: ; preds = %if.merge.31, %if.merge.10 +if.merge.7: ; preds = %if.merge.30, %if.merge.10 br label %while.hdr.2 if.then.8: ; preds = %if.then.5 @@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8 %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.26, label %if.else.27 + br i1 %icmpN, label %if.then.25, label %if.else.26 -if.merge.13: ; preds = %if.merge.28, %if.merge.15 +if.merge.13: ; preds = %if.merge.27, %if.merge.15 br label %if.merge.10 if.then.14: ; preds = %if.then.11 @@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the store i64 %loadN, ptr %allocaN, align 8 br label %if.merge.13 -if.then.26: ; preds = %if.else.12 +if.then.25: ; preds = %if.else.12 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12 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.28 + br label %if.merge.27 -if.else.27: ; preds = %if.else.12 +if.else.26: ; preds = %if.else.12 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.28 + br label %if.merge.27 -if.merge.28: ; preds = %if.else.27, %if.then.26 +if.merge.27: ; preds = %if.else.26, %if.then.25 br label %if.merge.13 -if.then.29: ; preds = %if.else.6 +if.then.28: ; preds = %if.else.6 %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.32, label %if.else.33 + br i1 %icmpN, label %if.then.31, label %if.else.32 -if.else.30: ; preds = %if.else.6 +if.else.29: ; preds = %if.else.6 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.31 + br label %if.merge.30 -if.merge.31: ; preds = %if.merge.34, %if.else.30 +if.merge.30: ; preds = %if.merge.33, %if.else.29 br label %if.merge.7 -if.then.32: ; preds = %if.then.29 +if.then.31: ; preds = %if.then.28 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 @@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29 %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.35, label %if.else.36 + br i1 %icmpN, label %if.then.34, label %if.else.35 -if.else.33: ; preds = %if.then.29 +if.else.32: ; preds = %if.then.28 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.34 + br label %if.merge.33 -if.merge.34: ; preds = %if.merge.37, %if.else.33 - br label %if.merge.31 +if.merge.33: ; preds = %if.merge.36, %if.else.32 + br label %if.merge.30 -if.then.35: ; preds = %if.then.32 +if.then.34: ; preds = %if.then.31 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32 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.37 + br label %if.merge.36 -if.else.36: ; preds = %if.then.32 +if.else.35: ; preds = %if.then.31 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 1 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.37 + br label %if.merge.36 -if.merge.37: ; preds = %if.else.36, %if.then.35 - br label %if.merge.34 +if.merge.36: ; preds = %if.else.35, %if.then.34 + br label %if.merge.33 -if.then.38: ; preds = %while.exit.4 +if.then.37: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 @@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.39 + br label %if.merge.38 -if.merge.39: ; preds = %if.then.38, %while.exit.4 +if.merge.38: ; preds = %if.then.37, %while.exit.4 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } diff --git a/examples/expected/1425-ffi-jni-main-03-ctor.ir b/examples/expected/1425-ffi-jni-main-03-ctor.ir index 69ca251..ecb249e 100644 --- a/examples/expected/1425-ffi-jni-main-03-ctor.ir +++ b/examples/expected/1425-ffi-jni-main-03-ctor.ir @@ -106,6 +106,9 @@ declare ptr @cstring(ptr, i64) #0 ; Function Attrs: nounwind declare ptr @int_to_string(ptr, i64) #0 +; Function Attrs: nounwind +declare ptr @uint_to_string(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @bool_to_string(ptr, i1) #0 @@ -115,6 +118,9 @@ declare ptr @float_to_string(ptr, double) #0 ; Function Attrs: nounwind declare void @hex_group(ptr, ptr, i64, i64) #0 +; Function Attrs: nounwind +declare [4 x i64] @decompose_u16x4(ptr, i64) #0 + ; Function Attrs: nounwind declare ptr @int_to_hex_string(ptr, i64) #0 diff --git a/issues/0090-int-formatter-extremes.md b/issues/0090-int-formatter-extremes.md new file mode 100644 index 0000000..383228f --- /dev/null +++ b/issues/0090-int-formatter-extremes.md @@ -0,0 +1,83 @@ +# 0090 — integer formatter can't render i64::MIN or unsigned all-ones + +> STATUS: RESOLVED (F0.8). Both extremes now render correctly: +> `s64.min` → `-9223372036854775808`, `u64.max` → `18446744073709551615`. +> +> **Root cause.** +> - Symptom 1 (i64::MIN): `std.int_to_string` computed the magnitude as +> `0 - n`, which overflows for `s64::MIN` (its magnitude is +> unrepresentable as a positive s64) — the value stayed negative, the +> `while v > 0` loop ran zero times, and only the `-` was emitted. +> - Symptom 2 (unsigned all-ones): `any_to_string`'s `case int:` arm +> formatted every integer as s64 (`int_to_string(xx val)`); there was no +> way to tell a `u64` from an `s64`, so an all-ones u64 printed as `-1`. +> +> **Fix per file.** +> - `library/modules/std.sx` — `int_to_string` now extracts digits straight +> from `n` (taking `|n % 10|` per digit, `n` truncates toward zero) so it +> never negates `s64::MIN`. Added `uint_to_string` (unsigned decimal via +> long-division-by-10 over four 16-bit limbs) and `decompose_u16x4` (the +> shared 16-bit-limb split, now reused by `int_to_hex_string` too). +> `any_to_string`'s `case int:` routes through the new +> `type_is_unsigned(type)` query to pick the unsigned vs signed formatter. +> Declared `type_is_unsigned :: ($T: Type) -> bool #builtin;`. +> - `src/ir/types.zig` — `TypeTable.isUnsignedInt` (canonical signedness +> predicate; single source of truth). +> - `src/ir/inst.zig` — `type_is_unsigned` BuiltinId. +> - `src/ir/calls.zig` — register `type_is_unsigned` as a `.bool` reflection +> builtin. +> - `src/ir/lower.zig` — `tryLowerReflectionCall` arm: static fold + +> dynamic `callBuiltin`. +> - `src/ir/interp.zig` — interp arm (reads the boxed TypeId / `type_of` +> aggregate shape). +> - `src/ir/emit_llvm.zig` + `src/backend/llvm/reflection.zig` + +> `src/backend/llvm/ops.zig` — lazy `[N x i1]` `__sx_type_is_unsigned` +> table built from `isUnsignedInt`; runtime arm GEPs in at the TypeId. +> +> **Regression test.** `examples/0046-basic-int-formatter-extremes.sx` +> pins both extremes plus a width spread (s8/s16/s32 + u8/u16/u32/u64, +> mins/maxes, 0, ordinary values). Unit tests: `isUnsignedInt` in +> `src/ir/types.test.zig`. + +> STATUS (original): OPEN. Pre-existing + orthogonal; surfaced (not introduced) by NL.1. +> Manager-verified independent of the numeric-limit accessors. Scheduled separately. + +## Symptom + +`print("{}", x)` mis-renders the integer extremes the s64-based formatter can't +represent: +- `i64::MIN` (`-9223372036854775808`) prints a bare `-` (the minus sign with NO + digits). +- An unsigned all-ones value (e.g. `u64.max` = 18446744073709551615) prints `-1` + (the i64 bit-reinterpretation), not the unsigned decimal. + +## Reproduction (no numeric-limit accessor needed — pre-existing) + +```sx +#import "modules/std.sx"; +main :: () { + x := -9223372036854775807 - 1; // i64::MIN + print("min={}\n", x); // prints "min=-" (should be -9223372036854775808) +} +``` + +`u64.max` (via the NL.1 accessor, or any all-ones u64) prints `-1` for the same +root reason. + +## Root cause (suspected) + +The integer-to-string path is `s64`-based (`std.int_to_string` / the `{}` formatter +takes `s64`): it negates the value to print the sign, but `-i64::MIN` overflows, and +it has no unsigned-aware path so an all-ones u64 is read as `-1`. Needs a width/ +signedness-aware integer formatter (format by the value's actual integer TYPE: +unsigned types print the unsigned decimal; signed `MIN` is handled without negating). + +## Investigation prompt + +Make the `{}` integer formatter type-aware: render an unsigned integer as its +unsigned decimal (all 64 bits for u64), and handle signed `MIN` without the +`-MIN` overflow (e.g. format the magnitude via unsigned arithmetic, or special-case +MIN). Verify: `i64::MIN` prints `-9223372036854775808`; `u64.max` prints +`18446744073709551615`; existing numeric output (incl. the NL.1 examples, which +assert via bit-reinterpret) stays green. Likely area: the formatter / `int_to_string` +in the std print path and/or the comptime `{}` lowering. diff --git a/library/modules/std.sx b/library/modules/std.sx index f613413..9d2a238 100644 --- a/library/modules/std.sx +++ b/library/modules/std.sx @@ -20,6 +20,7 @@ field_count :: ($T: Type) -> s64 #builtin; field_name :: ($T: Type, idx: s64) -> string #builtin; field_value :: (s: $T, idx: s64) -> Any #builtin; is_flags :: ($T: Type) -> bool #builtin; +type_is_unsigned :: ($T: Type) -> bool #builtin; field_value_int :: ($T: Type, idx: s64) -> s64 #builtin; field_index :: ($T: Type, val: T) -> s64 #builtin; error_tag_name :: (e: $T) -> string #builtin; @@ -67,17 +68,50 @@ alloc_slice :: ($T: Type, count: s64) -> []T { int_to_string :: (n: s64) -> string { if n == 0 { return "0"; } neg := n < 0; - v := if neg then 0 - n else n; - // Single pass: fill digits backwards into temp string, then substr + // Extract digits straight from `n` without ever negating it: `0 - n` + // overflows for s64::MIN (its magnitude is unrepresentable as a + // positive s64). sx `%` truncates toward zero, so `n % 10` keeps n's + // sign; take each remainder's absolute value for the digit. tmp := cstring(20); i := 19; - while v > 0 { - tmp[i] = (v % 10) + 48; + v := n; + while v != 0 { + d := v % 10; + if d < 0 { d = 0 - d; } + tmp[i] = d + 48; v = v / 10; i -= 1; } if neg { tmp[i] = 45; i -= 1; } - substr(tmp, i + 1, 20 - i - 1) + substr(tmp, i + 1, 19 - i) +} + +// Unsigned decimal of `n`'s 64 bits — renders the full u64 range +// (0 .. 18446744073709551615). Used by `any_to_string` for unsigned +// integer values, which an s64-based formatter would misread (e.g. a +// u64 all-ones value as -1). +uint_to_string :: (n: s64) -> string { + if n == 0 { return "0"; } + // Long division by 10 across the four unsigned 16-bit limbs, most + // significant first. Each step folds the running remainder into the + // next limb; the per-step accumulator stays well within s64 + // (max 9*65536 + 65535), so signed `/` and `%` are exact. + g := decompose_u16x4(n); + tmp := cstring(20); + i := 19; + while g[0] != 0 or g[1] != 0 or g[2] != 0 or g[3] != 0 { + rem := 0; + k := 0; + while k < 4 { + acc := rem * 65536 + g[k]; + g[k] = acc / 10; + rem = acc % 10; + k += 1; + } + tmp[i] = rem + 48; + i -= 1; + } + substr(tmp, i + 1, 19 - i) } bool_to_string :: (b: bool) -> string { @@ -121,10 +155,13 @@ hex_group :: (buf: string, offset: s64, val: s64) { } } -int_to_hex_string :: (n: s64) -> string { - if n == 0 { return "0"; } - - // Split into four 16-bit groups for correct unsigned treatment +// Split the 64 bits of `n` into four unsigned 16-bit limbs, most +// significant first: [g3, g2, g1, g0]. A negative input is treated as +// its two's-complement unsigned bit pattern — each limb is corrected +// back into 0..65535 — so callers get correct unsigned arithmetic out +// of a signed-only integer type. Shared by the hex and unsigned-decimal +// formatters. +decompose_u16x4 :: (n: s64) -> [4]s64 { g0 := n % 65536; if g0 < 0 { g0 = g0 + 65536; } r1 := (n - g0) / 65536; @@ -136,12 +173,23 @@ int_to_hex_string :: (n: s64) -> string { r3 := (r2 - g2) / 65536; g3 := r3 % 65536; if g3 < 0 { g3 = g3 + 65536; } + limbs : [4]s64 = ---; + limbs[0] = g3; + limbs[1] = g2; + limbs[2] = g1; + limbs[3] = g0; + limbs +} +int_to_hex_string :: (n: s64) -> string { + if n == 0 { return "0"; } + + g := decompose_u16x4(n); buf := cstring(16); - hex_group(buf, 0, g3); - hex_group(buf, 4, g2); - hex_group(buf, 8, g1); - hex_group(buf, 12, g0); + hex_group(buf, 0, g[0]); + hex_group(buf, 4, g[1]); + hex_group(buf, 8, g[2]); + hex_group(buf, 12, g[3]); // Skip leading zeros (keep at least 1 digit) start := 0; @@ -319,7 +367,10 @@ any_to_string :: (val: Any) -> string { type := type_of(val); if type == { case void: result = ""; - case int: result = int_to_string(xx val); + case int: { + if type_is_unsigned(type) { result = uint_to_string(xx val); } + else { result = int_to_string(xx val); } + } case string: { s : string = xx val; result = s; } case bool: result = bool_to_string(xx val); case float: result = float_to_string(xx val); diff --git a/readme.md b/readme.md index c49d890..ad1dffb 100644 --- a/readme.md +++ b/readme.md @@ -429,10 +429,10 @@ The standard library (`modules/std.sx`) provides: - **I/O**: `print(fmt, args...)`, `out(str)` - **Collections**: `List($T)` (dynamic array) -- **Strings**: `concat`, `substr`, `int_to_string`, `float_to_string`, `cstring` +- **Strings**: `concat`, `substr`, `int_to_string`, `uint_to_string`, `float_to_string`, `cstring` - **Memory**: `Allocator` protocol, `GPA` (general purpose), `Arena` (bump allocator) - **Math**: `sqrt`, `sin`, `cos` -- **Introspection**: `type_of`, `type_name`, `field_count`, `field_name`, `field_value`, `size_of` +- **Introspection**: `type_of`, `type_name`, `type_is_unsigned`, `field_count`, `field_name`, `field_value`, `size_of` ### Command-line interface (`modules/std/cli.sx`) diff --git a/specs.md b/specs.md index ffe9320..c961690 100644 --- a/specs.md +++ b/specs.md @@ -277,8 +277,12 @@ n := u64.max; // 18446744073709551615 (all-ones) (`18446744073709551615`), which exceeds the signed `i64` range used for integer constants; it is stored as that exact bit pattern carrying the `u64` type (it reinterprets to `-1` as an `s64`). It cannot be written as a decimal - literal, and the default integer formatter (which is `s64`-based) prints it as - `-1`; assert it exactly through a bit reinterpret (`union { u: u64; s: s64 }`). + literal. The default integer formatter is signedness-aware: + `print("{}", u64.max)` renders the full unsigned decimal + `18446744073709551615` (and any unsigned value across all 64 bits), while a + signed value — including `s64.min` — prints with all its digits. A bit + reinterpret (`union { u: u64; s: s64 }`) is still a valid way to inspect the + raw bits, but is no longer needed merely to print the value. - **Non-numeric receivers.** `.min` / `.max` on a non-numeric type (`bool`, `string`, a pointer, a `struct`, `void`, an `enum`) is a compile error, never a silent value. diff --git a/src/backend/llvm/ops.zig b/src/backend/llvm/ops.zig index aa3d3bb..0630279 100644 --- a/src/backend/llvm/ops.zig +++ b/src/backend/llvm/ops.zig @@ -1064,6 +1064,27 @@ pub const Ops = struct { const eq_res = c.LLVMBuildICmp(self.e.builder, c.LLVMIntEQ, a, b, "te.eq"); self.e.mapRef(eq_res); }, + .type_is_unsigned => { + // Dynamic `type_is_unsigned(t)`: extract the TypeId from + // the arg (Any-boxed Type → value field, or bare i64 + // index), GEP into the `__sx_type_is_unsigned` table, load + // the i1. Mirrors the `type_name` runtime lookup. + const arg_ref = bi.args[0]; + const arg_val = self.e.resolveRef(arg_ref); + const tid_idx = switch (self.e.reflectArgRepr(arg_ref)) { + .unresolved => @panic("type_is_unsigned: reflection arg IR-type unresolved — a type-resolution failure reached LLVM emission without a diagnostic"), + .boxed => c.LLVMBuildExtractValue(self.e.builder, arg_val, 1, "tiu.tid"), + .bare => arg_val, + }; + const arr_global = self.e.reflection().getOrBuildTypeIsUnsignedArray(); + const arr_len = self.e.type_is_unsigned_array_len; + const arr_ty = c.LLVMArrayType(self.e.cached_i1, arr_len); + const zero = c.LLVMConstInt(self.e.cached_i64, 0, 0); + var indices = [2]c.LLVMValueRef{ zero, tid_idx }; + const gep = c.LLVMBuildInBoundsGEP2(self.e.builder, arr_ty, arr_global, &indices, 2, "tiu.gep"); + const result = c.LLVMBuildLoad2(self.e.builder, self.e.cached_i1, gep, "tiu.load"); + self.e.mapRef(result); + }, .has_impl => { // Runtime has_impl needs a protocol-map // snapshot — not wired yet. Silent false for diff --git a/src/backend/llvm/reflection.zig b/src/backend/llvm/reflection.zig index e85f2ac..cb08d21 100644 --- a/src/backend/llvm/reflection.zig +++ b/src/backend/llvm/reflection.zig @@ -60,6 +60,36 @@ pub const Reflection = struct { return global; } + /// Lazy global `[N x i1]` indexed by `TypeId.index()`: 1 where the type is + /// an unsigned integer. Built on the first dynamic `type_is_unsigned(t)` + /// call site; the runtime arm GEPs in at the boxed TypeId and loads the bit. + /// Derives every entry from `TypeTable.isUnsignedInt` — the single + /// signedness source-of-truth, so no per-index magic lives in the emitter. + pub fn getOrBuildTypeIsUnsignedArray(self: Reflection) c.LLVMValueRef { + if (self.e.type_is_unsigned_array) |g| return g; + + const n: u32 = @intCast(self.e.ir_mod.types.infos.items.len); + var field_vals = std.ArrayList(c.LLVMValueRef).empty; + defer field_vals.deinit(self.e.alloc); + var i: u32 = 0; + while (i < n) : (i += 1) { + const tid = TypeId.fromIndex(i); + const bit: u64 = if (self.e.ir_mod.types.isUnsignedInt(tid)) 1 else 0; + field_vals.append(self.e.alloc, c.LLVMConstInt(self.e.cached_i1, bit, 0)) catch unreachable; + } + + const arr_ty = c.LLVMArrayType(self.e.cached_i1, n); + const arr_init = c.LLVMConstArray(self.e.cached_i1, field_vals.items.ptr, n); + const global = c.LLVMAddGlobal(self.e.llvm_module, arr_ty, "__sx_type_is_unsigned"); + c.LLVMSetInitializer(global, arr_init); + c.LLVMSetGlobalConstant(global, 1); + c.LLVMSetLinkage(global, c.LLVMPrivateLinkage); + + self.e.type_is_unsigned_array = global; + self.e.type_is_unsigned_array_len = n; + return global; + } + /// Build (or return cached) a global constant array of {ptr, i64} string values /// for the field names of a struct type. pub fn getOrBuildFieldNameArray(self: Reflection, struct_type: TypeId) c.LLVMValueRef { diff --git a/src/ir/calls.zig b/src/ir/calls.zig index 1af5687..e906c13 100644 --- a/src/ir/calls.zig +++ b/src/ir/calls.zig @@ -146,6 +146,7 @@ pub const CallResolver = struct { if (std.mem.eql(u8, bare_name, "__trace_resolve_frame")) return refl(bare_name, self.l.module.types.findByName(self.l.module.types.internString("Frame")) orelse .unresolved); if (std.mem.eql(u8, bare_name, "is_flags")) return refl(bare_name, .bool); + if (std.mem.eql(u8, bare_name, "type_is_unsigned")) return refl(bare_name, .bool); if (std.mem.eql(u8, bare_name, "type_of")) return refl(bare_name, .any); if (std.mem.eql(u8, bare_name, "field_value")) return refl(bare_name, .any); // Generic function — infer return type via type bindings. diff --git a/src/ir/emit_llvm.zig b/src/ir/emit_llvm.zig index 508ef13..c67c8af 100644 --- a/src/ir/emit_llvm.zig +++ b/src/ir/emit_llvm.zig @@ -182,6 +182,12 @@ pub const LLVMEmitter = struct { type_name_array: ?c.LLVMValueRef = null, type_name_array_len: u32 = 0, + // Lazy global `[N x i1]` indexed by TypeId.index(): true where the + // type is an unsigned integer. Built on the first dynamic + // `type_is_unsigned(t)` call site (the `{}` formatter's int branch). + type_is_unsigned_array: ?c.LLVMValueRef = null, + type_is_unsigned_array_len: u32 = 0, + // Target configuration (stored for ABI decisions during emission) target_config: TargetConfig, diff --git a/src/ir/inst.zig b/src/ir/inst.zig index 3910c5c..f3e85d8 100644 --- a/src/ir/inst.zig +++ b/src/ir/inst.zig @@ -404,6 +404,7 @@ pub const BuiltinId = enum(u16) { // implements them; emit_llvm bails (Type is comptime-only). type_name, type_eq, + type_is_unsigned, has_impl, }; diff --git a/src/ir/interp.zig b/src/ir/interp.zig index 096d4b0..9a8ec79 100644 --- a/src/ir/interp.zig +++ b/src/ir/interp.zig @@ -1900,6 +1900,27 @@ pub const Interpreter = struct { const b = frame.getRef(bi.args[1]).asTypeId() orelse return bailDetail("comptime type_eq: second argument is not a Type value"); return .{ .value = .{ .boolean = a == b } }; }, + .type_is_unsigned => { + if (bi.args.len < 1) return bailDetail("comptime type_is_unsigned: missing argument"); + const arg = frame.getRef(bi.args[0]); + // Accept a bare `.type_tag`, an Any-boxed Type (`{tag, + // .type_tag}`), or the `type_of(x)` shape (`{.int(any), + // .int(typeid)}`) — the last is what `any_to_string`'s + // `case int:` passes, where the inner TypeId is carried + // as a plain integer rather than a `.type_tag`. + const tid = blk: { + if (arg.asTypeId()) |t| break :blk t; + if (arg == .aggregate) { + const fields = arg.aggregate; + if (fields.len >= 2) { + if (fields[1].asTypeId()) |t| break :blk t; + if (fields[1].asInt()) |iv| break :blk TypeId.fromIndex(@intCast(iv)); + } + } + return bailDetail("comptime type_is_unsigned: argument is not a Type value (expected `.type_tag`, Any-boxed Type, or `type_of(x)`)"); + }; + return .{ .value = .{ .boolean = self.module.types.isUnsignedInt(tid) } }; + }, .has_impl => { // has_impl at interp time needs access to the host's // protocol-registration maps (protocol_thunk_map + diff --git a/src/ir/lower.zig b/src/ir/lower.zig index c031547..9f05218 100644 --- a/src/ir/lower.zig +++ b/src/ir/lower.zig @@ -10561,6 +10561,24 @@ pub const Lowering = struct { const b = self.resolveTypeArg(c.args[1]); return self.builder.constBool(a == b); } + if (std.mem.eql(u8, name, "type_is_unsigned")) { + // type_is_unsigned(T) → bool. Static arg (a spelled type or + // generic binding) folds to const_bool at lower time. A + // dynamic arg — the runtime `type_of(x)` value queried by + // `any_to_string` — emits a `callBuiltin`: the interp reads + // the boxed TypeId, LLVM GEPs a per-type signedness table. + // Mirrors `type_name`'s static/dynamic split; the same split + // avoids `resolveTypeArg`'s silent `.s64` default lying about + // a runtime Type value. + if (c.args.len < 1) return self.builder.constBool(false); + if (self.isStaticTypeArg(c.args[0])) { + const ty = self.resolveTypeArg(c.args[0]); + return self.builder.constBool(self.module.types.isUnsignedInt(ty)); + } + const arg_ref = self.lowerExpr(c.args[0]); + const args_owned = self.alloc.dupe(Ref, &.{arg_ref}) catch return self.builder.constBool(false); + return self.builder.callBuiltin(.type_is_unsigned, args_owned, .bool); + } if (std.mem.eql(u8, name, "has_impl")) { // has_impl(P, T) → const_bool. Returns true when type T has // a reachable impl for protocol P. P is either: diff --git a/src/ir/types.test.zig b/src/ir/types.test.zig index 1c1c126..6eec0fd 100644 --- a/src/ir/types.test.zig +++ b/src/ir/types.test.zig @@ -253,3 +253,37 @@ test "errorSetType: tags stored sorted by global id" { try std.testing.expectEqual(@as(usize, 3), stored.len); try std.testing.expect(stored[0] <= stored[1] and stored[1] <= stored[2]); } + +test "isUnsignedInt: builtin signedness classification" { + const alloc = std.testing.allocator; + var table = TypeTable.init(alloc); + defer table.deinit(); + + // Unsigned builtins (the formatter must route these to unsigned decimal). + inline for (.{ TypeId.u8, TypeId.u16, TypeId.u32, TypeId.u64, TypeId.usize }) |ty| { + try std.testing.expect(table.isUnsignedInt(ty)); + } + // Signed / non-integer builtins are not unsigned. + inline for (.{ + TypeId.s8, TypeId.s16, TypeId.s32, TypeId.s64, TypeId.isize, + TypeId.bool, TypeId.f32, TypeId.f64, TypeId.string, + TypeId.void, TypeId.any, TypeId.unresolved, + }) |ty| { + try std.testing.expect(!table.isUnsignedInt(ty)); + } +} + +test "isUnsignedInt: user-defined arbitrary-width ints" { + const alloc = std.testing.allocator; + var table = TypeTable.init(alloc); + defer table.deinit(); + + const u24_ty = table.intern(.{ .unsigned = 24 }); + const s24_ty = table.intern(.{ .signed = 24 }); + try std.testing.expect(table.isUnsignedInt(u24_ty)); + try std.testing.expect(!table.isUnsignedInt(s24_ty)); + + // A non-integer user type is never unsigned. + const ptr_ty = table.ptrTo(.u32); + try std.testing.expect(!table.isUnsignedInt(ptr_ty)); +} diff --git a/src/ir/types.zig b/src/ir/types.zig index be816d7..7aee185 100644 --- a/src/ir/types.zig +++ b/src/ir/types.zig @@ -580,6 +580,20 @@ pub const TypeTable = struct { return 8; } + /// True iff `ty` is an unsigned integer — a builtin (u8/u16/u32/u64/usize) + /// or a user-defined arbitrary-width unsigned int. Canonical signedness + /// query for reflection (`type_is_unsigned`) and the `{}` formatter so a + /// u64 value renders as unsigned decimal rather than the s64 reinterpretation. + pub fn isUnsignedInt(self: *const TypeTable, ty: TypeId) bool { + switch (ty) { + .u8, .u16, .u32, .u64, .usize => return true, + .bool, .s8, .s16, .s32, .s64, .isize => return false, + else => {}, + } + if (ty.isBuiltin()) return false; + return self.get(ty) == .unsigned; + } + pub fn typeSizeBytes(self: *const TypeTable, ty: TypeId) usize { const ptr_size: usize = self.pointer_size; if (ty == .void) return 0;