diff --git a/examples/240-error-tag-interpolation.sx b/examples/240-error-tag-interpolation.sx new file mode 100644 index 0000000..b16adb6 --- /dev/null +++ b/examples/240-error-tag-interpolation.sx @@ -0,0 +1,29 @@ +// Error-tag `{}` interpolation (ERR step E3 — tag-name table). Formatting an +// error-set value with `{}` renders the tag NAME (`BadDigit`), not the raw id, +// reusing the `any_to_string` dispatch (new `error_set` category → the +// `error_tag_name` builtin → the always-linked tag-name table indexed by global +// tag id). Works for a bound tag, a re-raised/caught tag, and inside text. + +#import "modules/std.sx"; + +E :: error { BadDigit, Empty, Overflow } + +parse :: (n: s32) -> (s32, !E) { + if n < 0 { raise error.BadDigit; } + if n == 0 { raise error.Empty; } + return n * 2; +} + +main :: () -> s32 { + a : E = error.BadDigit; + b : E = error.Overflow; + print("a={} b={}\n", a, b); // a=BadDigit b=Overflow + + // A tag bound by `catch` interpolates too (diverging handler). + v := parse(0) catch e { + print("parse failed with {}\n", e); // parse failed with Empty + return 0; + }; + print("v={}\n", v); // not reached (parse(0) raises Empty) + return 0; +} diff --git a/library/modules/std.sx b/library/modules/std.sx index 6d53c89..1f21494 100644 --- a/library/modules/std.sx +++ b/library/modules/std.sx @@ -22,6 +22,7 @@ field_value :: (s: $T, idx: s64) -> Any #builtin; is_flags :: ($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; string :: []u8 #builtin; #import "allocators.sx"; @@ -314,6 +315,7 @@ any_to_string :: (val: Any) -> string { case float: result = float_to_string(xx val); case struct: result = struct_to_string(cast(type) val); case enum: result = enum_to_string(cast(type) val); + case error_set: { tagid : u32 = xx val; result = error_tag_name(tagid); } case vector: result = vector_to_string(cast(type) val); case array: result = array_to_string(cast(type) val); case slice: result = slice_to_string(cast(type) val); diff --git a/src/ir/emit_llvm.zig b/src/ir/emit_llvm.zig index be292ff..c885f6a 100644 --- a/src/ir/emit_llvm.zig +++ b/src/ir/emit_llvm.zig @@ -143,6 +143,8 @@ pub const LLVMEmitter = struct { // Cached field name arrays for reflection (TypeId → LLVM global) field_name_arrays: std.AutoHashMap(u32, c.LLVMValueRef), + // The always-linked tag-name table (global tag id → name); built once. + tag_name_array: ?c.LLVMValueRef = null, // Lazy global `[N x string]` indexed by TypeId.index(), holding // each type's display name. Built on the first dynamic @@ -3304,6 +3306,23 @@ pub const LLVMEmitter = struct { // Switch on index, each case: extractvalue field k → box as Any self.emitFieldValueGet(fr, func_idx); }, + .error_tag_name_get => |u| { + // Tag id → name: GEP into the always-linked tag-name table at + // the runtime tag id (the error-set value, a u32). Out-of-range + // ids can't occur — ids come from the same registry the table + // is built from — so no bounds branch is needed. + const global = self.getOrBuildTagNameArray(); + const tag_raw = self.resolveRef(u.operand); + const idx = c.LLVMBuildZExt(self.builder, tag_raw, self.cached_i64, "etn.idx"); + const string_ty = self.getStringStructType(); + const n: u32 = @intCast(self.ir_mod.types.tags.names.items.len); + const array_ty = c.LLVMArrayType(string_ty, n); + const zero = c.LLVMConstInt(self.cached_i64, 0, 0); + var indices = [2]c.LLVMValueRef{ zero, idx }; + const gep = c.LLVMBuildInBoundsGEP2(self.builder, array_ty, global, &indices, 2, "etn.gep"); + const result = c.LLVMBuildLoad2(self.builder, string_ty, gep, "etn.load"); + self.mapRef(result); + }, // ── Switch branch ──────────────────────────────────────── .switch_br => |sw| { @@ -4662,6 +4681,44 @@ pub const LLVMEmitter = struct { return global; } + /// The always-linked tag-name table: a `[N x {ptr, i64}]` global of tag + /// names indexed by global tag id (the `TagRegistry` namespace; slot 0 is + /// the reserved "" no-error name). `error_tag_name_get` GEPs into it at the + /// runtime tag id. Built once per module. Always emitted (not trace-gated) + /// so `{}` interpolation of an error tag works even in release builds. + fn getOrBuildTagNameArray(self: *LLVMEmitter) c.LLVMValueRef { + if (self.tag_name_array) |g| return g; + + const string_ty = self.getStringStructType(); + const names = self.ir_mod.types.tags.names.items; + + var field_vals = std.ArrayList(c.LLVMValueRef).empty; + defer field_vals.deinit(self.alloc); + for (names) |name_str| { + const str_z = self.alloc.dupeZ(u8, name_str) catch unreachable; + defer self.alloc.free(str_z); + const global_str = c.LLVMAddGlobal(self.llvm_module, c.LLVMArrayType(self.cached_i8, @intCast(name_str.len + 1)), "tag.str"); + c.LLVMSetInitializer(global_str, c.LLVMConstStringInContext(self.context, str_z.ptr, @intCast(name_str.len + 1), 1)); + c.LLVMSetGlobalConstant(global_str, 1); + c.LLVMSetLinkage(global_str, c.LLVMPrivateLinkage); + const len_val = c.LLVMConstInt(self.cached_i64, name_str.len, 0); + var struct_fields = [2]c.LLVMValueRef{ global_str, len_val }; + const const_struct = c.LLVMConstStructInContext(self.context, &struct_fields, 2, 0); + field_vals.append(self.alloc, const_struct) catch unreachable; + } + + const n: u32 = @intCast(names.len); + const array_ty = c.LLVMArrayType(string_ty, n); + const array_init = c.LLVMConstArray(string_ty, field_vals.items.ptr, n); + const global = c.LLVMAddGlobal(self.llvm_module, array_ty, "tag_names"); + c.LLVMSetInitializer(global, array_init); + c.LLVMSetGlobalConstant(global, 1); + c.LLVMSetLinkage(global, c.LLVMPrivateLinkage); + + self.tag_name_array = global; + return global; + } + /// Emit field_value_get: switch on runtime index, each case extracts a field and boxes it as Any. fn emitFieldValueGet(self: *LLVMEmitter, fr: ir_inst.FieldReflect, func_idx: u32) void { const base_val = self.resolveRef(fr.base); diff --git a/src/ir/inst.zig b/src/ir/inst.zig index 59eaeb5..2e0ab46 100644 --- a/src/ir/inst.zig +++ b/src/ir/inst.zig @@ -219,6 +219,7 @@ pub const Op = union(enum) { // ── Reflection ───────────────────────────────────────────────── field_name_get: FieldReflect, // field_name(T, i) → string (runtime index) field_value_get: FieldReflect, // field_value(s, i) → Any (runtime struct + index) + error_tag_name_get: UnaryOp, // error_tag_name(e) → string (runtime tag id → name, via the always-linked tag-name table) // ── Terminators ───────────────────────────────────────────────── br: Branch, diff --git a/src/ir/interp.zig b/src/ir/interp.zig index a73882a..39357c5 100644 --- a/src/ir/interp.zig +++ b/src/ir/interp.zig @@ -1227,6 +1227,14 @@ pub const Interpreter = struct { const name = self.module.types.getString(fields[idx].name); return .{ .value = .{ .string = name } }; }, + .error_tag_name_get => |u| { + const tag_val = frame.getRef(u.operand); + const id: u32 = @intCast(switch (tag_val) { + .int => |i| i, + else => return bailDetail("comptime error_tag_name(e): operand is not an integer tag id"), + }); + return .{ .value = .{ .string = self.module.types.tags.getName(id) } }; + }, .field_value_get => |fr| { const base_val = frame.getRef(fr.base); const idx_val = frame.getRef(fr.index); diff --git a/src/ir/lower.zig b/src/ir/lower.zig index c8e4cea..1ffb991 100644 --- a/src/ir/lower.zig +++ b/src/ir/lower.zig @@ -10271,6 +10271,13 @@ pub const Lowering = struct { .struct_type = ty, } }, .string); } + if (std.mem.eql(u8, name, "error_tag_name")) { + // error_tag_name(e) → look the error-set value's runtime tag id up + // in the always-linked tag-name table. The value IS its u32 tag id. + if (c.args.len < 1) return self.builder.constString(self.module.types.internString("")); + const e = self.lowerExpr(c.args[0]); + return self.builder.emit(.{ .error_tag_name_get = .{ .operand = e } }, .string); + } if (std.mem.eql(u8, name, "field_value")) { // field_value(s, i) → field_value_get instruction (structs/unions) // → index_get + box_any (slices/arrays) @@ -10892,7 +10899,7 @@ pub const Lowering = struct { } // Dynamic categories: scan TypeTable for matching types - const Category = enum { @"struct", @"enum", @"union", slice, array, pointer, vector, optional }; + const Category = enum { @"struct", @"enum", @"union", slice, array, pointer, vector, optional, error_set }; const cat: ?Category = if (std.mem.eql(u8, name, "struct")) .@"struct" else if (std.mem.eql(u8, name, "enum") or std.mem.eql(u8, name, "union")) @@ -10907,6 +10914,8 @@ pub const Lowering = struct { .vector else if (std.mem.eql(u8, name, "optional")) .optional + else if (std.mem.eql(u8, name, "error_set")) + .error_set else null; @@ -10921,6 +10930,7 @@ pub const Lowering = struct { .pointer => info == .pointer or info == .many_pointer, .vector => info == .vector, .optional => info == .optional, + .error_set => info == .error_set, }; if (matches) { tags.append(self.alloc, @intCast(idx)) catch {}; @@ -13797,6 +13807,7 @@ pub const Lowering = struct { if (std.mem.eql(u8, bare_name, "field_count")) return .s64; if (std.mem.eql(u8, bare_name, "field_index")) return .s64; if (std.mem.eql(u8, bare_name, "field_name")) return .string; + if (std.mem.eql(u8, bare_name, "error_tag_name")) return .string; if (std.mem.eql(u8, bare_name, "is_flags")) return .bool; if (std.mem.eql(u8, bare_name, "type_of")) return .any; if (std.mem.eql(u8, bare_name, "field_value")) return .any; diff --git a/src/ir/print.zig b/src/ir/print.zig index 6fc0cb3..b14a0b3 100644 --- a/src/ir/print.zig +++ b/src/ir/print.zig @@ -359,6 +359,7 @@ fn printInst(instruction: *const Inst, ref_idx: u32, tt: *const TypeTable, write // ── Reflection ────────────────────────────────────────── .field_name_get => |fr| try writer.print("field_name_get T{d}[%{d}] : ", .{ fr.struct_type.index(), fr.index.index() }), .field_value_get => |fr| try writer.print("field_value_get %{d}, T{d}[%{d}] : ", .{ fr.base.index(), fr.struct_type.index(), fr.index.index() }), + .error_tag_name_get => |u| try writer.print("error_tag_name_get %{d} : ", .{u.operand.index()}), // ── Terminators ───────────────────────────────────────── .br => |b| { diff --git a/tests/expected/240-error-tag-interpolation.exit b/tests/expected/240-error-tag-interpolation.exit new file mode 100644 index 0000000..573541a --- /dev/null +++ b/tests/expected/240-error-tag-interpolation.exit @@ -0,0 +1 @@ +0 diff --git a/tests/expected/240-error-tag-interpolation.txt b/tests/expected/240-error-tag-interpolation.txt new file mode 100644 index 0000000..7b3276a --- /dev/null +++ b/tests/expected/240-error-tag-interpolation.txt @@ -0,0 +1,2 @@ +a=BadDigit b=Overflow +parse failed with Empty diff --git a/tests/expected/ffi-objc-call-06-sret-return.ir b/tests/expected/ffi-objc-call-06-sret-return.ir index e525419..8ea1dc2 100644 --- a/tests/expected/ffi-objc-call-06-sret-return.ir +++ b/tests/expected/ffi-objc-call-06-sret-return.ir @@ -520,16 +520,16 @@ 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.53, label %if.else.54 + br i1 %load, label %if.then.54, label %if.else.55 -if.then.53: ; preds = %entry - br label %if.merge.55 +if.then.54: ; preds = %entry + br label %if.merge.56 -if.else.54: ; preds = %entry - br label %if.merge.55 +if.else.55: ; preds = %entry + br label %if.merge.56 -if.merge.55: ; preds = %if.else.54, %if.then.53 - %bp = phi { ptr, i64 } [ { ptr @str.1, i64 4 }, %if.then.53 ], [ { ptr @str.2, i64 5 }, %if.else.54 ] +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 ] ret { ptr, i64 } %bp } @@ -543,19 +543,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.59, label %if.else.60 + br i1 %loadN, label %if.then.60, label %if.else.61 -if.then.59: ; preds = %entry +if.then.60: ; preds = %entry %loadN = load double, ptr %alloca, align 8 %fsub = fsub double 0.000000e+00, %loadN - br label %if.merge.61 + br label %if.merge.62 -if.else.60: ; preds = %entry +if.else.61: ; preds = %entry %loadN = load double, ptr %alloca, align 8 - br label %if.merge.61 + br label %if.merge.62 -if.merge.61: ; preds = %if.else.60, %if.then.59 - %bp = phi double [ %fsub, %if.then.59 ], [ %loadN, %if.else.60 ] +if.merge.62: ; preds = %if.else.61, %if.then.60 + %bp = phi double [ %fsub, %if.then.60 ], [ %loadN, %if.else.61 ] %allocaN = alloca double, align 8 store double %bp, ptr %allocaN, align 8 %loadN = load double, ptr %allocaN, align 8 @@ -572,15 +572,15 @@ if.merge.61: ; preds = %if.else.60, %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.62, label %if.merge.63 + br i1 %icmp, label %if.then.63, label %if.merge.64 -if.then.62: ; preds = %if.merge.61 +if.then.63: ; preds = %if.merge.62 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 0, %loadN store i64 %sub, ptr %allocaN, align 8 - br label %if.merge.63 + br label %if.merge.64 -if.merge.63: ; preds = %if.then.62, %if.merge.61 +if.merge.64: ; preds = %if.then.63, %if.merge.62 %loadN = load i64, ptr %allocaN, align 8 %call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN) %allocaN = alloca { ptr, i64 }, align 8 @@ -598,16 +598,16 @@ if.merge.63: ; preds = %if.then.62, %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.64, label %if.else.65 + br i1 %loadN, label %if.then.65, label %if.else.66 -if.then.64: ; preds = %if.merge.63 - br label %if.merge.66 +if.then.65: ; preds = %if.merge.64 + br label %if.merge.67 -if.else.65: ; preds = %if.merge.63 - br label %if.merge.66 +if.else.66: ; preds = %if.merge.64 + br label %if.merge.67 -if.merge.66: ; preds = %if.else.65, %if.then.64 - %bpN = phi i64 [ 1, %if.then.64 ], [ 0, %if.else.65 ] +if.merge.67: ; preds = %if.else.66, %if.then.65 + %bpN = phi i64 [ 1, %if.then.65 ], [ 0, %if.else.66 ] %allocaN = alloca i64, align 8 store i64 %bpN, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -624,17 +624,17 @@ if.merge.66: ; preds = %if.else.65, %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.67, label %if.merge.68 + br i1 %loadN, label %if.then.68, label %if.merge.69 -if.then.67: ; preds = %if.merge.66 +if.then.68: ; preds = %if.merge.67 %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.68 + br label %if.merge.69 -if.merge.68: ; preds = %if.then.67, %if.merge.66 +if.merge.69: ; preds = %if.then.68, %if.merge.67 %loadN = load i64, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %igp.data41 = extractvalue { ptr, i64 } %loadN, 0 @@ -697,39 +697,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.208 + br label %while.hdr.209 -while.hdr.208: ; preds = %if.merge.213, %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.209, label %while.exit.210 + br i1 %icmp, label %while.body.210, label %while.exit.211 -while.body.209: ; preds = %while.hdr.208 +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.211, label %if.else.212 + br i1 %icmpN, label %if.then.212, label %if.else.213 -while.exit.210: ; preds = %while.hdr.208 +while.exit.211: ; preds = %while.hdr.209 ret void -if.then.211: ; preds = %while.body.209 +if.then.212: ; preds = %while.body.210 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 48 - br label %if.merge.213 + br label %if.merge.214 -if.else.212: ; preds = %while.body.209 +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.213 + br label %if.merge.214 -if.merge.213: ; preds = %if.else.212, %if.then.211 - %bp = phi i64 [ %addN, %if.then.211 ], [ %addN, %if.else.212 ] +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 @@ -742,7 +742,7 @@ if.merge.213: ; preds = %if.else.212, %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.208 + br label %while.hdr.209 } ; Function Attrs: nounwind @@ -752,27 +752,27 @@ entry: 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.198, label %if.merge.199 + br i1 %icmp, label %if.then.199, label %if.merge.200 -if.then.198: ; preds = %entry +if.then.199: ; preds = %entry ret { ptr, i64 } { ptr @str.3, i64 1 } -if.merge.199: ; preds = %entry +if.merge.200: ; preds = %entry %loadN = load i64, ptr %alloca, align 8 %srem = srem i64 %loadN, 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.200, label %if.merge.201 + br i1 %icmpN, label %if.then.201, label %if.merge.202 -if.then.200: ; preds = %if.merge.199 +if.then.201: ; preds = %if.merge.200 %loadN = load i64, ptr %allocaN, align 8 %add = add i64 %loadN, 65536 store i64 %add, ptr %allocaN, align 8 - br label %if.merge.201 + br label %if.merge.202 -if.merge.201: ; preds = %if.then.200, %if.merge.199 +if.merge.202: ; preds = %if.then.201, %if.merge.200 %loadN = load i64, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 %sub = sub i64 %loadN, %loadN @@ -785,15 +785,15 @@ if.merge.201: ; preds = %if.then.200, %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.202, label %if.merge.203 + br i1 %icmpN, label %if.then.203, label %if.merge.204 -if.then.202: ; preds = %if.merge.201 +if.then.203: ; preds = %if.merge.202 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.203 + br label %if.merge.204 -if.merge.203: ; preds = %if.then.202, %if.merge.201 +if.merge.204: ; preds = %if.then.203, %if.merge.202 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -806,15 +806,15 @@ if.merge.203: ; preds = %if.then.202, %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.204, label %if.merge.205 + br i1 %icmpN, label %if.then.205, label %if.merge.206 -if.then.204: ; preds = %if.merge.203 +if.then.205: ; preds = %if.merge.204 %loadN = load i64, ptr %allocaN, align 8 %addN = add i64 %loadN, 65536 store i64 %addN, ptr %allocaN, align 8 - br label %if.merge.205 + br label %if.merge.206 -if.merge.205: ; preds = %if.then.204, %if.merge.203 +if.merge.206: ; preds = %if.then.205, %if.merge.204 %loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8 %subN = sub i64 %loadN, %loadN @@ -827,15 +827,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.207, label %if.merge.208 -if.then.206: ; preds = %if.merge.205 +if.then.207: ; preds = %if.merge.206 %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.208 -if.merge.207: ; preds = %if.then.206, %if.merge.205 +if.merge.208: ; preds = %if.then.207, %if.merge.206 %call = call { ptr, i64 } @cstring(ptr %0, i64 16) %allocaN = alloca { ptr, i64 }, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8 @@ -853,14 +853,14 @@ if.merge.207: ; preds = %if.then.206, %if.me call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN) %allocaN = alloca i64, align 8 store i64 0, ptr %allocaN, align 8 - br label %while.hdr.214 + br label %while.hdr.215 -while.hdr.214: ; preds = %if.merge.218, %if.merge.207 +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.215, label %while.exit.216 + br i1 %icmpN, label %while.body.216, label %while.exit.217 -while.body.215: ; preds = %while.hdr.214 +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 @@ -868,9 +868,9 @@ while.body.215: ; preds = %while.hdr.214 %ig.val = load i8, ptr %ig.ptr, align 1 %cmp.ext = zext i8 %ig.val to i64 %icmpN = icmp ne i64 %cmp.ext, 48 - br i1 %icmpN, label %if.then.217, label %if.merge.218 + br i1 %icmpN, label %if.then.218, label %if.merge.219 -while.exit.216: ; preds = %if.then.217, %while.hdr.214 +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 @@ -878,14 +878,14 @@ while.exit.216: ; preds = %if.then.217, %while %callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %loadN, i64 %subN) ret { ptr, i64 } %callN -if.then.217: ; preds = %while.body.215 - br label %while.exit.216 +if.then.218: ; preds = %while.body.216 + br label %while.exit.217 -if.merge.218: ; preds = %while.body.215 +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.214 + br label %while.hdr.215 } ; Function Attrs: nounwind @@ -972,7 +972,7 @@ 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.52 [ + 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 @@ -1001,34 +1001,34 @@ entry: i64 42, label %match.arm.44 i64 35, label %match.arm.45 i64 36, label %match.arm.45 - i64 50, label %match.arm.47 - i64 55, label %match.arm.47 - i64 34, label %match.arm.48 - i64 48, label %match.arm.48 - i64 18, 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 28, label %match.arm.49 - i64 30, label %match.arm.49 - i64 32, label %match.arm.49 - i64 40, 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 49, 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 13, label %match.arm.51 + i64 50, label %match.arm.48 + i64 55, label %match.arm.48 + i64 34, label %match.arm.49 + i64 48, label %match.arm.49 + i64 18, label %match.arm.50 + i64 21, label %match.arm.50 + i64 23, label %match.arm.50 + i64 25, label %match.arm.50 + i64 27, label %match.arm.50 + i64 28, label %match.arm.50 + i64 30, label %match.arm.50 + i64 32, label %match.arm.50 + i64 40, 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 49, 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 13, label %match.arm.52 ] -match.merge.38: ; preds = %dispatch.merge.173, %dispatch.merge.159, %dispatch.merge.145, %dispatch.merge.137, %dispatch.merge.69, %float.merge.58, %match.unr.52, %match.arm.51, %match.arm.42, %match.arm.41, %match.arm.40, %match.arm.39 +match.merge.38: ; preds = %dispatch.merge.174, %dispatch.merge.160, %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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN @@ -1067,25 +1067,25 @@ match.arm.43: ; preds = %entry, %entry %allocaN = alloca double, align 8 %sgN = extractvalue { i64, i64 } %loadN, 0 %icmp = icmp eq i64 %sgN, 10 - br i1 %icmp, label %fN.unbox.56, label %fN.unbox.57 + br i1 %icmp, label %fN.unbox.57, label %fN.unbox.58 match.arm.44: ; 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 %loadN = load { i64, i64 }, ptr %alloca, align 8 %allocaN = alloca { ptr, i64 }, align 8 - switch i64 %ua.raw18, label %dispatch.default.70 [ - i64 19, label %dispatch.case.71 - i64 20, label %dispatch.case.72 - i64 22, label %dispatch.case.73 - i64 24, label %dispatch.case.74 - i64 26, label %dispatch.case.75 - i64 29, label %dispatch.case.76 - i64 31, label %dispatch.case.77 - i64 33, label %dispatch.case.78 - i64 37, label %dispatch.case.79 - i64 39, label %dispatch.case.80 - i64 42, label %dispatch.case.81 + switch i64 %ua.raw18, label %dispatch.default.71 [ + i64 19, label %dispatch.case.72 + i64 20, label %dispatch.case.73 + i64 22, label %dispatch.case.74 + i64 24, label %dispatch.case.75 + i64 26, label %dispatch.case.76 + i64 29, label %dispatch.case.77 + i64 31, label %dispatch.case.78 + i64 33, label %dispatch.case.79 + i64 37, label %dispatch.case.80 + i64 39, label %dispatch.case.81 + i64 42, label %dispatch.case.82 ] match.arm.45: ; preds = %entry, %entry @@ -1093,66 +1093,69 @@ match.arm.45: ; preds = %entry, %entry %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.138 [ - i64 35, label %dispatch.case.139 - i64 36, label %dispatch.case.140 + switch i64 %ua.raw22, label %dispatch.default.139 [ + i64 35, label %dispatch.case.140 + i64 36, label %dispatch.case.141 ] match.arm.46: ; No predecessors! unreachable -match.arm.47: ; preds = %entry, %entry +match.arm.47: ; No predecessors! + unreachable + +match.arm.48: ; 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.146 [ - i64 50, label %dispatch.case.147 - i64 55, label %dispatch.case.148 + switch i64 %ua.raw26, label %dispatch.default.147 [ + i64 50, label %dispatch.case.148 + i64 55, label %dispatch.case.149 ] -match.arm.48: ; preds = %entry, %entry +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.160 [ - i64 34, label %dispatch.case.161 - i64 48, label %dispatch.case.162 + switch i64 %ua.raw30, label %dispatch.default.161 [ + i64 34, label %dispatch.case.162 + i64 48, label %dispatch.case.163 ] -match.arm.49: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry +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.174 [ - i64 18, label %dispatch.case.175 - i64 21, label %dispatch.case.176 - i64 23, label %dispatch.case.177 - i64 25, label %dispatch.case.178 - i64 27, label %dispatch.case.179 - i64 28, label %dispatch.case.180 - i64 30, label %dispatch.case.181 - i64 32, label %dispatch.case.182 - i64 40, label %dispatch.case.183 - i64 43, label %dispatch.case.184 - i64 44, label %dispatch.case.185 - i64 45, label %dispatch.case.186 - i64 46, label %dispatch.case.187 - i64 47, label %dispatch.case.188 - i64 49, label %dispatch.case.189 - i64 51, label %dispatch.case.190 - i64 52, label %dispatch.case.191 - i64 53, label %dispatch.case.192 - i64 54, label %dispatch.case.193 - i64 56, label %dispatch.case.194 + switch i64 %ua.raw34, label %dispatch.default.175 [ + i64 18, label %dispatch.case.176 + i64 21, label %dispatch.case.177 + i64 23, label %dispatch.case.178 + i64 25, label %dispatch.case.179 + i64 27, label %dispatch.case.180 + i64 28, label %dispatch.case.181 + i64 30, label %dispatch.case.182 + i64 32, label %dispatch.case.183 + i64 40, label %dispatch.case.184 + i64 43, label %dispatch.case.185 + i64 44, label %dispatch.case.186 + i64 45, label %dispatch.case.187 + i64 46, label %dispatch.case.188 + i64 47, label %dispatch.case.189 + i64 49, label %dispatch.case.190 + i64 51, label %dispatch.case.191 + i64 52, label %dispatch.case.192 + i64 53, label %dispatch.case.193 + i64 54, label %dispatch.case.194 + i64 56, label %dispatch.case.195 ] -match.arm.50: ; No predecessors! +match.arm.51: ; No predecessors! unreachable -match.arm.51: ; preds = %entry +match.arm.52: ; preds = %entry %loadN = load { i64, i64 }, ptr %alloca, align 8 %tn.tid = extractvalue { i64, i64 } %loadN, 1 %tn.gep = getelementptr inbounds [82 x { ptr, i64 }], ptr @__sx_type_names, i64 0, i64 %tn.tid @@ -1160,345 +1163,345 @@ match.arm.51: ; preds = %entry store { ptr, i64 } %tn.load, ptr %allocaN, align 8 br label %match.merge.38 -match.unr.52: ; preds = %entry +match.unr.53: ; preds = %entry br label %match.merge.38 -f32.unbox.56: ; preds = %match.arm.43 +f32.unbox.57: ; preds = %match.arm.43 %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.58 + br label %float.merge.59 -f64.unbox.57: ; preds = %match.arm.43 +f64.unbox.58: ; preds = %match.arm.43 %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.58 + br label %float.merge.59 -float.merge.58: ; preds = %fN.unbox.57, %fN.unbox.56 +float.merge.59: ; preds = %fN.unbox.58, %fN.unbox.57 %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 -dispatch.merge.69: ; 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.case.71, %dispatch.default.70 +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 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 br label %match.merge.38 -dispatch.default.70: ; preds = %match.arm.44 +dispatch.default.71: ; preds = %match.arm.44 store { ptr, i64 } { ptr @str.87, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.71: ; preds = %match.arm.44 +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, ptr, ptr }, ptr %ua.ptr44, align 8 %callN = call { ptr, i64 } @struct_to_string__Allocator(ptr %0, { ptr, ptr, ptr } %ua.load45) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.72: ; preds = %match.arm.44 +dispatch.case.73: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.73: ; preds = %match.arm.44 +dispatch.case.74: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.74: ; preds = %match.arm.44 +dispatch.case.75: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.75: ; preds = %match.arm.44 +dispatch.case.76: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.76: ; preds = %match.arm.44 +dispatch.case.77: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.77: ; preds = %match.arm.44 +dispatch.case.78: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.78: ; preds = %match.arm.44 +dispatch.case.79: ; preds = %match.arm.44 %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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.79: ; preds = %match.arm.44 +dispatch.case.80: ; preds = %match.arm.44 %ua.raw75 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr76 = inttoptr i64 %ua.raw75 to ptr %ua.load77 = load {}, ptr %ua.ptr76, align 1 %callN = call { ptr, i64 } @struct_to_string__BuildOptions(ptr %0, {} %ua.load77) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.80: ; preds = %match.arm.44 +dispatch.case.81: ; preds = %match.arm.44 %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__NSString(ptr %0, {} %ua.load81) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.case.81: ; preds = %match.arm.44 +dispatch.case.82: ; preds = %match.arm.44 %ua.raw83 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr84 = inttoptr i64 %ua.raw83 to ptr %ua.load85 = load { i64, i64, i64 }, ptr %ua.ptr84, align 8 %callN = call { ptr, i64 } @struct_to_string__Triple(ptr %0, { i64, i64, i64 } %ua.load85) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.69 + br label %dispatch.merge.70 -dispatch.merge.137: ; preds = %dispatch.case.140, %dispatch.case.139, %dispatch.default.138 +dispatch.merge.138: ; preds = %dispatch.case.141, %dispatch.case.140, %dispatch.default.139 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 br label %match.merge.38 -dispatch.default.138: ; preds = %match.arm.45 +dispatch.default.139: ; preds = %match.arm.45 store { ptr, i64 } { ptr @str.88, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.137 + br label %dispatch.merge.138 -dispatch.case.139: ; preds = %match.arm.45 +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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.137 + br label %dispatch.merge.138 -dispatch.case.140: ; preds = %match.arm.45 +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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.137 + br label %dispatch.merge.138 -dispatch.merge.145: ; preds = %dispatch.case.148, %dispatch.case.147, %dispatch.default.146 +dispatch.merge.146: ; preds = %dispatch.case.149, %dispatch.case.148, %dispatch.default.147 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 store { ptr, i64 } %loadN, ptr %allocaN, align 8 br label %match.merge.38 -dispatch.default.146: ; preds = %match.arm.47 +dispatch.default.147: ; preds = %match.arm.48 store { ptr, i64 } { ptr @str.89, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.145 + br label %dispatch.merge.146 -dispatch.case.147: ; preds = %match.arm.47 +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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.145 + br label %dispatch.merge.146 -dispatch.case.148: ; preds = %match.arm.47 +dispatch.case.149: ; preds = %match.arm.48 %ua.raw97 = extractvalue { i64, i64 } %loadN, 1 %ua.ptr98 = inttoptr i64 %ua.raw97 to ptr %ua.load99 = load [3 x { i64, i64 }], ptr %ua.ptr98, align 8 %callN = call { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %ua.load99) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.145 + br label %dispatch.merge.146 -dispatch.merge.159: ; preds = %dispatch.case.162, %dispatch.case.161, %dispatch.default.160 +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.38 -dispatch.default.160: ; preds = %match.arm.48 +dispatch.default.161: ; preds = %match.arm.49 store { ptr, i64 } { ptr @str.90, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.159 + br label %dispatch.merge.160 -dispatch.case.161: ; preds = %match.arm.48 +dispatch.case.162: ; 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__string(ptr %0, { ptr, i64 } %ua.load104) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.159 + br label %dispatch.merge.160 -dispatch.case.162: ; preds = %match.arm.48 +dispatch.case.163: ; 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__Any(ptr %0, { ptr, i64 } %ua.load108) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.159 + br label %dispatch.merge.160 -dispatch.merge.173: ; preds = %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.case.179, %dispatch.case.178, %dispatch.case.177, %dispatch.case.176, %dispatch.case.175, %dispatch.default.174 +dispatch.merge.174: ; preds = %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.case.179, %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 -dispatch.default.174: ; preds = %match.arm.49 +dispatch.default.175: ; preds = %match.arm.50 store { ptr, i64 } { ptr @str.91, i64 0 }, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.175: ; preds = %match.arm.49 +dispatch.case.176: ; preds = %match.arm.50 %ua.raw111 = extractvalue { i64, i64 } %loadN, 1 %iNp = inttoptr i64 %ua.raw111 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.173 + br label %dispatch.merge.174 -dispatch.case.176: ; preds = %match.arm.49 +dispatch.case.177: ; 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_CAllocator(ptr %0, ptr %iNp114) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.177: ; preds = %match.arm.49 +dispatch.case.178: ; 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_GPA(ptr %0, ptr %iNp117) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.178: ; preds = %match.arm.49 +dispatch.case.179: ; 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_ArenaChunk(ptr %0, ptr %iNp120) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.179: ; preds = %match.arm.49 +dispatch.case.180: ; 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_Arena(ptr %0, ptr %iNp123) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.180: ; preds = %match.arm.49 +dispatch.case.181: ; 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__mptr_u8(ptr %0, ptr %iNp126) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.181: ; preds = %match.arm.49 +dispatch.case.182: ; 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_BufAlloc(ptr %0, ptr %iNp129) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.182: ; preds = %match.arm.49 +dispatch.case.183: ; 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_TrackingAllocator(ptr %0, ptr %iNp132) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.183: ; preds = %match.arm.49 +dispatch.case.184: ; 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_NSString(ptr %0, ptr %iNp135) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.184: ; preds = %match.arm.49 +dispatch.case.185: ; 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_ptr_CAllocator(ptr %0, ptr %iNp138) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.185: ; preds = %match.arm.49 +dispatch.case.186: ; 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_s64(ptr %0, ptr %iNp141) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.186: ; preds = %match.arm.49 +dispatch.case.187: ; 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_void(ptr %0, ptr %iNp144) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.187: ; preds = %match.arm.49 +dispatch.case.188: ; 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_bool(ptr %0, ptr %iNp147) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.188: ; preds = %match.arm.49 +dispatch.case.189: ; 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_string(ptr %0, ptr %iNp150) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.189: ; preds = %match.arm.49 +dispatch.case.190: ; 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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.190: ; preds = %match.arm.49 +dispatch.case.191: ; 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_1_Any(ptr %0, ptr %iNp156) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.191: ; preds = %match.arm.49 +dispatch.case.192: ; 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) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.192: ; preds = %match.arm.49 +dispatch.case.193: ; 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_u8(ptr %0, ptr %iNp162) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.193: ; preds = %match.arm.49 +dispatch.case.194: ; 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_Triple(ptr %0, ptr %iNp165) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 -dispatch.case.194: ; preds = %match.arm.49 +dispatch.case.195: ; 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_3_Any(ptr %0, ptr %iNp168) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %dispatch.merge.173 + br label %dispatch.merge.174 } ; Function Attrs: nounwind @@ -2169,30 +2172,30 @@ entry: 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.83 -while.hdr.82: ; preds = %fv.merge, %entry +while.hdr.83: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.83, label %while.exit.84 + br i1 %icmp, label %while.body.84, label %while.exit.85 -while.body.83: ; preds = %while.hdr.82 +while.body.84: ; preds = %while.hdr.83 %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.86, label %if.merge.87 -while.exit.84: ; preds = %while.hdr.82 +while.exit.85: ; preds = %while.hdr.83 %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 }) ret { ptr, i64 } %callN -if.then.85: ; preds = %while.body.83 +if.then.86: ; preds = %while.body.84 %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 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.86 + br label %if.merge.87 -if.merge.86: ; preds = %if.then.85, %while.body.83 +if.merge.87: ; preds = %if.then.86, %while.body.84 %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, i64 0, i64 %loadN @@ -2219,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.82 + br label %while.hdr.83 -fv.default: ; preds = %if.merge.86 +fv.default: ; preds = %if.merge.87 br label %fv.merge -fv.case: ; preds = %if.merge.86 +fv.case: ; preds = %if.merge.87 %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.86 +fv.case17: ; preds = %if.merge.87 %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.86 +fv.case21: ; preds = %if.merge.87 %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 @@ -2253,30 +2256,30 @@ entry: 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.88 -while.hdr.87: ; preds = %if.merge.91, %entry +while.hdr.88: ; preds = %if.merge.92, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.88, label %while.exit.89 + br i1 %icmp, label %while.body.89, label %while.exit.90 -while.body.88: ; preds = %while.hdr.87 +while.body.89: ; preds = %while.hdr.88 %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.91, label %if.merge.92 -while.exit.89: ; preds = %while.hdr.87 +while.exit.90: ; preds = %while.hdr.88 %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 }) ret { ptr, i64 } %callN -if.then.90: ; preds = %while.body.88 +if.then.91: ; preds = %while.body.89 %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 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.91 + br label %if.merge.92 -if.merge.91: ; preds = %if.then.90, %while.body.88 +if.merge.92: ; preds = %if.then.91, %while.body.89 %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 @@ -2295,7 +2298,7 @@ if.merge.91: ; preds = %if.then.90, %while. %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.88 } ; Function Attrs: nounwind @@ -2308,30 +2311,30 @@ entry: 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.93 -while.hdr.92: ; preds = %fv.merge, %entry +while.hdr.93: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 1 - br i1 %icmp, label %while.body.93, label %while.exit.94 + br i1 %icmp, label %while.body.94, label %while.exit.95 -while.body.93: ; preds = %while.hdr.92 +while.body.94: ; preds = %while.hdr.93 %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.96, label %if.merge.97 -while.exit.94: ; preds = %while.hdr.92 +while.exit.95: ; preds = %while.hdr.93 %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 }) ret { ptr, i64 } %callN -if.then.95: ; preds = %while.body.93 +if.then.96: ; preds = %while.body.94 %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 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.96 + br label %if.merge.97 -if.merge.96: ; preds = %if.then.95, %while.body.93 +if.merge.97: ; preds = %if.then.96, %while.body.94 %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 @@ -2356,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.92 + br label %while.hdr.93 -fv.default: ; preds = %if.merge.96 +fv.default: ; preds = %if.merge.97 br label %fv.merge -fv.case: ; preds = %if.merge.96 +fv.case: ; preds = %if.merge.97 %fv.field = extractvalue { i64 } %loadN, 0 %fv.val = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field, 1 br label %fv.merge @@ -2377,30 +2380,30 @@ entry: 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.98 -while.hdr.97: ; preds = %fv.merge, %entry +while.hdr.98: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 2 - br i1 %icmp, label %while.body.98, label %while.exit.99 + br i1 %icmp, label %while.body.99, label %while.exit.100 -while.body.98: ; preds = %while.hdr.97 +while.body.99: ; preds = %while.hdr.98 %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.101, label %if.merge.102 -while.exit.99: ; preds = %while.hdr.97 +while.exit.100: ; preds = %while.hdr.98 %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 }) ret { ptr, i64 } %callN -if.then.100: ; preds = %while.body.98 +if.then.101: ; preds = %while.body.99 %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 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.101 + br label %if.merge.102 -if.merge.101: ; preds = %if.then.100, %while.body.98 +if.merge.102: ; preds = %if.then.101, %while.body.99 %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 @@ -2426,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.97 + br label %while.hdr.98 -fv.default: ; preds = %if.merge.101 +fv.default: ; preds = %if.merge.102 br label %fv.merge -fv.case: ; preds = %if.merge.101 +fv.case: ; preds = %if.merge.102 %fv.field = extractvalue { ptr, i64 } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 25, i64 undef }, i64 %pNi, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.101 +fv.case17: ; preds = %if.merge.102 %fv.field18 = extractvalue { ptr, i64 } %loadN, 1 %fv.val19 = insertvalue { i64, i64 } { i64 5, i64 undef }, i64 %fv.field18, 1 br label %fv.merge @@ -2453,30 +2456,30 @@ entry: 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.103 -while.hdr.102: ; preds = %fv.merge, %entry +while.hdr.103: ; 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.104, label %while.exit.105 -while.body.103: ; preds = %while.hdr.102 +while.body.104: ; preds = %while.hdr.103 %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.106, label %if.merge.107 -while.exit.104: ; preds = %while.hdr.102 +while.exit.105: ; preds = %while.hdr.103 %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 }) ret { ptr, i64 } %callN -if.then.105: ; preds = %while.body.103 +if.then.106: ; preds = %while.body.104 %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 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.106 + br label %if.merge.107 -if.merge.106: ; preds = %if.then.105, %while.body.103 +if.merge.107: ; preds = %if.then.106, %while.body.104 %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 @@ -2503,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.102 + br label %while.hdr.103 -fv.default: ; preds = %if.merge.106 +fv.default: ; preds = %if.merge.107 br label %fv.merge -fv.case: ; preds = %if.merge.106 +fv.case: ; preds = %if.merge.107 %fv.field = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 25, i64 undef }, i64 %pNi, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.106 +fv.case17: ; preds = %if.merge.107 %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.106 +fv.case20: ; preds = %if.merge.107 %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 @@ -2538,30 +2541,30 @@ entry: 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.108 -while.hdr.107: ; preds = %fv.merge, %entry +while.hdr.108: ; 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.109, label %while.exit.110 -while.body.108: ; preds = %while.hdr.107 +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.110, label %if.merge.111 + br i1 %icmpN, label %if.then.111, label %if.merge.112 -while.exit.109: ; preds = %while.hdr.107 +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 }) ret { ptr, i64 } %callN -if.then.110: ; preds = %while.body.108 +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 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.111 + br label %if.merge.112 -if.merge.111: ; preds = %if.then.110, %while.body.108 +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 [3 x { ptr, i64 }], ptr @field_names.161, i64 0, i64 %loadN @@ -2588,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.107 + br label %while.hdr.108 -fv.default: ; preds = %if.merge.111 +fv.default: ; preds = %if.merge.112 br label %fv.merge -fv.case: ; preds = %if.merge.111 +fv.case: ; preds = %if.merge.112 %fv.field = extractvalue { ptr, i64, i64 } %loadN, 0 %pNi = ptrtoint ptr %fv.field to i64 %fv.val = insertvalue { i64, i64 } { i64 28, i64 undef }, i64 %pNi, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.111 +fv.case17: ; preds = %if.merge.112 %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.111 +fv.case20: ; preds = %if.merge.112 %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 @@ -2620,30 +2623,30 @@ entry: 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.113 -while.hdr.112: ; preds = %fv.merge, %entry +while.hdr.113: ; preds = %fv.merge, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 4 - br i1 %icmp, label %while.body.113, label %while.exit.114 + br i1 %icmp, label %while.body.114, label %while.exit.115 -while.body.113: ; preds = %while.hdr.112 +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.115, label %if.merge.116 + br i1 %icmpN, label %if.then.116, label %if.merge.117 -while.exit.114: ; preds = %while.hdr.112 +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.165, i64 1 }) ret { ptr, i64 } %callN -if.then.115: ; preds = %while.body.113 +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.166, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.116 + br label %if.merge.117 -if.merge.116: ; preds = %if.then.115, %while.body.113 +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 [4 x { ptr, i64 }], ptr @field_names.171, i64 0, i64 %loadN @@ -2671,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.112 + br label %while.hdr.113 -fv.default: ; preds = %if.merge.116 +fv.default: ; preds = %if.merge.117 br label %fv.merge -fv.case: ; preds = %if.merge.116 +fv.case: ; preds = %if.merge.117 %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 @@ -2684,17 +2687,17 @@ fv.case: ; preds = %if.merge.116 %fv.val = insertvalue { i64, i64 } { i64 19, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.116 +fv.case17: ; preds = %if.merge.117 %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.116 +fv.case20: ; preds = %if.merge.117 %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.116 +fv.case23: ; preds = %if.merge.117 %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 @@ -2710,30 +2713,30 @@ entry: 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.118 -while.hdr.117: ; preds = %fv.merge, %entry +while.hdr.118: ; 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.119, label %while.exit.120 -while.body.118: ; preds = %while.hdr.117 +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.120, label %if.merge.121 + br i1 %icmpN, label %if.then.121, label %if.merge.122 -while.exit.119: ; preds = %while.hdr.117 +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.175, i64 1 }) ret { ptr, i64 } %callN -if.then.120: ; preds = %while.body.118 +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.176, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.121 + br label %if.merge.122 -if.merge.121: ; preds = %if.then.120, %while.body.118 +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 [2 x { ptr, i64 }], ptr @field_names.179, i64 0, i64 %loadN @@ -2759,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.117 + br label %while.hdr.118 -fv.default: ; preds = %if.merge.121 +fv.default: ; preds = %if.merge.122 br label %fv.merge -fv.case: ; preds = %if.merge.121 +fv.case: ; preds = %if.merge.122 %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 @@ -2772,7 +2775,7 @@ fv.case: ; preds = %if.merge.121 %fv.val = insertvalue { i64, i64 } { i64 19, i64 undef }, i64 %ba.p2i, 1 br label %fv.merge -fv.case17: ; preds = %if.merge.121 +fv.case17: ; preds = %if.merge.122 %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 @@ -2789,30 +2792,30 @@ entry: 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.123 -while.hdr.122: ; preds = %if.merge.126, %entry +while.hdr.123: ; preds = %if.merge.127, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.123, label %while.exit.124 + br i1 %icmp, label %while.body.124, label %while.exit.125 -while.body.123: ; preds = %while.hdr.122 +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.125, label %if.merge.126 + br i1 %icmpN, label %if.then.126, label %if.merge.127 -while.exit.124: ; preds = %while.hdr.122 +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.183, i64 1 }) ret { ptr, i64 } %callN -if.then.125: ; preds = %while.body.123 +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.184, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.126 + br label %if.merge.127 -if.merge.126: ; preds = %if.then.125, %while.body.123 +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 [0 x { ptr, i64 }], ptr @field_names.185, i64 0, i64 %loadN @@ -2831,7 +2834,7 @@ if.merge.126: ; preds = %if.then.125, %while %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.123 } ; Function Attrs: nounwind @@ -2844,30 +2847,30 @@ entry: 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.128 -while.hdr.127: ; preds = %if.merge.131, %entry +while.hdr.128: ; preds = %if.merge.132, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 0 - br i1 %icmp, label %while.body.128, label %while.exit.129 + br i1 %icmp, label %while.body.129, label %while.exit.130 -while.body.128: ; preds = %while.hdr.127 +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.130, label %if.merge.131 + br i1 %icmpN, label %if.then.131, label %if.merge.132 -while.exit.129: ; preds = %while.hdr.127 +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.189, i64 1 }) ret { ptr, i64 } %callN -if.then.130: ; preds = %while.body.128 +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.190, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.131 + br label %if.merge.132 -if.merge.131: ; preds = %if.then.130, %while.body.128 +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 [0 x { ptr, i64 }], ptr @field_names.191, i64 0, i64 %loadN @@ -2886,7 +2889,7 @@ if.merge.131: ; preds = %if.then.130, %while %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.128 } ; Function Attrs: nounwind @@ -2899,30 +2902,30 @@ entry: 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.133 -while.hdr.132: ; 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.133, label %while.exit.134 + br i1 %icmp, label %while.body.134, label %while.exit.135 -while.body.133: ; preds = %while.hdr.132 +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.135, label %if.merge.136 + br i1 %icmpN, label %if.then.136, label %if.merge.137 -while.exit.134: ; preds = %while.hdr.132 +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.195, i64 1 }) ret { ptr, i64 } %callN -if.then.135: ; preds = %while.body.133 +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.196, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.136 + br label %if.merge.137 -if.merge.136: ; preds = %if.then.135, %while.body.133 +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.200, i64 0, i64 %loadN @@ -2949,22 +2952,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.132 + br label %while.hdr.133 -fv.default: ; preds = %if.merge.136 +fv.default: ; preds = %if.merge.137 br label %fv.merge -fv.case: ; preds = %if.merge.136 +fv.case: ; preds = %if.merge.137 %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.136 +fv.case17: ; preds = %if.merge.137 %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.136 +fv.case20: ; preds = %if.merge.137 %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 @@ -2995,18 +2998,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.141, label %if.merge.142 + br i1 %icmp, label %if.then.142, label %if.merge.143 -if.then.141: ; preds = %entry +if.then.142: ; 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.212, i64 1 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.211, 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.142 + br label %if.merge.143 -if.merge.142: ; preds = %if.then.141, %entry +if.merge.143: ; preds = %if.then.142, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3036,18 +3039,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.143, label %if.merge.144 + br i1 %icmp, label %if.then.144, label %if.merge.145 -if.then.143: ; preds = %entry +if.then.144: ; 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.221, i64 1 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, 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.144 + br label %if.merge.145 -if.merge.144: ; preds = %if.then.143, %entry +if.merge.145: ; preds = %if.then.144, %entry %loadN = load { ptr, i64 }, ptr %allocaN, align 8 ret { ptr, i64 } %loadN } @@ -3061,30 +3064,30 @@ entry: store { ptr, i64 } { ptr @str.222, 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.150 -while.hdr.149: ; preds = %if.merge.153, %entry +while.hdr.150: ; preds = %if.merge.154, %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.151, label %while.exit.152 -while.body.150: ; preds = %while.hdr.149 +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.152, label %if.merge.153 + br i1 %icmpN, label %if.then.153, label %if.merge.154 -while.exit.151: ; preds = %while.hdr.149 +while.exit.152: ; preds = %while.hdr.150 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.223, i64 1 }) ret { ptr, i64 } %call -if.then.152: ; preds = %while.body.150 +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.224, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.153 + br label %if.merge.154 -if.merge.153: ; preds = %if.then.152, %while.body.150 +if.merge.154: ; preds = %if.then.153, %while.body.151 %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 @@ -3102,7 +3105,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.150 } ; Function Attrs: nounwind @@ -3114,30 +3117,30 @@ entry: store { ptr, i64 } { ptr @str.225, 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.155 -while.hdr.154: ; preds = %if.merge.158, %entry +while.hdr.155: ; preds = %if.merge.159, %entry %load = load i64, ptr %allocaN, align 8 %icmp = icmp slt i64 %load, 3 - br i1 %icmp, label %while.body.155, label %while.exit.156 + br i1 %icmp, label %while.body.156, label %while.exit.157 -while.body.155: ; preds = %while.hdr.154 +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.157, label %if.merge.158 + br i1 %icmpN, label %if.then.158, label %if.merge.159 -while.exit.156: ; preds = %while.hdr.154 +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.226, i64 1 }) ret { ptr, i64 } %call -if.then.157: ; preds = %while.body.155 +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.227, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.158 + br label %if.merge.159 -if.merge.158: ; preds = %if.then.157, %while.body.155 +if.merge.159: ; preds = %if.then.158, %while.body.156 %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 @@ -3155,7 +3158,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.155 } ; Function Attrs: nounwind @@ -3167,32 +3170,32 @@ entry: store { ptr, i64 } { ptr @str.228, 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.164 -while.hdr.163: ; preds = %if.merge.167, %entry +while.hdr.164: ; preds = %if.merge.168, %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.165, label %while.exit.166 -while.body.164: ; preds = %while.hdr.163 +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.166, label %if.merge.167 + br i1 %icmpN, label %if.then.167, label %if.merge.168 -while.exit.165: ; preds = %while.hdr.163 +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.229, i64 1 }) ret { ptr, i64 } %call -if.then.166: ; preds = %while.body.164 +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.230, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.167 + br label %if.merge.168 -if.merge.167: ; preds = %if.then.166, %while.body.164 +if.merge.168: ; preds = %if.then.167, %while.body.165 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3209,7 +3212,7 @@ 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.164 } ; Function Attrs: nounwind @@ -3221,32 +3224,32 @@ entry: store { ptr, i64 } { ptr @str.231, 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.169 -while.hdr.168: ; preds = %if.merge.172, %entry +while.hdr.169: ; preds = %if.merge.173, %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.170, label %while.exit.171 -while.body.169: ; preds = %while.hdr.168 +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.171, label %if.merge.172 + br i1 %icmpN, label %if.then.172, label %if.merge.173 -while.exit.170: ; preds = %while.hdr.168 +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.232, i64 1 }) ret { ptr, i64 } %call -if.then.171: ; preds = %while.body.169 +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.233, i64 2 }) store { ptr, i64 } %callN, ptr %allocaN, align 8 - br label %if.merge.172 + br label %if.merge.173 -if.merge.172: ; preds = %if.then.171, %while.body.169 +if.merge.173: ; preds = %if.then.172, %while.body.170 %loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load i64, ptr %allocaN, align 8 @@ -3263,7 +3266,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.169 } ; Function Attrs: nounwind @@ -3277,20 +3280,20 @@ entry: store i64 %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 + br i1 %icmp, label %if.then.196, label %if.else.197 -if.then.195: ; preds = %entry - br label %if.merge.197 +if.then.196: ; preds = %entry + br label %if.merge.198 -if.else.196: ; preds = %entry +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.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.197 + br label %if.merge.198 -if.merge.197: ; preds = %if.else.196, %if.then.195 - %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.195 ], [ %callN, %if.else.196 ] +if.merge.198: ; preds = %if.else.197, %if.then.196 + %bp = phi { ptr, i64 } [ { ptr @str.234, i64 4 }, %if.then.196 ], [ %callN, %if.else.197 ] ret { ptr, i64 } %bp } @@ -3305,20 +3308,20 @@ entry: store i64 %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.220, label %if.else.221 -if.then.219: ; preds = %entry - br label %if.merge.221 +if.then.220: ; preds = %entry + br label %if.merge.222 -if.else.220: ; preds = %entry +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.239, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.221 + br label %if.merge.222 -if.merge.221: ; preds = %if.else.220, %if.then.219 - %bp = phi { ptr, i64 } [ { ptr @str.237, i64 4 }, %if.then.219 ], [ %callN, %if.else.220 ] +if.merge.222: ; preds = %if.else.221, %if.then.220 + %bp = phi { ptr, i64 } [ { ptr @str.237, i64 4 }, %if.then.220 ], [ %callN, %if.else.221 ] ret { ptr, i64 } %bp } @@ -3333,20 +3336,20 @@ entry: store i64 %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.223, label %if.else.224 -if.then.222: ; preds = %entry - br label %if.merge.224 +if.then.223: ; preds = %entry + br label %if.merge.225 -if.else.223: ; 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.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.224 + br label %if.merge.225 -if.merge.224: ; preds = %if.else.223, %if.then.222 - %bp = phi { ptr, i64 } [ { ptr @str.240, i64 4 }, %if.then.222 ], [ %callN, %if.else.223 ] +if.merge.225: ; preds = %if.else.224, %if.then.223 + %bp = phi { ptr, i64 } [ { ptr @str.240, i64 4 }, %if.then.223 ], [ %callN, %if.else.224 ] ret { ptr, i64 } %bp } @@ -3361,20 +3364,20 @@ entry: store i64 %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.226, label %if.else.227 -if.then.225: ; preds = %entry - br label %if.merge.227 +if.then.226: ; preds = %entry + br label %if.merge.228 -if.else.226: ; 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.245, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.244, i64 11 }, { ptr, i64 } %callN) - br label %if.merge.227 + br label %if.merge.228 -if.merge.227: ; preds = %if.else.226, %if.then.225 - %bp = phi { ptr, i64 } [ { ptr @str.243, i64 4 }, %if.then.225 ], [ %callN, %if.else.226 ] +if.merge.228: ; preds = %if.else.227, %if.then.226 + %bp = phi { ptr, i64 } [ { ptr @str.243, i64 4 }, %if.then.226 ], [ %callN, %if.else.227 ] ret { ptr, i64 } %bp } @@ -3389,20 +3392,20 @@ entry: store i64 %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.229, label %if.else.230 -if.then.228: ; preds = %entry - br label %if.merge.230 +if.then.229: ; preds = %entry + br label %if.merge.231 -if.else.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.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.230 + br label %if.merge.231 -if.merge.230: ; preds = %if.else.229, %if.then.228 - %bp = phi { ptr, i64 } [ { ptr @str.246, i64 4 }, %if.then.228 ], [ %callN, %if.else.229 ] +if.merge.231: ; preds = %if.else.230, %if.then.229 + %bp = phi { ptr, i64 } [ { ptr @str.246, i64 4 }, %if.then.229 ], [ %callN, %if.else.230 ] ret { ptr, i64 } %bp } @@ -3416,20 +3419,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.231, label %if.else.232 + br i1 %icmp, label %if.then.232, label %if.else.233 -if.then.231: ; preds = %entry - br label %if.merge.233 +if.then.232: ; preds = %entry + br label %if.merge.234 -if.else.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.251, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.250, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.233 + br label %if.merge.234 -if.merge.233: ; preds = %if.else.232, %if.then.231 - %bp = phi { ptr, i64 } [ { ptr @str.249, i64 4 }, %if.then.231 ], [ %callN, %if.else.232 ] +if.merge.234: ; preds = %if.else.233, %if.then.232 + %bp = phi { ptr, i64 } [ { ptr @str.249, i64 4 }, %if.then.232 ], [ %callN, %if.else.233 ] ret { ptr, i64 } %bp } @@ -3444,20 +3447,20 @@ entry: store i64 %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.235, label %if.else.236 -if.then.234: ; preds = %entry - br label %if.merge.236 +if.then.235: ; preds = %entry + br label %if.merge.237 -if.else.235: ; 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.254, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.253, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.236 + br label %if.merge.237 -if.merge.236: ; preds = %if.else.235, %if.then.234 - %bp = phi { ptr, i64 } [ { ptr @str.252, i64 4 }, %if.then.234 ], [ %callN, %if.else.235 ] +if.merge.237: ; preds = %if.else.236, %if.then.235 + %bp = phi { ptr, i64 } [ { ptr @str.252, i64 4 }, %if.then.235 ], [ %callN, %if.else.236 ] ret { ptr, i64 } %bp } @@ -3472,20 +3475,20 @@ entry: store i64 %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.238, label %if.else.239 -if.then.237: ; preds = %entry - br label %if.merge.239 +if.then.238: ; preds = %entry + br label %if.merge.240 -if.else.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.257, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 18 }, { ptr, i64 } %callN) - br label %if.merge.239 + br label %if.merge.240 -if.merge.239: ; preds = %if.else.238, %if.then.237 - %bp = phi { ptr, i64 } [ { ptr @str.255, i64 4 }, %if.then.237 ], [ %callN, %if.else.238 ] +if.merge.240: ; preds = %if.else.239, %if.then.238 + %bp = phi { ptr, i64 } [ { ptr @str.255, i64 4 }, %if.then.238 ], [ %callN, %if.else.239 ] ret { ptr, i64 } %bp } @@ -3500,20 +3503,20 @@ entry: store i64 %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.241, label %if.else.242 -if.then.240: ; preds = %entry - br label %if.merge.242 +if.then.241: ; preds = %entry + br label %if.merge.243 -if.else.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.260, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.259, i64 9 }, { ptr, i64 } %callN) - br label %if.merge.242 + br label %if.merge.243 -if.merge.242: ; preds = %if.else.241, %if.then.240 - %bp = phi { ptr, i64 } [ { ptr @str.258, i64 4 }, %if.then.240 ], [ %callN, %if.else.241 ] +if.merge.243: ; preds = %if.else.242, %if.then.241 + %bp = phi { ptr, i64 } [ { ptr @str.258, i64 4 }, %if.then.241 ], [ %callN, %if.else.242 ] ret { ptr, i64 } %bp } @@ -3528,20 +3531,20 @@ entry: store i64 %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.244, label %if.else.245 -if.then.243: ; preds = %entry - br label %if.merge.245 +if.then.244: ; preds = %entry + br label %if.merge.246 -if.else.244: ; 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.263, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.262, i64 12 }, { ptr, i64 } %callN) - br label %if.merge.245 + br label %if.merge.246 -if.merge.245: ; preds = %if.else.244, %if.then.243 - %bp = phi { ptr, i64 } [ { ptr @str.261, i64 4 }, %if.then.243 ], [ %callN, %if.else.244 ] +if.merge.246: ; preds = %if.else.245, %if.then.244 + %bp = phi { ptr, i64 } [ { ptr @str.261, i64 4 }, %if.then.244 ], [ %callN, %if.else.245 ] ret { ptr, i64 } %bp } @@ -3556,20 +3559,20 @@ entry: store i64 %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.247, label %if.else.248 -if.then.246: ; preds = %entry - br label %if.merge.248 +if.then.247: ; preds = %entry + br label %if.merge.249 -if.else.247: ; 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.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.248 + br label %if.merge.249 -if.merge.248: ; preds = %if.else.247, %if.then.246 - %bp = phi { ptr, i64 } [ { ptr @str.264, i64 4 }, %if.then.246 ], [ %callN, %if.else.247 ] +if.merge.249: ; preds = %if.else.248, %if.then.247 + %bp = phi { ptr, i64 } [ { ptr @str.264, i64 4 }, %if.then.247 ], [ %callN, %if.else.248 ] ret { ptr, i64 } %bp } @@ -3584,20 +3587,20 @@ entry: store i64 %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.250, label %if.else.251 -if.then.249: ; preds = %entry - br label %if.merge.251 +if.then.250: ; preds = %entry + br label %if.merge.252 -if.else.250: ; 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.269, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.268, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.251 + br label %if.merge.252 -if.merge.251: ; preds = %if.else.250, %if.then.249 - %bp = phi { ptr, i64 } [ { ptr @str.267, i64 4 }, %if.then.249 ], [ %callN, %if.else.250 ] +if.merge.252: ; preds = %if.else.251, %if.then.250 + %bp = phi { ptr, i64 } [ { ptr @str.267, i64 4 }, %if.then.250 ], [ %callN, %if.else.251 ] ret { ptr, i64 } %bp } @@ -3612,20 +3615,20 @@ entry: store i64 %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.253, label %if.else.254 -if.then.252: ; preds = %entry - br label %if.merge.254 +if.then.253: ; preds = %entry + br label %if.merge.255 -if.else.253: ; 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.272, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.271, i64 5 }, { ptr, i64 } %callN) - br label %if.merge.254 + br label %if.merge.255 -if.merge.254: ; preds = %if.else.253, %if.then.252 - %bp = phi { ptr, i64 } [ { ptr @str.270, i64 4 }, %if.then.252 ], [ %callN, %if.else.253 ] +if.merge.255: ; preds = %if.else.254, %if.then.253 + %bp = phi { ptr, i64 } [ { ptr @str.270, i64 4 }, %if.then.253 ], [ %callN, %if.else.254 ] ret { ptr, i64 } %bp } @@ -3640,20 +3643,20 @@ entry: store i64 %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.256, label %if.else.257 -if.then.255: ; preds = %entry - br label %if.merge.257 +if.then.256: ; preds = %entry + br label %if.merge.258 -if.else.256: ; 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.275, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.274, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.257 + br label %if.merge.258 -if.merge.257: ; preds = %if.else.256, %if.then.255 - %bp = phi { ptr, i64 } [ { ptr @str.273, i64 4 }, %if.then.255 ], [ %callN, %if.else.256 ] +if.merge.258: ; preds = %if.else.257, %if.then.256 + %bp = phi { ptr, i64 } [ { ptr @str.273, i64 4 }, %if.then.256 ], [ %callN, %if.else.257 ] ret { ptr, i64 } %bp } @@ -3668,20 +3671,20 @@ entry: store i64 %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.259, label %if.else.260 -if.then.258: ; preds = %entry - br label %if.merge.260 +if.then.259: ; preds = %entry + br label %if.merge.261 -if.else.259: ; 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.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.260 + br label %if.merge.261 -if.merge.260: ; preds = %if.else.259, %if.then.258 - %bp = phi { ptr, i64 } [ { ptr @str.276, i64 4 }, %if.then.258 ], [ %callN, %if.else.259 ] +if.merge.261: ; preds = %if.else.260, %if.then.259 + %bp = phi { ptr, i64 } [ { ptr @str.276, i64 4 }, %if.then.259 ], [ %callN, %if.else.260 ] ret { ptr, i64 } %bp } @@ -3696,20 +3699,20 @@ entry: store i64 %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.262, label %if.else.263 -if.then.261: ; preds = %entry - br label %if.merge.263 +if.then.262: ; preds = %entry + br label %if.merge.264 -if.else.262: ; 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.281, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.280, i64 7 }, { ptr, i64 } %callN) - br label %if.merge.263 + br label %if.merge.264 -if.merge.263: ; preds = %if.else.262, %if.then.261 - %bp = phi { ptr, i64 } [ { ptr @str.279, i64 4 }, %if.then.261 ], [ %callN, %if.else.262 ] +if.merge.264: ; preds = %if.else.263, %if.then.262 + %bp = phi { ptr, i64 } [ { ptr @str.279, i64 4 }, %if.then.262 ], [ %callN, %if.else.263 ] ret { ptr, i64 } %bp } @@ -3724,20 +3727,20 @@ entry: store i64 %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.265, label %if.else.266 -if.then.264: ; preds = %entry - br label %if.merge.266 +if.then.265: ; preds = %entry + br label %if.merge.267 -if.else.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.284, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.283, i64 6 }, { ptr, i64 } %callN) - br label %if.merge.266 + br label %if.merge.267 -if.merge.266: ; preds = %if.else.265, %if.then.264 - %bp = phi { ptr, i64 } [ { ptr @str.282, i64 4 }, %if.then.264 ], [ %callN, %if.else.265 ] +if.merge.267: ; preds = %if.else.266, %if.then.265 + %bp = phi { ptr, i64 } [ { ptr @str.282, i64 4 }, %if.then.265 ], [ %callN, %if.else.266 ] ret { ptr, i64 } %bp } @@ -3752,20 +3755,20 @@ entry: store i64 %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.268, label %if.else.269 -if.then.267: ; preds = %entry - br label %if.merge.269 +if.then.268: ; preds = %entry + br label %if.merge.270 -if.else.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.287, i64 3 }, { ptr, i64 } %call) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.286, i64 3 }, { ptr, i64 } %callN) - br label %if.merge.269 + br label %if.merge.270 -if.merge.269: ; preds = %if.else.268, %if.then.267 - %bp = phi { ptr, i64 } [ { ptr @str.285, i64 4 }, %if.then.267 ], [ %callN, %if.else.268 ] +if.merge.270: ; preds = %if.else.269, %if.then.268 + %bp = phi { ptr, i64 } [ { ptr @str.285, i64 4 }, %if.then.268 ], [ %callN, %if.else.269 ] ret { ptr, i64 } %bp } @@ -3780,20 +3783,20 @@ entry: store i64 %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.271, label %if.else.272 -if.then.270: ; preds = %entry - br label %if.merge.272 +if.then.271: ; preds = %entry + br label %if.merge.273 -if.else.271: ; 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.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.272 + br label %if.merge.273 -if.merge.272: ; preds = %if.else.271, %if.then.270 - %bp = phi { ptr, i64 } [ { ptr @str.288, i64 4 }, %if.then.270 ], [ %callN, %if.else.271 ] +if.merge.273: ; preds = %if.else.272, %if.then.271 + %bp = phi { ptr, i64 } [ { ptr @str.288, i64 4 }, %if.then.271 ], [ %callN, %if.else.272 ] ret { ptr, i64 } %bp } @@ -3808,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.273, label %if.else.274 + br i1 %icmp, label %if.then.274, label %if.else.275 -if.then.273: ; preds = %entry - br label %if.merge.275 +if.then.274: ; preds = %entry + br label %if.merge.276 -if.else.274: ; 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.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.275 + br label %if.merge.276 -if.merge.275: ; preds = %if.else.274, %if.then.273 - %bp = phi { ptr, i64 } [ { ptr @str.291, i64 4 }, %if.then.273 ], [ %callN, %if.else.274 ] +if.merge.276: ; preds = %if.else.275, %if.then.274 + %bp = phi { ptr, i64 } [ { ptr @str.291, i64 4 }, %if.then.274 ], [ %callN, %if.else.275 ] ret { ptr, i64 } %bp }