fix(0109): hoist all per-instruction allocas to the function entry block
An alloca built at its use site re-executes on every pass through that block, and LLVM reclaims allocas only at ret — so loop-body locals, nested-loop index slots, and emitter spill temps (ig.tmp, sret slots, ABI coercion temps, byval materialization) grew the stack per iteration and long loops segfaulted on stack exhaustion. New LLVMEmitter.buildEntryAlloca inserts after existing entry-block allocas and restores the builder position; every LLVMBuildAlloca site reachable during instruction emission now routes through it. Initialization stores stay at the use site (per-iteration re-init is unchanged), and entry slots become mem2reg-promotable. The 35 .ir snapshot diffs are pure alloca position moves (type multisets verified identical per file). Regression: examples/0047-basic-loop-local-stack-reuse.sx (segfaulted pre-fix on both the 1M-iteration body-local loop and the 3M-iteration nested loop).
This commit is contained in:
26
examples/0047-basic-loop-local-stack-reuse.sx
Normal file
26
examples/0047-basic-loop-local-stack-reuse.sx
Normal file
@@ -0,0 +1,26 @@
|
||||
// Loop-body locals reuse one stack slot per frame: a body-declared local
|
||||
// (and every compiler temp) must not grow the stack per iteration, so
|
||||
// million-iteration loops run in constant stack. Covers body locals,
|
||||
// nested loops (the inner loop's hidden index slot), and element reads.
|
||||
// Regression (issue 0109): allocas were emitted at their use site, so each
|
||||
// iteration re-executed them — LLVM only reclaims allocas at `ret`, and
|
||||
// these loops segfaulted on stack exhaustion.
|
||||
|
||||
#import "modules/std.sx";
|
||||
|
||||
main :: () -> s32 {
|
||||
sum := 0;
|
||||
for 0..1000000: (i) {
|
||||
buf : [128]s64 = ---;
|
||||
buf[0] = i;
|
||||
sum += buf[0];
|
||||
}
|
||||
print("sum={}\n", sum);
|
||||
|
||||
n := 0;
|
||||
for 0..3000000: (i) {
|
||||
for 0..1: (j) { n += 1; }
|
||||
}
|
||||
print("n={}\n", n);
|
||||
0
|
||||
}
|
||||
@@ -458,6 +458,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -469,15 +474,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -489,7 +490,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -547,6 +547,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -558,18 +569,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -577,9 +584,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -594,7 +599,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -607,7 +611,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -620,7 +623,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -641,12 +643,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -699,6 +699,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -718,11 +730,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -730,7 +740,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -745,19 +754,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -770,20 +775,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -819,7 +820,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -847,6 +847,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -870,7 +871,6 @@ while.hdr.241: ; preds = %if.merge.246, %entr
|
||||
while.body.242: ; preds = %while.hdr.241
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -911,6 +911,13 @@ if.merge.246: ; preds = %if.else.245, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -931,11 +938,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -952,11 +957,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -973,11 +976,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -990,7 +991,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1012,6 +1012,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1023,40 +1030,33 @@ if.then.239: ; preds = %entry
|
||||
if.merge.240: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.247
|
||||
|
||||
@@ -1167,6 +1167,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.40, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1256,7 +1263,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1276,7 +1282,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1285,7 +1290,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1305,7 +1309,6 @@ match.arm.44: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.169 [
|
||||
i64 37, label %dispatch.case.170
|
||||
i64 38, label %dispatch.case.171
|
||||
@@ -1322,7 +1325,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.180 [
|
||||
i64 35, label %dispatch.case.181
|
||||
i64 55, label %dispatch.case.182
|
||||
@@ -1333,7 +1335,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.200 [
|
||||
i64 36, label %dispatch.case.201
|
||||
i64 48, label %dispatch.case.202
|
||||
@@ -1343,7 +1344,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.214 [
|
||||
i64 18, label %dispatch.case.215
|
||||
i64 22, label %dispatch.case.216
|
||||
@@ -2510,6 +2510,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.159, i64 15 }, { ptr, i64 } { ptr @str.160, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2574,7 +2576,6 @@ fv.default: ; preds = %if.merge.112
|
||||
|
||||
fv.case: ; preds = %if.merge.112
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2594,7 +2595,6 @@ fv.case20: ; preds = %if.merge.112
|
||||
|
||||
fv.case24: ; preds = %if.merge.112
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2889,6 +2889,7 @@ fv.case17: ; preds = %if.merge.132
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.197, i64 5 }, { ptr, i64 } { ptr @str.198, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2963,7 +2964,6 @@ fv.case17: ; preds = %if.merge.137
|
||||
|
||||
fv.case20: ; preds = %if.merge.137
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3056,6 +3056,7 @@ fv.case20: ; preds = %if.merge.142
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.215, i64 17 }, { ptr, i64 } { ptr @str.216, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3120,7 +3121,6 @@ fv.default: ; preds = %if.merge.147
|
||||
|
||||
fv.case: ; preds = %if.merge.147
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3146,6 +3146,7 @@ fv.case23: ; preds = %if.merge.147
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.225, i64 7 }, { ptr, i64 } { ptr @str.226, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3208,7 +3209,6 @@ fv.default: ; preds = %if.merge.152
|
||||
|
||||
fv.case: ; preds = %if.merge.152
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3518,6 +3518,11 @@ if.merge.176: ; preds = %if.then.175, %entry
|
||||
define internal { ptr, i64 } @enum_to_string__Shape(ptr %0, { i64, [8 x i8] } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, [8 x i8] }, align 8
|
||||
%fv.utmp = alloca { i64, [8 x i8] }, align 8
|
||||
%fv.utmp7 = alloca { i64, [8 x i8] }, align 8
|
||||
%ba.tmp = alloca { float, float }, align 8
|
||||
%allocaN = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, [8 x i8] } %1, ptr %alloca, align 8
|
||||
%load = load { i64, [8 x i8] }, ptr %alloca, align 8
|
||||
%etag = extractvalue { i64, [8 x i8] } %load, 0
|
||||
@@ -3552,11 +3557,9 @@ if.merge.178: ; preds = %if.then.177, %fv.me
|
||||
|
||||
fv.merge: ; preds = %fv.default, %fv.case11, %fv.case6, %fv.case
|
||||
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val10, %fv.case6 ], [ { i64 17, i64 0 }, %fv.case11 ], [ undef, %fv.default ]
|
||||
%allocaN = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %fv.phi, ptr %allocaN, align 8
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
@@ -3567,7 +3570,6 @@ fv.default: ; preds = %entry
|
||||
br label %fv.merge
|
||||
|
||||
fv.case: ; preds = %entry
|
||||
%fv.utmp = alloca { i64, [8 x i8] }, align 8
|
||||
store { i64, [8 x i8] } %loadN, ptr %fv.utmp, align 8
|
||||
%fv.pp = getelementptr inbounds { i64, [8 x i8] }, ptr %fv.utmp, i32 0, i32 1
|
||||
%fv.field = load float, ptr %fv.pp, align 4
|
||||
@@ -3577,11 +3579,9 @@ fv.case: ; preds = %entry
|
||||
br label %fv.merge
|
||||
|
||||
fv.case6: ; preds = %entry
|
||||
%fv.utmp7 = alloca { i64, [8 x i8] }, align 8
|
||||
store { i64, [8 x i8] } %loadN, ptr %fv.utmp7, align 8
|
||||
%fv.pp8 = getelementptr inbounds { i64, [8 x i8] }, ptr %fv.utmp7, i32 0, i32 1
|
||||
%fv.field9 = load { float, float }, ptr %fv.pp8, align 4
|
||||
%ba.tmp = alloca { float, float }, align 8
|
||||
store { float, float } %fv.field9, ptr %ba.tmp, align 4
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val10 = insertvalue { i64, i64 } { i64 42, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3595,6 +3595,7 @@ fv.case11: ; preds = %entry
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.282, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3627,7 +3628,6 @@ if.merge.188: ; preds = %if.then.187, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3645,6 +3645,8 @@ if.merge.188: ; preds = %if.then.187, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [2 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [2 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [2 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.285, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3677,11 +3679,9 @@ if.merge.193: ; preds = %if.then.192, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [2 x { i64, i64 }], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [2 x { i64, i64 }], align 8
|
||||
store [2 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [2 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3698,6 +3698,8 @@ if.merge.193: ; preds = %if.then.192, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.288, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3730,11 +3732,9 @@ if.merge.198: ; preds = %if.then.197, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3751,6 +3751,7 @@ if.merge.198: ; preds = %if.then.197, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.291, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3788,7 +3789,6 @@ if.merge.207: ; preds = %if.then.206, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3805,6 +3805,7 @@ if.merge.207: ; preds = %if.then.206, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.294, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3842,7 +3843,6 @@ if.merge.212: ; preds = %if.then.211, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -426,6 +426,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -437,15 +442,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -457,7 +458,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -515,6 +515,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -526,18 +537,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -545,9 +552,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -562,7 +567,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -575,7 +579,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -588,7 +591,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -609,12 +611,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -667,6 +667,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -686,11 +698,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -698,7 +708,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -713,19 +722,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -738,20 +743,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -787,7 +788,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -815,6 +815,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -838,7 +839,6 @@ while.hdr.224: ; preds = %if.merge.229, %entr
|
||||
while.body.225: ; preds = %while.hdr.224
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -879,6 +879,13 @@ if.merge.229: ; preds = %if.else.228, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -899,11 +906,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -920,11 +925,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -941,11 +944,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -958,7 +959,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -980,6 +980,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -991,40 +998,33 @@ if.then.222: ; preds = %entry
|
||||
if.merge.223: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.230
|
||||
|
||||
@@ -1135,6 +1135,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.40, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1219,7 +1226,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1239,7 +1245,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1248,7 +1253,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1267,7 +1271,6 @@ match.arm.44: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.163 [
|
||||
i64 37, label %dispatch.case.164
|
||||
i64 38, label %dispatch.case.165
|
||||
@@ -1283,7 +1286,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.171 [
|
||||
i64 35, label %dispatch.case.172
|
||||
i64 53, label %dispatch.case.173
|
||||
@@ -1293,7 +1295,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.185 [
|
||||
i64 36, label %dispatch.case.186
|
||||
i64 46, label %dispatch.case.187
|
||||
@@ -1303,7 +1304,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.199 [
|
||||
i64 18, label %dispatch.case.200
|
||||
i64 22, label %dispatch.case.201
|
||||
@@ -2397,6 +2397,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.151, i64 15 }, { ptr, i64 } { ptr @str.152, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2461,7 +2463,6 @@ fv.default: ; preds = %if.merge.111
|
||||
|
||||
fv.case: ; preds = %if.merge.111
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2481,7 +2482,6 @@ fv.case20: ; preds = %if.merge.111
|
||||
|
||||
fv.case24: ; preds = %if.merge.111
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2776,6 +2776,7 @@ fv.case17: ; preds = %if.merge.131
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.189, i64 5 }, { ptr, i64 } { ptr @str.190, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2850,7 +2851,6 @@ fv.case17: ; preds = %if.merge.136
|
||||
|
||||
fv.case20: ; preds = %if.merge.136
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2943,6 +2943,7 @@ fv.case20: ; preds = %if.merge.141
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.207, i64 17 }, { ptr, i64 } { ptr @str.208, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3007,7 +3008,6 @@ fv.default: ; preds = %if.merge.146
|
||||
|
||||
fv.case: ; preds = %if.merge.146
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3033,6 +3033,7 @@ fv.case23: ; preds = %if.merge.146
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 7 }, { ptr, i64 } { ptr @str.218, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3095,7 +3096,6 @@ fv.default: ; preds = %if.merge.151
|
||||
|
||||
fv.case: ; preds = %if.merge.151
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3326,6 +3326,7 @@ if.merge.169: ; preds = %if.then.168, %entry
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.259, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3358,7 +3359,6 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3376,6 +3376,8 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.262, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3408,11 +3410,9 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3429,6 +3429,7 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.265, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3466,7 +3467,6 @@ if.merge.192: ; preds = %if.then.191, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3483,6 +3483,7 @@ if.merge.192: ; preds = %if.then.191, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.268, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3520,7 +3521,6 @@ if.merge.197: ; preds = %if.then.196, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -390,6 +390,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -401,15 +406,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -421,7 +422,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -479,6 +479,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -490,18 +501,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -509,9 +516,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -526,7 +531,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -539,7 +543,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -552,7 +555,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -573,12 +575,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -631,6 +631,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -650,11 +662,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -662,7 +672,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -677,19 +686,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -702,20 +707,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -751,7 +752,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -779,6 +779,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -802,7 +803,6 @@ while.hdr.210: ; preds = %if.merge.215, %entr
|
||||
while.body.211: ; preds = %while.hdr.210
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -843,6 +843,13 @@ if.merge.215: ; preds = %if.else.214, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -863,11 +870,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -884,11 +889,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -905,11 +908,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -922,7 +923,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -944,6 +944,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -955,40 +962,33 @@ if.then.208: ; preds = %entry
|
||||
if.merge.209: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.216
|
||||
|
||||
@@ -1099,6 +1099,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1180,7 +1186,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1200,7 +1205,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1209,7 +1213,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1235,7 +1238,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.151 [
|
||||
i64 35, label %dispatch.case.152
|
||||
i64 44, label %dispatch.case.153
|
||||
@@ -1246,7 +1248,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.171 [
|
||||
i64 36, label %dispatch.case.172
|
||||
i64 42, label %dispatch.case.173
|
||||
@@ -1256,7 +1257,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.185 [
|
||||
i64 18, label %dispatch.case.186
|
||||
i64 22, label %dispatch.case.187
|
||||
@@ -2154,6 +2154,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.114, i64 15 }, { ptr, i64 } { ptr @str.115, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2218,7 +2220,6 @@ fv.default: ; preds = %if.merge.109
|
||||
|
||||
fv.case: ; preds = %if.merge.109
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2238,7 +2239,6 @@ fv.case20: ; preds = %if.merge.109
|
||||
|
||||
fv.case24: ; preds = %if.merge.109
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2533,6 +2533,7 @@ fv.case17: ; preds = %if.merge.129
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.152, i64 5 }, { ptr, i64 } { ptr @str.153, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2607,7 +2608,6 @@ fv.case17: ; preds = %if.merge.134
|
||||
|
||||
fv.case20: ; preds = %if.merge.134
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2700,6 +2700,7 @@ fv.case20: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.170, i64 17 }, { ptr, i64 } { ptr @str.171, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2764,7 +2765,6 @@ fv.default: ; preds = %if.merge.144
|
||||
|
||||
fv.case: ; preds = %if.merge.144
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2790,6 +2790,7 @@ fv.case23: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.180, i64 7 }, { ptr, i64 } { ptr @str.181, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2852,7 +2853,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2869,6 +2869,7 @@ fv.case17: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.188, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2901,7 +2902,6 @@ if.merge.159: ; preds = %if.then.158, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2919,6 +2919,8 @@ if.merge.159: ; preds = %if.then.158, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2951,11 +2953,9 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2972,6 +2972,8 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [3 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [3 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.194, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3004,11 +3006,9 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
%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
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
store [3 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [3 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3025,6 +3025,7 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.197, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3062,7 +3063,6 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3079,6 +3079,7 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.200, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3116,7 +3117,6 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
1
examples/expected/0047-basic-loop-local-stack-reuse.exit
Normal file
1
examples/expected/0047-basic-loop-local-stack-reuse.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
sum=499999500000
|
||||
n=3000000
|
||||
@@ -370,6 +370,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -381,15 +386,11 @@ if.then.19: ; preds = %entry
|
||||
if.merge.20: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
|
||||
@@ -401,7 +402,6 @@ while.hdr.21: ; preds = %if.merge.25, %if.me
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -459,6 +459,17 @@ if.merge.27: ; preds = %if.then.26, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -470,18 +481,14 @@ if.then.61: ; preds = %entry
|
||||
if.merge.62: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.71
|
||||
|
||||
while.hdr.71: ; preds = %while.exit.82, %if.merge.62
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -489,9 +496,7 @@ while.hdr.71: ; preds = %while.exit.82, %if.
|
||||
br i1 %icmpN, label %or.merge.75, label %or.rhs.74
|
||||
|
||||
while.body.72: ; preds = %or.merge.79
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.80
|
||||
|
||||
@@ -506,7 +511,6 @@ while.exit.73: ; preds = %or.merge.79
|
||||
|
||||
or.rhs.74: ; preds = %while.hdr.71
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -519,7 +523,6 @@ or.merge.75: ; preds = %or.rhs.74, %while.h
|
||||
|
||||
or.rhs.76: ; preds = %or.merge.75
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -532,7 +535,6 @@ or.merge.77: ; preds = %or.rhs.76, %or.merg
|
||||
|
||||
or.rhs.78: ; preds = %or.merge.77
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -553,12 +555,10 @@ while.body.81: ; preds = %while.hdr.80
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -611,6 +611,18 @@ if.merge.85: ; preds = %if.else.84, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -630,11 +642,9 @@ if.else.90: ; preds = %entry
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bp = phi double [ %fsub, %if.then.89 ], [ %loadN, %if.else.90 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -642,7 +652,6 @@ if.merge.91: ; preds = %if.else.90, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -657,19 +666,15 @@ if.then.92: ; preds = %if.merge.91
|
||||
if.merge.93: ; preds = %if.then.92, %if.merge.91
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.94, label %if.else.95
|
||||
@@ -682,20 +687,16 @@ if.else.95: ; preds = %if.merge.93
|
||||
|
||||
if.merge.96: ; preds = %if.else.95, %if.then.94
|
||||
%bpN = phi i64 [ 1, %if.then.94 ], [ 0, %if.else.95 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.97, label %if.merge.98
|
||||
@@ -731,7 +732,6 @@ if.merge.98: ; preds = %if.then.97, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -759,6 +759,7 @@ if.merge.98: ; preds = %if.then.97, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -782,7 +783,6 @@ while.hdr.208: ; preds = %if.merge.213, %entr
|
||||
while.body.209: ; preds = %while.hdr.208
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -823,6 +823,13 @@ if.merge.213: ; preds = %if.else.212, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -843,11 +850,9 @@ if.merge.64: ; preds = %if.then.63, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -864,11 +869,9 @@ if.merge.66: ; preds = %if.then.65, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -885,11 +888,9 @@ if.merge.68: ; preds = %if.then.67, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -902,7 +903,6 @@ if.then.69: ; preds = %if.merge.68
|
||||
br label %if.merge.70
|
||||
|
||||
if.merge.70: ; preds = %if.then.69, %if.merge.68
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -924,6 +924,13 @@ if.merge.70: ; preds = %if.then.69, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -935,40 +942,33 @@ if.then.206: ; preds = %entry
|
||||
if.merge.207: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.214
|
||||
|
||||
@@ -1079,6 +1079,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1158,7 +1164,6 @@ match.arm.44: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.58, label %if.else.59
|
||||
|
||||
match.arm.45: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1178,7 +1183,6 @@ match.arm.46: ; preds = %entry
|
||||
|
||||
match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.86, label %fN.unbox.87
|
||||
@@ -1187,7 +1191,6 @@ match.arm.48: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.100 [
|
||||
i64 19, label %dispatch.case.101
|
||||
i64 20, label %dispatch.case.102
|
||||
@@ -1213,7 +1216,6 @@ match.arm.52: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.156 [
|
||||
i64 35, label %dispatch.case.157
|
||||
i64 44, label %dispatch.case.158
|
||||
@@ -1223,7 +1225,6 @@ match.arm.53: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.170 [
|
||||
i64 36, label %dispatch.case.171
|
||||
i64 42, label %dispatch.case.172
|
||||
@@ -1233,7 +1234,6 @@ match.arm.54: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.184 [
|
||||
i64 18, label %dispatch.case.185
|
||||
i64 22, label %dispatch.case.186
|
||||
@@ -1871,6 +1871,7 @@ if.merge.41: ; preds = %if.then.40, %while.
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca float, align 4
|
||||
store i64 42, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp ne i64 %load, 0
|
||||
@@ -1881,7 +1882,6 @@ if.then.0: ; preds = %entry
|
||||
br label %if.merge.1
|
||||
|
||||
if.merge.1: ; preds = %if.then.0, %entry
|
||||
%allocaN = alloca float, align 4
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.2, label %if.else.3
|
||||
@@ -1973,6 +1973,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.100, i64 15 }, { ptr, i64 } { ptr @str.101, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2037,7 +2039,6 @@ fv.default: ; preds = %if.merge.114
|
||||
|
||||
fv.case: ; preds = %if.merge.114
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2057,7 +2058,6 @@ fv.case20: ; preds = %if.merge.114
|
||||
|
||||
fv.case24: ; preds = %if.merge.114
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2352,6 +2352,7 @@ fv.case17: ; preds = %if.merge.134
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 5 }, { ptr, i64 } { ptr @str.139, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2426,7 +2427,6 @@ fv.case17: ; preds = %if.merge.139
|
||||
|
||||
fv.case20: ; preds = %if.merge.139
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2519,6 +2519,7 @@ fv.case20: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.156, i64 17 }, { ptr, i64 } { ptr @str.157, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2583,7 +2584,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2609,6 +2609,7 @@ fv.case23: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 7 }, { ptr, i64 } { ptr @str.167, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2671,7 +2672,6 @@ fv.default: ; preds = %if.merge.154
|
||||
|
||||
fv.case: ; preds = %if.merge.154
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2688,6 +2688,7 @@ fv.case17: ; preds = %if.merge.154
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.174, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2720,7 +2721,6 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2738,6 +2738,8 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.177, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2770,11 +2772,9 @@ if.merge.168: ; preds = %if.then.167, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2791,6 +2791,7 @@ if.merge.168: ; preds = %if.then.167, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.180, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2828,7 +2829,6 @@ if.merge.177: ; preds = %if.then.176, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2845,6 +2845,7 @@ if.merge.177: ; preds = %if.then.176, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.183, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2882,7 +2883,6 @@ if.merge.182: ; preds = %if.then.181, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -371,6 +371,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -382,15 +387,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -402,7 +403,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -460,6 +460,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -471,18 +482,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -490,9 +497,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -507,7 +512,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -520,7 +524,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -533,7 +536,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -554,12 +556,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -612,6 +612,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -631,11 +643,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -643,7 +653,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -658,19 +667,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -683,20 +688,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -732,7 +733,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -760,6 +760,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -783,7 +784,6 @@ while.hdr.203: ; preds = %if.merge.208, %entr
|
||||
while.body.204: ; preds = %while.hdr.203
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -824,6 +824,13 @@ if.merge.208: ; preds = %if.else.207, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -844,11 +851,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -865,11 +870,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -886,11 +889,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -903,7 +904,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -925,6 +925,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -936,40 +943,33 @@ if.then.201: ; preds = %entry
|
||||
if.merge.202: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.209
|
||||
|
||||
@@ -1080,6 +1080,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1159,7 +1165,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1179,7 +1184,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1188,7 +1192,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1214,7 +1217,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.151 [
|
||||
i64 35, label %dispatch.case.152
|
||||
i64 43, label %dispatch.case.153
|
||||
@@ -1224,7 +1226,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.165 [
|
||||
i64 36, label %dispatch.case.166
|
||||
i64 41, label %dispatch.case.167
|
||||
@@ -1234,7 +1235,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.179 [
|
||||
i64 18, label %dispatch.case.180
|
||||
i64 22, label %dispatch.case.181
|
||||
@@ -2029,6 +2029,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.101, i64 15 }, { ptr, i64 } { ptr @str.102, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2093,7 +2095,6 @@ fv.default: ; preds = %if.merge.109
|
||||
|
||||
fv.case: ; preds = %if.merge.109
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2113,7 +2114,6 @@ fv.case20: ; preds = %if.merge.109
|
||||
|
||||
fv.case24: ; preds = %if.merge.109
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2408,6 +2408,7 @@ fv.case17: ; preds = %if.merge.129
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.139, i64 5 }, { ptr, i64 } { ptr @str.140, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2482,7 +2483,6 @@ fv.case17: ; preds = %if.merge.134
|
||||
|
||||
fv.case20: ; preds = %if.merge.134
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2575,6 +2575,7 @@ fv.case20: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.157, i64 17 }, { ptr, i64 } { ptr @str.158, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2639,7 +2640,6 @@ fv.default: ; preds = %if.merge.144
|
||||
|
||||
fv.case: ; preds = %if.merge.144
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2665,6 +2665,7 @@ fv.case23: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.167, i64 7 }, { ptr, i64 } { ptr @str.168, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2727,7 +2728,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2744,6 +2744,7 @@ fv.case17: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.175, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2776,7 +2777,6 @@ if.merge.158: ; preds = %if.then.157, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2794,6 +2794,8 @@ if.merge.158: ; preds = %if.then.157, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.178, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2826,11 +2828,9 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2847,6 +2847,7 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.181, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2884,7 +2885,6 @@ if.merge.172: ; preds = %if.then.171, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2901,6 +2901,7 @@ if.merge.172: ; preds = %if.then.171, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2938,7 +2939,6 @@ if.merge.177: ; preds = %if.then.176, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -508,6 +508,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -519,15 +524,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -539,7 +540,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -597,6 +597,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -608,18 +619,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -627,9 +634,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -644,7 +649,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -657,7 +661,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -670,7 +673,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -691,12 +693,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -749,6 +749,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -768,11 +780,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -780,7 +790,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -795,19 +804,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -820,20 +825,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -869,7 +870,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -897,6 +897,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -920,7 +921,6 @@ while.hdr.270: ; preds = %if.merge.275, %entr
|
||||
while.body.271: ; preds = %while.hdr.270
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -961,6 +961,13 @@ if.merge.275: ; preds = %if.else.274, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -981,11 +988,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1002,11 +1007,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1023,11 +1026,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1040,7 +1041,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1062,6 +1062,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1073,40 +1080,33 @@ if.then.268: ; preds = %entry
|
||||
if.merge.269: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.276
|
||||
|
||||
@@ -1217,6 +1217,14 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1312,7 +1320,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1332,7 +1339,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1341,7 +1347,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1364,7 +1369,6 @@ match.arm.44: ; preds = %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.187 [
|
||||
i64 63, label %dispatch.case.188
|
||||
]
|
||||
@@ -1376,7 +1380,6 @@ match.arm.46: ; preds = %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.192 [
|
||||
i64 40, label %dispatch.case.193
|
||||
]
|
||||
@@ -1385,7 +1388,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.200 [
|
||||
i64 35, label %dispatch.case.201
|
||||
i64 37, label %dispatch.case.202
|
||||
@@ -1397,7 +1399,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.226 [
|
||||
i64 36, label %dispatch.case.227
|
||||
i64 50, label %dispatch.case.228
|
||||
@@ -1407,7 +1408,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw36 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw36, label %dispatch.default.240 [
|
||||
i64 18, label %dispatch.case.241
|
||||
i64 22, label %dispatch.case.242
|
||||
@@ -3021,6 +3021,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 15 }, { ptr, i64 } { ptr @str.161, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3085,7 +3087,6 @@ fv.default: ; preds = %if.merge.115
|
||||
|
||||
fv.case: ; preds = %if.merge.115
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3105,7 +3106,6 @@ fv.case20: ; preds = %if.merge.115
|
||||
|
||||
fv.case24: ; preds = %if.merge.115
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -3400,6 +3400,7 @@ fv.case17: ; preds = %if.merge.135
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.198, i64 5 }, { ptr, i64 } { ptr @str.199, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3474,7 +3475,6 @@ fv.case17: ; preds = %if.merge.140
|
||||
|
||||
fv.case20: ; preds = %if.merge.140
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3567,6 +3567,7 @@ fv.case20: ; preds = %if.merge.145
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.216, i64 17 }, { ptr, i64 } { ptr @str.217, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3631,7 +3632,6 @@ fv.default: ; preds = %if.merge.150
|
||||
|
||||
fv.case: ; preds = %if.merge.150
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3657,6 +3657,7 @@ fv.case23: ; preds = %if.merge.150
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 7 }, { ptr, i64 } { ptr @str.227, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3719,7 +3720,6 @@ fv.default: ; preds = %if.merge.155
|
||||
|
||||
fv.case: ; preds = %if.merge.155
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3736,6 +3736,7 @@ fv.case17: ; preds = %if.merge.155
|
||||
define internal { ptr, i64 } @struct_to_string__Mat4(ptr %0, { [16 x float] } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { [16 x float] }, align 8
|
||||
%ba.tmp = alloca [16 x float], align 4
|
||||
store { [16 x float] } %1, ptr %alloca, align 4
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.234, i64 4 }, { ptr, i64 } { ptr @str.235, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3797,7 +3798,6 @@ fv.default: ; preds = %if.merge.160
|
||||
|
||||
fv.case: ; preds = %if.merge.160
|
||||
%fv.field = extractvalue { [16 x float] } %loadN, 0
|
||||
%ba.tmp = alloca [16 x float], align 4
|
||||
store [16 x float] %fv.field, ptr %ba.tmp, align 4
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3887,6 +3887,7 @@ fv.case17: ; preds = %if.merge.165
|
||||
define internal { ptr, i64 } @struct_to_string__Vec__3__f32(ptr %0, { <3 x float> } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { <3 x float> }, align 16
|
||||
%ba.tmp = alloca <3 x float>, align 16
|
||||
store { <3 x float> } %1, ptr %alloca, align 16
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.249, i64 11 }, { ptr, i64 } { ptr @str.250, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3948,7 +3949,6 @@ fv.default: ; preds = %if.merge.170
|
||||
|
||||
fv.case: ; preds = %if.merge.170
|
||||
%fv.field = extractvalue { <3 x float> } %loadN, 0
|
||||
%ba.tmp = alloca <3 x float>, align 16
|
||||
store <3 x float> %fv.field, ptr %ba.tmp, align 16
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3959,6 +3959,7 @@ fv.case: ; preds = %if.merge.170
|
||||
define internal { ptr, i64 } @struct_to_string__Vec3(ptr %0, { <3 x float> } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { <3 x float> }, align 16
|
||||
%ba.tmp = alloca <3 x float>, align 16
|
||||
store { <3 x float> } %1, ptr %alloca, align 16
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.256, i64 4 }, { ptr, i64 } { ptr @str.257, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -4020,7 +4021,6 @@ fv.default: ; preds = %if.merge.175
|
||||
|
||||
fv.case: ; preds = %if.merge.175
|
||||
%fv.field = extractvalue { <3 x float> } %loadN, 0
|
||||
%ba.tmp = alloca <3 x float>, align 16
|
||||
store <3 x float> %fv.field, ptr %ba.tmp, align 16
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 40, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -4185,6 +4185,10 @@ fv.case17: ; preds = %if.merge.185
|
||||
define internal { ptr, i64 } @enum_to_string__Sx__f32(ptr %0, { i64, [4 x i8] } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, [4 x i8] }, align 8
|
||||
%fv.utmp = alloca { i64, [4 x i8] }, align 8
|
||||
%fv.utmp7 = alloca { i64, [4 x i8] }, align 8
|
||||
%allocaN = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, [4 x i8] } %1, ptr %alloca, align 8
|
||||
%load = load { i64, [4 x i8] }, ptr %alloca, align 8
|
||||
%etag = extractvalue { i64, [4 x i8] } %load, 0
|
||||
@@ -4218,11 +4222,9 @@ if.merge.190: ; preds = %if.then.189, %fv.me
|
||||
|
||||
fv.merge: ; preds = %fv.default, %fv.case6, %fv.case
|
||||
%fv.phi = phi { i64, i64 } [ %fv.val, %fv.case ], [ %fv.val10, %fv.case6 ], [ undef, %fv.default ]
|
||||
%allocaN = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %fv.phi, ptr %allocaN, align 8
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
@@ -4233,7 +4235,6 @@ fv.default: ; preds = %entry
|
||||
br label %fv.merge
|
||||
|
||||
fv.case: ; preds = %entry
|
||||
%fv.utmp = alloca { i64, [4 x i8] }, align 8
|
||||
store { i64, [4 x i8] } %loadN, ptr %fv.utmp, align 8
|
||||
%fv.pp = getelementptr inbounds { i64, [4 x i8] }, ptr %fv.utmp, i32 0, i32 1
|
||||
%fv.field = load i32, ptr %fv.pp, align 4
|
||||
@@ -4242,7 +4243,6 @@ fv.case: ; preds = %entry
|
||||
br label %fv.merge
|
||||
|
||||
fv.case6: ; preds = %entry
|
||||
%fv.utmp7 = alloca { i64, [4 x i8] }, align 8
|
||||
store { i64, [4 x i8] } %loadN, ptr %fv.utmp7, align 8
|
||||
%fv.pp8 = getelementptr inbounds { i64, [4 x i8] }, ptr %fv.utmp7, i32 0, i32 1
|
||||
%fv.field9 = load float, ptr %fv.pp8, align 4
|
||||
@@ -4306,6 +4306,7 @@ if.merge.198: ; preds = %if.then.197, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.288, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4338,7 +4339,6 @@ if.merge.209: ; preds = %if.then.208, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -4356,6 +4356,7 @@ if.merge.209: ; preds = %if.then.208, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_16_f32(ptr %0, [16 x float] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [16 x float], align 4
|
||||
%ig.tmp = alloca [16 x float], align 4
|
||||
store [16 x float] %1, ptr %alloca, align 4
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.291, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4388,7 +4389,6 @@ if.merge.214: ; preds = %if.then.213, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [16 x float], ptr %alloca, align 4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [16 x float], align 4
|
||||
store [16 x float] %loadN, ptr %ig.tmp, align 4
|
||||
%ig.ptr = getelementptr [16 x float], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load float, ptr %ig.ptr, align 4
|
||||
@@ -4408,6 +4408,8 @@ if.merge.214: ; preds = %if.then.213, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.294, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4440,11 +4442,9 @@ if.merge.219: ; preds = %if.then.218, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -4461,6 +4461,7 @@ if.merge.219: ; preds = %if.then.218, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_5_f32(ptr %0, [5 x float] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [5 x float], align 4
|
||||
%ig.tmp = alloca [5 x float], align 4
|
||||
store [5 x float] %1, ptr %alloca, align 4
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.297, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4493,7 +4494,6 @@ if.merge.224: ; preds = %if.then.223, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [5 x float], ptr %alloca, align 4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [5 x float], align 4
|
||||
store [5 x float] %loadN, ptr %ig.tmp, align 4
|
||||
%ig.ptr = getelementptr [5 x float], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load float, ptr %ig.ptr, align 4
|
||||
@@ -4513,6 +4513,7 @@ if.merge.224: ; preds = %if.then.223, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.300, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4550,7 +4551,6 @@ if.merge.233: ; preds = %if.then.232, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -4567,6 +4567,7 @@ if.merge.233: ; preds = %if.then.232, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.303, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4604,7 +4605,6 @@ if.merge.238: ; preds = %if.then.237, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -381,6 +381,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -392,15 +397,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -412,7 +413,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -470,6 +470,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -481,18 +492,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -500,9 +507,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -517,7 +522,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -530,7 +534,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -543,7 +546,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -564,12 +566,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -622,6 +622,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -641,11 +653,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -653,7 +663,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -668,19 +677,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -693,20 +698,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -742,7 +743,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -770,6 +770,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -793,7 +794,6 @@ while.hdr.204: ; preds = %if.merge.209, %entr
|
||||
while.body.205: ; preds = %while.hdr.204
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -834,6 +834,13 @@ if.merge.209: ; preds = %if.else.208, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -854,11 +861,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -875,11 +880,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -896,11 +899,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -913,7 +914,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -935,6 +935,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -946,40 +953,33 @@ if.then.202: ; preds = %entry
|
||||
if.merge.203: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.210
|
||||
|
||||
@@ -1090,6 +1090,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1170,7 +1176,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1190,7 +1195,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1199,7 +1203,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1225,7 +1228,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.151 [
|
||||
i64 35, label %dispatch.case.152
|
||||
i64 46, label %dispatch.case.153
|
||||
@@ -1235,7 +1237,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.165 [
|
||||
i64 36, label %dispatch.case.166
|
||||
i64 44, label %dispatch.case.167
|
||||
@@ -1245,7 +1246,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.179 [
|
||||
i64 18, label %dispatch.case.180
|
||||
i64 22, label %dispatch.case.181
|
||||
@@ -2122,6 +2122,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.108, i64 15 }, { ptr, i64 } { ptr @str.109, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2186,7 +2188,6 @@ fv.default: ; preds = %if.merge.109
|
||||
|
||||
fv.case: ; preds = %if.merge.109
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2206,7 +2207,6 @@ fv.case20: ; preds = %if.merge.109
|
||||
|
||||
fv.case24: ; preds = %if.merge.109
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2501,6 +2501,7 @@ fv.case17: ; preds = %if.merge.129
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.146, i64 5 }, { ptr, i64 } { ptr @str.147, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2575,7 +2576,6 @@ fv.case17: ; preds = %if.merge.134
|
||||
|
||||
fv.case20: ; preds = %if.merge.134
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2668,6 +2668,7 @@ fv.case20: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.164, i64 17 }, { ptr, i64 } { ptr @str.165, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2732,7 +2733,6 @@ fv.default: ; preds = %if.merge.144
|
||||
|
||||
fv.case: ; preds = %if.merge.144
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2758,6 +2758,7 @@ fv.case23: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.174, i64 7 }, { ptr, i64 } { ptr @str.175, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2820,7 +2821,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2837,6 +2837,7 @@ fv.case17: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.182, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2869,7 +2870,6 @@ if.merge.158: ; preds = %if.then.157, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2887,6 +2887,8 @@ if.merge.158: ; preds = %if.then.157, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.185, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2919,11 +2921,9 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2940,6 +2940,7 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.188, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2977,7 +2978,6 @@ if.merge.172: ; preds = %if.then.171, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2994,6 +2994,7 @@ if.merge.172: ; preds = %if.then.171, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3031,7 +3032,6 @@ if.merge.177: ; preds = %if.then.176, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -456,6 +456,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -467,15 +472,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -487,7 +488,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -545,6 +545,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -556,18 +567,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -575,9 +582,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -592,7 +597,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -605,7 +609,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -618,7 +621,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -639,12 +641,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -697,6 +697,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -716,11 +728,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -728,7 +738,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -743,19 +752,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -768,20 +773,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -817,7 +818,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -845,6 +845,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -868,7 +869,6 @@ while.hdr.211: ; preds = %if.merge.216, %entr
|
||||
while.body.212: ; preds = %while.hdr.211
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -909,6 +909,13 @@ if.merge.216: ; preds = %if.else.215, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -929,11 +936,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -950,11 +955,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -971,11 +974,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -988,7 +989,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1010,6 +1010,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1021,40 +1028,33 @@ if.then.209: ; preds = %entry
|
||||
if.merge.210: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.217
|
||||
|
||||
@@ -1165,6 +1165,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1247,7 +1253,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1267,7 +1272,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1276,7 +1280,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1303,7 +1306,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.157 [
|
||||
i64 36, label %dispatch.case.158
|
||||
i64 45, label %dispatch.case.159
|
||||
@@ -1313,7 +1315,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.171 [
|
||||
i64 37, label %dispatch.case.172
|
||||
i64 43, label %dispatch.case.173
|
||||
@@ -1323,7 +1324,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.185 [
|
||||
i64 18, label %dispatch.case.186
|
||||
i64 23, label %dispatch.case.187
|
||||
@@ -2195,6 +2195,8 @@ fv.case17: ; preds = %if.merge.110
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.112, i64 15 }, { ptr, i64 } { ptr @str.113, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2259,7 +2261,6 @@ fv.default: ; preds = %if.merge.115
|
||||
|
||||
fv.case: ; preds = %if.merge.115
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2279,7 +2280,6 @@ fv.case20: ; preds = %if.merge.115
|
||||
|
||||
fv.case24: ; preds = %if.merge.115
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2574,6 +2574,7 @@ fv.case17: ; preds = %if.merge.135
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.152, i64 5 }, { ptr, i64 } { ptr @str.153, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2648,7 +2649,6 @@ fv.case17: ; preds = %if.merge.140
|
||||
|
||||
fv.case20: ; preds = %if.merge.140
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 21, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2741,6 +2741,7 @@ fv.case20: ; preds = %if.merge.145
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.170, i64 17 }, { ptr, i64 } { ptr @str.171, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2805,7 +2806,6 @@ fv.default: ; preds = %if.merge.150
|
||||
|
||||
fv.case: ; preds = %if.merge.150
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 21, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2831,6 +2831,7 @@ fv.case23: ; preds = %if.merge.150
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.180, i64 7 }, { ptr, i64 } { ptr @str.181, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2893,7 +2894,6 @@ fv.default: ; preds = %if.merge.155
|
||||
|
||||
fv.case: ; preds = %if.merge.155
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 21, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2910,6 +2910,7 @@ fv.case17: ; preds = %if.merge.155
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.188, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2942,7 +2943,6 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2960,6 +2960,8 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2992,11 +2994,9 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3013,6 +3013,7 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.194, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3050,7 +3051,6 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3067,6 +3067,7 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.197, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3104,7 +3105,6 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -458,6 +458,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -469,15 +474,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -489,7 +490,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -547,6 +547,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -558,18 +569,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -577,9 +584,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -594,7 +599,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -607,7 +611,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -620,7 +623,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -641,12 +643,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -699,6 +699,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -718,11 +730,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -730,7 +740,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -745,19 +754,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -770,20 +775,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -819,7 +820,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -847,6 +847,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -870,7 +871,6 @@ while.hdr.246: ; preds = %if.merge.251, %entr
|
||||
while.body.247: ; preds = %while.hdr.246
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -911,6 +911,13 @@ if.merge.251: ; preds = %if.else.250, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -931,11 +938,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -952,11 +957,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -973,11 +976,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -990,7 +991,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1012,6 +1012,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1023,40 +1030,33 @@ if.then.244: ; preds = %entry
|
||||
if.merge.245: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.252
|
||||
|
||||
@@ -1167,6 +1167,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1259,7 +1265,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1279,7 +1284,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1288,7 +1292,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1320,7 +1323,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.187 [
|
||||
i64 35, label %dispatch.case.188
|
||||
i64 52, label %dispatch.case.189
|
||||
@@ -1330,7 +1332,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.201 [
|
||||
i64 36, label %dispatch.case.202
|
||||
i64 50, label %dispatch.case.203
|
||||
@@ -1340,7 +1341,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.215 [
|
||||
i64 18, label %dispatch.case.216
|
||||
i64 22, label %dispatch.case.217
|
||||
@@ -2282,6 +2282,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.121, i64 15 }, { ptr, i64 } { ptr @str.122, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2346,7 +2348,6 @@ fv.default: ; preds = %if.merge.115
|
||||
|
||||
fv.case: ; preds = %if.merge.115
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2366,7 +2367,6 @@ fv.case20: ; preds = %if.merge.115
|
||||
|
||||
fv.case24: ; preds = %if.merge.115
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2661,6 +2661,7 @@ fv.case17: ; preds = %if.merge.135
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.159, i64 5 }, { ptr, i64 } { ptr @str.160, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2735,7 +2736,6 @@ fv.case17: ; preds = %if.merge.140
|
||||
|
||||
fv.case20: ; preds = %if.merge.140
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2828,6 +2828,7 @@ fv.case20: ; preds = %if.merge.145
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.177, i64 17 }, { ptr, i64 } { ptr @str.178, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2892,7 +2893,6 @@ fv.default: ; preds = %if.merge.150
|
||||
|
||||
fv.case: ; preds = %if.merge.150
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2918,6 +2918,7 @@ fv.case23: ; preds = %if.merge.150
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.187, i64 7 }, { ptr, i64 } { ptr @str.188, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2980,7 +2981,6 @@ fv.default: ; preds = %if.merge.155
|
||||
|
||||
fv.case: ; preds = %if.merge.155
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3066,6 +3066,7 @@ fv.case: ; preds = %if.merge.160
|
||||
define internal { ptr, i64 } @struct_to_string__StrCell(ptr %0, { { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.202, i64 7 }, { ptr, i64 } { ptr @str.203, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3127,7 +3128,6 @@ fv.default: ; preds = %if.merge.165
|
||||
|
||||
fv.case: ; preds = %if.merge.165
|
||||
%fv.field = extractvalue { { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3432,6 +3432,7 @@ fv.case: ; preds = %if.merge.185
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.239, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3464,7 +3465,6 @@ if.merge.194: ; preds = %if.then.193, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3482,6 +3482,8 @@ if.merge.194: ; preds = %if.then.193, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.242, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3514,11 +3516,9 @@ if.merge.199: ; preds = %if.then.198, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3535,6 +3535,7 @@ if.merge.199: ; preds = %if.then.198, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.245, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3572,7 +3573,6 @@ if.merge.208: ; preds = %if.then.207, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3589,6 +3589,7 @@ if.merge.208: ; preds = %if.then.207, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.248, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3626,7 +3627,6 @@ if.merge.213: ; preds = %if.then.212, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -463,6 +463,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -474,15 +479,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -494,7 +495,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -552,6 +552,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -563,18 +574,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -582,9 +589,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -599,7 +604,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -612,7 +616,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -625,7 +628,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -646,12 +648,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -704,6 +704,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -723,11 +735,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -735,7 +745,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -750,19 +759,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -775,20 +780,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -824,7 +825,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -852,6 +852,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -875,7 +876,6 @@ while.hdr.257: ; preds = %if.merge.262, %entr
|
||||
while.body.258: ; preds = %while.hdr.257
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -916,6 +916,13 @@ if.merge.262: ; preds = %if.else.261, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -936,11 +943,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -957,11 +962,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -978,11 +981,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -995,7 +996,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1017,6 +1017,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1028,40 +1035,33 @@ if.then.255: ; preds = %entry
|
||||
if.merge.256: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.263
|
||||
|
||||
@@ -1172,6 +1172,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1265,7 +1271,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1285,7 +1290,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1294,7 +1298,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1327,7 +1330,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.193 [
|
||||
i64 35, label %dispatch.case.194
|
||||
i64 50, label %dispatch.case.195
|
||||
@@ -1337,7 +1339,6 @@ match.arm.48: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.207 [
|
||||
i64 36, label %dispatch.case.208
|
||||
i64 44, label %dispatch.case.209
|
||||
@@ -1348,7 +1349,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.227 [
|
||||
i64 18, label %dispatch.case.228
|
||||
i64 22, label %dispatch.case.229
|
||||
@@ -2247,6 +2247,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.122, i64 15 }, { ptr, i64 } { ptr @str.123, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2311,7 +2313,6 @@ fv.default: ; preds = %if.merge.116
|
||||
|
||||
fv.case: ; preds = %if.merge.116
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2331,7 +2332,6 @@ fv.case20: ; preds = %if.merge.116
|
||||
|
||||
fv.case24: ; preds = %if.merge.116
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2626,6 +2626,7 @@ fv.case17: ; preds = %if.merge.136
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 5 }, { ptr, i64 } { ptr @str.161, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2700,7 +2701,6 @@ fv.case17: ; preds = %if.merge.141
|
||||
|
||||
fv.case20: ; preds = %if.merge.141
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2793,6 +2793,7 @@ fv.case20: ; preds = %if.merge.146
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.178, i64 17 }, { ptr, i64 } { ptr @str.179, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2857,7 +2858,6 @@ fv.default: ; preds = %if.merge.151
|
||||
|
||||
fv.case: ; preds = %if.merge.151
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2883,6 +2883,7 @@ fv.case23: ; preds = %if.merge.151
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 7 }, { ptr, i64 } { ptr @str.189, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2945,7 +2946,6 @@ fv.default: ; preds = %if.merge.156
|
||||
|
||||
fv.case: ; preds = %if.merge.156
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3343,6 +3343,7 @@ if.merge.186: ; preds = %if.then.185, %while
|
||||
define internal { ptr, i64 } @struct_to_string__Combined__s64__s64(ptr %0, { { { ptr, ptr } }, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { { ptr, ptr } }, i64 }, align 8
|
||||
%ba.tmp = alloca { { ptr, ptr } }, align 8
|
||||
store { { { ptr, ptr } }, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.236, i64 18 }, { ptr, i64 } { ptr @str.237, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3405,7 +3406,6 @@ fv.default: ; preds = %if.merge.191
|
||||
|
||||
fv.case: ; preds = %if.merge.191
|
||||
%fv.field = extractvalue { { { ptr, ptr } }, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { { ptr, ptr } }, align 8
|
||||
store { { ptr, ptr } } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 53, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3421,6 +3421,7 @@ fv.case17: ; preds = %if.merge.191
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.244, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3453,7 +3454,6 @@ if.merge.200: ; preds = %if.then.199, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3471,6 +3471,8 @@ if.merge.200: ; preds = %if.then.199, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.247, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3503,11 +3505,9 @@ if.merge.205: ; preds = %if.then.204, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3524,6 +3524,7 @@ if.merge.205: ; preds = %if.then.204, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.250, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3561,7 +3562,6 @@ if.merge.215: ; preds = %if.then.214, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3578,6 +3578,7 @@ if.merge.215: ; preds = %if.then.214, %while
|
||||
define internal { ptr, i64 } @slice_to_string__VL(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca {}, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.253, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3615,7 +3616,6 @@ if.merge.220: ; preds = %if.then.219, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr {}, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load {}, ptr %ig.ptr, align 1
|
||||
%ba.tmp = alloca {}, align 8
|
||||
store {} %ig.val, ptr %ba.tmp, align 1
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 43, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3632,6 +3632,7 @@ if.merge.220: ; preds = %if.then.219, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.256, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3669,7 +3670,6 @@ if.merge.225: ; preds = %if.then.224, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -532,6 +532,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -543,15 +548,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -563,7 +564,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -621,6 +621,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -632,18 +643,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -651,9 +658,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -668,7 +673,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -681,7 +685,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -694,7 +697,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -715,12 +717,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -773,6 +773,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -792,11 +804,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -804,7 +814,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -819,19 +828,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -844,20 +849,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -893,7 +894,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -921,6 +921,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -944,7 +945,6 @@ while.hdr.273: ; preds = %if.merge.278, %entr
|
||||
while.body.274: ; preds = %while.hdr.273
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -985,6 +985,13 @@ if.merge.278: ; preds = %if.else.277, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -1005,11 +1012,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1026,11 +1031,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1047,11 +1050,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1064,7 +1065,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1086,6 +1086,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1097,40 +1104,33 @@ if.then.271: ; preds = %entry
|
||||
if.merge.272: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.279
|
||||
|
||||
@@ -1241,6 +1241,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.41, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1339,7 +1346,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1359,7 +1365,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1368,7 +1373,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1394,7 +1398,6 @@ match.arm.44: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.205 [
|
||||
i64 37, label %dispatch.case.206
|
||||
i64 38, label %dispatch.case.207
|
||||
@@ -1410,7 +1413,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.213 [
|
||||
i64 35, label %dispatch.case.214
|
||||
i64 65, label %dispatch.case.215
|
||||
@@ -1420,7 +1422,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.227 [
|
||||
i64 36, label %dispatch.case.228
|
||||
i64 56, label %dispatch.case.229
|
||||
@@ -1430,7 +1431,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.241 [
|
||||
i64 18, label %dispatch.case.242
|
||||
i64 22, label %dispatch.case.243
|
||||
@@ -3021,6 +3021,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 15 }, { ptr, i64 } { ptr @str.183, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3085,7 +3087,6 @@ fv.default: ; preds = %if.merge.118
|
||||
|
||||
fv.case: ; preds = %if.merge.118
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3105,7 +3106,6 @@ fv.case20: ; preds = %if.merge.118
|
||||
|
||||
fv.case24: ; preds = %if.merge.118
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -3400,6 +3400,7 @@ fv.case17: ; preds = %if.merge.138
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.220, i64 5 }, { ptr, i64 } { ptr @str.221, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3474,7 +3475,6 @@ fv.case17: ; preds = %if.merge.143
|
||||
|
||||
fv.case20: ; preds = %if.merge.143
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3567,6 +3567,7 @@ fv.case20: ; preds = %if.merge.148
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.238, i64 17 }, { ptr, i64 } { ptr @str.239, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3631,7 +3632,6 @@ fv.default: ; preds = %if.merge.153
|
||||
|
||||
fv.case: ; preds = %if.merge.153
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3657,6 +3657,7 @@ fv.case23: ; preds = %if.merge.153
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.248, i64 7 }, { ptr, i64 } { ptr @str.249, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3719,7 +3720,6 @@ fv.default: ; preds = %if.merge.158
|
||||
|
||||
fv.case: ; preds = %if.merge.158
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -4475,6 +4475,7 @@ if.merge.211: ; preds = %if.then.210, %entry
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.344, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4507,7 +4508,6 @@ if.merge.220: ; preds = %if.then.219, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -4525,6 +4525,8 @@ if.merge.220: ; preds = %if.then.219, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.347, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4557,11 +4559,9 @@ if.merge.225: ; preds = %if.then.224, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -4578,6 +4578,7 @@ if.merge.225: ; preds = %if.then.224, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.350, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4615,7 +4616,6 @@ if.merge.234: ; preds = %if.then.233, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -4632,6 +4632,7 @@ if.merge.234: ; preds = %if.then.233, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.353, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -4669,7 +4670,6 @@ if.merge.239: ; preds = %if.then.238, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -392,6 +392,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -403,15 +408,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -423,7 +424,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -481,6 +481,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -492,18 +503,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -511,9 +518,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -528,7 +533,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -541,7 +545,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -554,7 +557,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -575,12 +577,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -633,6 +633,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -652,11 +664,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -664,7 +674,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -679,19 +688,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -704,20 +709,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -753,7 +754,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -781,6 +781,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -804,7 +805,6 @@ while.hdr.223: ; preds = %if.merge.228, %entr
|
||||
while.body.224: ; preds = %while.hdr.223
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -845,6 +845,13 @@ if.merge.228: ; preds = %if.else.227, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -865,11 +872,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -886,11 +891,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -907,11 +910,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -924,7 +925,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -946,6 +946,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -957,40 +964,33 @@ if.then.221: ; preds = %entry
|
||||
if.merge.222: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.229
|
||||
|
||||
@@ -1101,6 +1101,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1185,7 +1191,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1205,7 +1210,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1214,7 +1218,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1240,7 +1243,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.151 [
|
||||
i64 35, label %dispatch.case.152
|
||||
i64 43, label %dispatch.case.153
|
||||
@@ -1253,7 +1255,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.183 [
|
||||
i64 36, label %dispatch.case.184
|
||||
i64 40, label %dispatch.case.185
|
||||
@@ -1263,7 +1264,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.197 [
|
||||
i64 18, label %dispatch.case.198
|
||||
i64 22, label %dispatch.case.199
|
||||
@@ -2185,6 +2185,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.107, i64 15 }, { ptr, i64 } { ptr @str.108, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2249,7 +2251,6 @@ fv.default: ; preds = %if.merge.109
|
||||
|
||||
fv.case: ; preds = %if.merge.109
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2269,7 +2270,6 @@ fv.case20: ; preds = %if.merge.109
|
||||
|
||||
fv.case24: ; preds = %if.merge.109
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2564,6 +2564,7 @@ fv.case17: ; preds = %if.merge.129
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.145, i64 5 }, { ptr, i64 } { ptr @str.146, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2638,7 +2639,6 @@ fv.case17: ; preds = %if.merge.134
|
||||
|
||||
fv.case20: ; preds = %if.merge.134
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2731,6 +2731,7 @@ fv.case20: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.163, i64 17 }, { ptr, i64 } { ptr @str.164, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2795,7 +2796,6 @@ fv.default: ; preds = %if.merge.144
|
||||
|
||||
fv.case: ; preds = %if.merge.144
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2821,6 +2821,7 @@ fv.case23: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.173, i64 7 }, { ptr, i64 } { ptr @str.174, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2883,7 +2884,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2900,6 +2900,7 @@ fv.case17: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.181, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2932,7 +2933,6 @@ if.merge.161: ; preds = %if.then.160, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2950,6 +2950,8 @@ if.merge.161: ; preds = %if.then.160, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2982,11 +2984,9 @@ if.merge.166: ; preds = %if.then.165, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3003,6 +3003,8 @@ if.merge.166: ; preds = %if.then.165, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [3 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [3 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3035,11 +3037,9 @@ if.merge.171: ; preds = %if.then.170, %while
|
||||
%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
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
store [3 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [3 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3056,6 +3056,8 @@ if.merge.171: ; preds = %if.then.170, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [2 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [2 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [2 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3088,11 +3090,9 @@ if.merge.176: ; preds = %if.then.175, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [2 x { i64, i64 }], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [2 x { i64, i64 }], align 8
|
||||
store [2 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [2 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3109,6 +3109,8 @@ if.merge.176: ; preds = %if.then.175, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_5_Any(ptr %0, [5 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [5 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [5 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [5 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.193, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3141,11 +3143,9 @@ if.merge.181: ; preds = %if.then.180, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [5 x { i64, i64 }], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [5 x { i64, i64 }], align 8
|
||||
store [5 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [5 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3162,6 +3162,7 @@ if.merge.181: ; preds = %if.then.180, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.196, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3199,7 +3200,6 @@ if.merge.190: ; preds = %if.then.189, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3216,6 +3216,7 @@ if.merge.190: ; preds = %if.then.189, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.199, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3253,7 +3254,6 @@ if.merge.195: ; preds = %if.then.194, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -373,6 +373,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -384,15 +389,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -404,7 +405,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -462,6 +462,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -473,18 +484,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -492,9 +499,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -509,7 +514,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -522,7 +526,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -535,7 +538,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -556,12 +558,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -614,6 +614,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -633,11 +645,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -645,7 +655,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -660,19 +669,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -685,20 +690,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -734,7 +735,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -762,6 +762,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -785,7 +786,6 @@ while.hdr.209: ; preds = %if.merge.214, %entr
|
||||
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
|
||||
@@ -826,6 +826,13 @@ if.merge.214: ; preds = %if.else.213, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -846,11 +853,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -867,11 +872,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -888,11 +891,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -905,7 +906,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -927,6 +927,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -938,40 +945,33 @@ if.then.207: ; preds = %entry
|
||||
if.merge.208: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.215
|
||||
|
||||
@@ -1082,6 +1082,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1162,7 +1168,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1182,7 +1187,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1191,7 +1195,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1217,7 +1220,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.151 [
|
||||
i64 35, label %dispatch.case.152
|
||||
i64 42, label %dispatch.case.153
|
||||
@@ -1228,7 +1230,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.171 [
|
||||
i64 36, label %dispatch.case.172
|
||||
i64 40, label %dispatch.case.173
|
||||
@@ -1238,7 +1239,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.185 [
|
||||
i64 18, label %dispatch.case.186
|
||||
i64 22, label %dispatch.case.187
|
||||
@@ -2005,6 +2005,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.100, i64 15 }, { ptr, i64 } { ptr @str.101, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2069,7 +2071,6 @@ fv.default: ; preds = %if.merge.109
|
||||
|
||||
fv.case: ; preds = %if.merge.109
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2089,7 +2090,6 @@ fv.case20: ; preds = %if.merge.109
|
||||
|
||||
fv.case24: ; preds = %if.merge.109
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2384,6 +2384,7 @@ fv.case17: ; preds = %if.merge.129
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.138, i64 5 }, { ptr, i64 } { ptr @str.139, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2458,7 +2459,6 @@ fv.case17: ; preds = %if.merge.134
|
||||
|
||||
fv.case20: ; preds = %if.merge.134
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2551,6 +2551,7 @@ fv.case20: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.156, i64 17 }, { ptr, i64 } { ptr @str.157, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2615,7 +2616,6 @@ fv.default: ; preds = %if.merge.144
|
||||
|
||||
fv.case: ; preds = %if.merge.144
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2641,6 +2641,7 @@ fv.case23: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 7 }, { ptr, i64 } { ptr @str.167, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2703,7 +2704,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2720,6 +2720,7 @@ fv.case17: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.174, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2752,7 +2753,6 @@ if.merge.159: ; preds = %if.then.158, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2770,6 +2770,8 @@ if.merge.159: ; preds = %if.then.158, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [3 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [3 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.177, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2802,11 +2804,9 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
%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
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
store [3 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [3 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2823,6 +2823,8 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.180, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2855,11 +2857,9 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2876,6 +2876,7 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.183, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2913,7 +2914,6 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2930,6 +2930,7 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.186, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2967,7 +2968,6 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -377,6 +377,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -388,15 +393,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -408,7 +409,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -466,6 +466,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -477,18 +488,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -496,9 +503,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -513,7 +518,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -526,7 +530,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -539,7 +542,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -560,12 +562,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -618,6 +618,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -637,11 +649,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -649,7 +659,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -664,19 +673,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -689,20 +694,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -738,7 +739,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -766,6 +766,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -789,7 +790,6 @@ while.hdr.203: ; preds = %if.merge.208, %entr
|
||||
while.body.204: ; preds = %while.hdr.203
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -830,6 +830,13 @@ if.merge.208: ; preds = %if.else.207, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -850,11 +857,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -871,11 +876,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -892,11 +895,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -909,7 +910,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -931,6 +931,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -942,40 +949,33 @@ if.then.201: ; preds = %entry
|
||||
if.merge.202: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.209
|
||||
|
||||
@@ -1086,6 +1086,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1165,7 +1171,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1185,7 +1190,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1194,7 +1198,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1220,7 +1223,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.151 [
|
||||
i64 35, label %dispatch.case.152
|
||||
i64 42, label %dispatch.case.153
|
||||
@@ -1230,7 +1232,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.165 [
|
||||
i64 36, label %dispatch.case.166
|
||||
i64 40, label %dispatch.case.167
|
||||
@@ -1240,7 +1241,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.179 [
|
||||
i64 18, label %dispatch.case.180
|
||||
i64 22, label %dispatch.case.181
|
||||
@@ -2105,6 +2105,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.107, i64 15 }, { ptr, i64 } { ptr @str.108, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2169,7 +2171,6 @@ fv.default: ; preds = %if.merge.109
|
||||
|
||||
fv.case: ; preds = %if.merge.109
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2189,7 +2190,6 @@ fv.case20: ; preds = %if.merge.109
|
||||
|
||||
fv.case24: ; preds = %if.merge.109
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2484,6 +2484,7 @@ fv.case17: ; preds = %if.merge.129
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.145, i64 5 }, { ptr, i64 } { ptr @str.146, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2558,7 +2559,6 @@ fv.case17: ; preds = %if.merge.134
|
||||
|
||||
fv.case20: ; preds = %if.merge.134
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2651,6 +2651,7 @@ fv.case20: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.163, i64 17 }, { ptr, i64 } { ptr @str.164, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2715,7 +2716,6 @@ fv.default: ; preds = %if.merge.144
|
||||
|
||||
fv.case: ; preds = %if.merge.144
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2741,6 +2741,7 @@ fv.case23: ; preds = %if.merge.144
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.173, i64 7 }, { ptr, i64 } { ptr @str.174, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2803,7 +2804,6 @@ fv.default: ; preds = %if.merge.149
|
||||
|
||||
fv.case: ; preds = %if.merge.149
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2820,6 +2820,7 @@ fv.case17: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.181, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2852,7 +2853,6 @@ if.merge.158: ; preds = %if.then.157, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2870,6 +2870,8 @@ if.merge.158: ; preds = %if.then.157, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2902,11 +2904,9 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2923,6 +2923,7 @@ if.merge.163: ; preds = %if.then.162, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2960,7 +2961,6 @@ if.merge.172: ; preds = %if.then.171, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2977,6 +2977,7 @@ if.merge.172: ; preds = %if.then.171, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3014,7 +3015,6 @@ if.merge.177: ; preds = %if.then.176, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -437,6 +437,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -448,15 +453,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -468,7 +469,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -526,6 +526,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -537,18 +548,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -556,9 +563,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -573,7 +578,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -586,7 +590,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -599,7 +602,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -620,12 +622,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -678,6 +678,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -697,11 +709,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -709,7 +719,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -724,19 +733,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -749,20 +754,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -798,7 +799,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -826,6 +826,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -849,7 +850,6 @@ while.hdr.243: ; preds = %if.merge.248, %entr
|
||||
while.body.244: ; preds = %while.hdr.243
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -890,6 +890,13 @@ if.merge.248: ; preds = %if.else.247, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -910,11 +917,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -931,11 +936,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -952,11 +955,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -969,7 +970,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -991,6 +991,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1002,40 +1009,33 @@ if.then.241: ; preds = %entry
|
||||
if.merge.242: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.249
|
||||
|
||||
@@ -1146,6 +1146,12 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1235,7 +1241,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1255,7 +1260,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1264,7 +1268,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1294,7 +1297,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.175 [
|
||||
i64 35, label %dispatch.case.176
|
||||
i64 49, label %dispatch.case.177
|
||||
@@ -1305,7 +1307,6 @@ match.arm.48: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.195 [
|
||||
i64 36, label %dispatch.case.196
|
||||
i64 43, label %dispatch.case.197
|
||||
@@ -1316,7 +1317,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.215 [
|
||||
i64 18, label %dispatch.case.216
|
||||
i64 22, label %dispatch.case.217
|
||||
@@ -2365,6 +2365,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.120, i64 15 }, { ptr, i64 } { ptr @str.121, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2429,7 +2431,6 @@ fv.default: ; preds = %if.merge.113
|
||||
|
||||
fv.case: ; preds = %if.merge.113
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2449,7 +2450,6 @@ fv.case20: ; preds = %if.merge.113
|
||||
|
||||
fv.case24: ; preds = %if.merge.113
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2744,6 +2744,7 @@ fv.case17: ; preds = %if.merge.133
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.158, i64 5 }, { ptr, i64 } { ptr @str.159, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2818,7 +2819,6 @@ fv.case17: ; preds = %if.merge.138
|
||||
|
||||
fv.case20: ; preds = %if.merge.138
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2911,6 +2911,7 @@ fv.case20: ; preds = %if.merge.143
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.176, i64 17 }, { ptr, i64 } { ptr @str.177, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2975,7 +2976,6 @@ fv.default: ; preds = %if.merge.148
|
||||
|
||||
fv.case: ; preds = %if.merge.148
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3001,6 +3001,7 @@ fv.case23: ; preds = %if.merge.148
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.186, i64 7 }, { ptr, i64 } { ptr @str.187, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3063,7 +3064,6 @@ fv.default: ; preds = %if.merge.153
|
||||
|
||||
fv.case: ; preds = %if.merge.153
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3365,6 +3365,7 @@ fv.case: ; preds = %if.merge.173
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.223, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3397,7 +3398,6 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3415,6 +3415,8 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_2_Any(ptr %0, [2 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [2 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [2 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [2 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.226, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3447,11 +3449,9 @@ if.merge.188: ; preds = %if.then.187, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [2 x { i64, i64 }], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [2 x { i64, i64 }], align 8
|
||||
store [2 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [2 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3468,6 +3468,8 @@ if.merge.188: ; preds = %if.then.187, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.229, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3500,11 +3502,9 @@ if.merge.193: ; preds = %if.then.192, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3521,6 +3521,7 @@ if.merge.193: ; preds = %if.then.192, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.232, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3558,7 +3559,6 @@ if.merge.203: ; preds = %if.then.202, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3575,6 +3575,7 @@ if.merge.203: ; preds = %if.then.202, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Greeter(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.235, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3612,7 +3613,6 @@ if.merge.208: ; preds = %if.then.207, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, ptr }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, ptr }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, ptr }, align 8
|
||||
store { ptr, ptr } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3629,6 +3629,7 @@ if.merge.208: ; preds = %if.then.207, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.238, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3666,7 +3667,6 @@ if.merge.213: ; preds = %if.then.212, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -462,6 +462,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -473,15 +478,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -493,7 +494,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -551,6 +551,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -562,18 +573,14 @@ if.then.68: ; preds = %entry
|
||||
if.merge.69: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.78
|
||||
|
||||
while.hdr.78: ; preds = %while.exit.89, %if.merge.69
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -581,9 +588,7 @@ while.hdr.78: ; preds = %while.exit.89, %if.
|
||||
br i1 %icmpN, label %or.merge.82, label %or.rhs.81
|
||||
|
||||
while.body.79: ; preds = %or.merge.86
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.87
|
||||
|
||||
@@ -598,7 +603,6 @@ while.exit.80: ; preds = %or.merge.86
|
||||
|
||||
or.rhs.81: ; preds = %while.hdr.78
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -611,7 +615,6 @@ or.merge.82: ; preds = %or.rhs.81, %while.h
|
||||
|
||||
or.rhs.83: ; preds = %or.merge.82
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -624,7 +627,6 @@ or.merge.84: ; preds = %or.rhs.83, %or.merg
|
||||
|
||||
or.rhs.85: ; preds = %or.merge.84
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -645,12 +647,10 @@ while.body.88: ; preds = %while.hdr.87
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -703,6 +703,18 @@ if.merge.92: ; preds = %if.else.91, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -722,11 +734,9 @@ if.else.97: ; preds = %entry
|
||||
|
||||
if.merge.98: ; preds = %if.else.97, %if.then.96
|
||||
%bp = phi double [ %fsub, %if.then.96 ], [ %loadN, %if.else.97 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -734,7 +744,6 @@ if.merge.98: ; preds = %if.else.97, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -749,19 +758,15 @@ if.then.99: ; preds = %if.merge.98
|
||||
if.merge.100: ; preds = %if.then.99, %if.merge.98
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.101, label %if.else.102
|
||||
@@ -774,20 +779,16 @@ if.else.102: ; preds = %if.merge.100
|
||||
|
||||
if.merge.103: ; preds = %if.else.102, %if.then.101
|
||||
%bpN = phi i64 [ 1, %if.then.101 ], [ 0, %if.else.102 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.104, label %if.merge.105
|
||||
@@ -823,7 +824,6 @@ if.merge.105: ; preds = %if.then.104, %if.me
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -851,6 +851,7 @@ if.merge.105: ; preds = %if.then.104, %if.me
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -874,7 +875,6 @@ while.hdr.245: ; preds = %if.merge.250, %entr
|
||||
while.body.246: ; preds = %while.hdr.245
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -915,6 +915,13 @@ if.merge.250: ; preds = %if.else.249, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -935,11 +942,9 @@ if.merge.71: ; preds = %if.then.70, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -956,11 +961,9 @@ if.merge.73: ; preds = %if.then.72, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -977,11 +980,9 @@ if.merge.75: ; preds = %if.then.74, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -994,7 +995,6 @@ if.then.76: ; preds = %if.merge.75
|
||||
br label %if.merge.77
|
||||
|
||||
if.merge.77: ; preds = %if.then.76, %if.merge.75
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1016,6 +1016,13 @@ if.merge.77: ; preds = %if.then.76, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1027,40 +1034,33 @@ if.then.243: ; preds = %entry
|
||||
if.merge.244: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.251
|
||||
|
||||
@@ -1171,6 +1171,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1261,7 +1268,6 @@ match.arm.51: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.65, label %if.else.66
|
||||
|
||||
match.arm.52: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1281,7 +1287,6 @@ match.arm.53: ; preds = %entry
|
||||
|
||||
match.arm.54: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.93, label %fN.unbox.94
|
||||
@@ -1290,7 +1295,6 @@ match.arm.55: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.107 [
|
||||
i64 19, label %dispatch.case.108
|
||||
i64 20, label %dispatch.case.109
|
||||
@@ -1320,7 +1324,6 @@ match.arm.59: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.187 [
|
||||
i64 35, label %dispatch.case.188
|
||||
i64 55, label %dispatch.case.189
|
||||
@@ -1330,7 +1333,6 @@ match.arm.60: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.201 [
|
||||
i64 36, label %dispatch.case.202
|
||||
i64 47, label %dispatch.case.203
|
||||
@@ -1340,7 +1342,6 @@ match.arm.61: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.215 [
|
||||
i64 18, label %dispatch.case.216
|
||||
i64 22, label %dispatch.case.217
|
||||
@@ -1372,7 +1373,6 @@ match.arm.62: ; preds = %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.326 [
|
||||
i64 37, label %dispatch.case.327
|
||||
]
|
||||
@@ -2081,6 +2081,10 @@ if.merge.36: ; preds = %if.then.35, %while.
|
||||
define internal float @direct_size(ptr %0, { { float, i1 }, { float, i1 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { float, i1 }, { float, i1 } }, align 8
|
||||
%allocaN = alloca float, align 4
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca float, align 4
|
||||
%allocaN = alloca double, align 8
|
||||
store { { float, i1 }, { float, i1 } } %1, ptr %alloca, align 4
|
||||
%load = load { { float, i1 }, { float, i1 } }, ptr %alloca, align 4
|
||||
%sg = extractvalue { { float, i1 }, { float, i1 } } %load, 0
|
||||
@@ -2089,7 +2093,6 @@ entry:
|
||||
|
||||
if.then.37: ; preds = %entry
|
||||
%ou.val = extractvalue { float, i1 } %sg, 0
|
||||
%allocaN = alloca float, align 4
|
||||
store float %ou.val, ptr %allocaN, align 4
|
||||
%loadN = load float, ptr %allocaN, align 4
|
||||
%fpext = fpext float %loadN to double
|
||||
@@ -2100,7 +2103,6 @@ if.else.38: ; preds = %entry
|
||||
|
||||
if.merge.39: ; preds = %if.else.38, %if.then.37
|
||||
%bp = phi double [ %fpext, %if.then.37 ], [ 1.000000e+02, %if.else.38 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load { { float, i1 }, { float, i1 } }, ptr %alloca, align 4
|
||||
%sgN = extractvalue { { float, i1 }, { float, i1 } } %loadN, 1
|
||||
@@ -2109,7 +2111,6 @@ if.merge.39: ; preds = %if.else.38, %if.the
|
||||
|
||||
if.then.40: ; preds = %if.merge.39
|
||||
%ou.val7 = extractvalue { float, i1 } %sgN, 0
|
||||
%allocaN = alloca float, align 4
|
||||
store float %ou.val7, ptr %allocaN, align 4
|
||||
%loadN = load float, ptr %allocaN, align 4
|
||||
%fpextN = fpext float %loadN to double
|
||||
@@ -2120,7 +2121,6 @@ if.else.41: ; preds = %if.merge.39
|
||||
|
||||
if.merge.42: ; preds = %if.else.41, %if.then.40
|
||||
%bpN = phi double [ %fpextN, %if.then.40 ], [ 1.000000e+02, %if.else.41 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bpN, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
@@ -2133,6 +2133,10 @@ if.merge.42: ; preds = %if.else.41, %if.the
|
||||
define internal float @Widget.size(ptr %0, ptr %1, { { float, i1 }, { float, i1 } } %2) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca float, align 4
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca float, align 4
|
||||
%allocaN = alloca double, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { { float, i1 }, { float, i1 } }, align 8
|
||||
store { { float, i1 }, { float, i1 } } %2, ptr %allocaN, align 4
|
||||
@@ -2143,7 +2147,6 @@ entry:
|
||||
|
||||
if.then.43: ; preds = %entry
|
||||
%ou.val = extractvalue { float, i1 } %sg, 0
|
||||
%allocaN = alloca float, align 4
|
||||
store float %ou.val, ptr %allocaN, align 4
|
||||
%loadN = load float, ptr %allocaN, align 4
|
||||
%fpext = fpext float %loadN to double
|
||||
@@ -2154,7 +2157,6 @@ if.else.44: ; preds = %entry
|
||||
|
||||
if.merge.45: ; preds = %if.else.44, %if.then.43
|
||||
%bp = phi double [ %fpext, %if.then.43 ], [ 1.000000e+02, %if.else.44 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load { { float, i1 }, { float, i1 } }, ptr %allocaN, align 4
|
||||
%sgN = extractvalue { { float, i1 }, { float, i1 } } %loadN, 1
|
||||
@@ -2163,7 +2165,6 @@ if.merge.45: ; preds = %if.else.44, %if.the
|
||||
|
||||
if.then.46: ; preds = %if.merge.45
|
||||
%ou.val8 = extractvalue { float, i1 } %sgN, 0
|
||||
%allocaN = alloca float, align 4
|
||||
store float %ou.val8, ptr %allocaN, align 4
|
||||
%loadN = load float, ptr %allocaN, align 4
|
||||
%fpextN = fpext float %loadN to double
|
||||
@@ -2174,7 +2175,6 @@ if.else.47: ; preds = %if.merge.45
|
||||
|
||||
if.merge.48: ; preds = %if.else.47, %if.then.46
|
||||
%bpN = phi double [ %fpextN, %if.then.46 ], [ 1.000000e+02, %if.else.47 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bpN, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
@@ -2777,6 +2777,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.143, i64 15 }, { ptr, i64 } { ptr @str.144, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2841,7 +2843,6 @@ fv.default: ; preds = %if.merge.125
|
||||
|
||||
fv.case: ; preds = %if.merge.125
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2861,7 +2862,6 @@ fv.case20: ; preds = %if.merge.125
|
||||
|
||||
fv.case24: ; preds = %if.merge.125
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -3156,6 +3156,7 @@ fv.case17: ; preds = %if.merge.145
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.181, i64 5 }, { ptr, i64 } { ptr @str.182, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3230,7 +3231,6 @@ fv.case17: ; preds = %if.merge.150
|
||||
|
||||
fv.case20: ; preds = %if.merge.150
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3323,6 +3323,7 @@ fv.case20: ; preds = %if.merge.155
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.199, i64 17 }, { ptr, i64 } { ptr @str.200, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3387,7 +3388,6 @@ fv.default: ; preds = %if.merge.160
|
||||
|
||||
fv.case: ; preds = %if.merge.160
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3413,6 +3413,7 @@ fv.case23: ; preds = %if.merge.160
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.209, i64 7 }, { ptr, i64 } { ptr @str.210, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3475,7 +3476,6 @@ fv.default: ; preds = %if.merge.165
|
||||
|
||||
fv.case: ; preds = %if.merge.165
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3492,6 +3492,8 @@ fv.case17: ; preds = %if.merge.165
|
||||
define internal { ptr, i64 } @struct_to_string__ProposedSize(ptr %0, { { float, i1 }, { float, i1 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { float, i1 }, { float, i1 } }, align 8
|
||||
%ba.tmp = alloca { float, i1 }, align 8
|
||||
%ba.tmp19 = alloca { float, i1 }, align 8
|
||||
store { { float, i1 }, { float, i1 } } %1, ptr %alloca, align 4
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.217, i64 12 }, { ptr, i64 } { ptr @str.218, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3554,7 +3556,6 @@ fv.default: ; preds = %if.merge.170
|
||||
|
||||
fv.case: ; preds = %if.merge.170
|
||||
%fv.field = extractvalue { { float, i1 }, { float, i1 } } %loadN, 0
|
||||
%ba.tmp = alloca { float, i1 }, align 8
|
||||
store { float, i1 } %fv.field, ptr %ba.tmp, align 4
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3562,7 +3563,6 @@ fv.case: ; preds = %if.merge.170
|
||||
|
||||
fv.case17: ; preds = %if.merge.170
|
||||
%fv.field18 = extractvalue { { float, i1 }, { float, i1 } } %loadN, 1
|
||||
%ba.tmp19 = alloca { float, i1 }, align 8
|
||||
store { float, i1 } %fv.field18, ptr %ba.tmp19, align 4
|
||||
%ba.p2i20 = ptrtoint ptr %ba.tmp19 to i64
|
||||
%fv.val21 = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i20, 1
|
||||
@@ -3775,6 +3775,7 @@ if.merge.185: ; preds = %if.then.184, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.246, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3807,7 +3808,6 @@ if.merge.194: ; preds = %if.then.193, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3825,6 +3825,8 @@ if.merge.194: ; preds = %if.then.193, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.249, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3857,11 +3859,9 @@ if.merge.199: ; preds = %if.then.198, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3878,6 +3878,7 @@ if.merge.199: ; preds = %if.then.198, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.252, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3915,7 +3916,6 @@ if.merge.208: ; preds = %if.then.207, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3932,6 +3932,7 @@ if.merge.208: ; preds = %if.then.207, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.255, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3969,7 +3970,6 @@ if.merge.213: ; preds = %if.then.212, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -390,6 +390,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -401,15 +406,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -421,7 +422,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -479,6 +479,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -490,18 +501,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -509,9 +516,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -526,7 +531,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -539,7 +543,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -552,7 +555,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -573,12 +575,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -631,6 +631,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -650,11 +662,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -662,7 +672,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -677,19 +686,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -702,20 +707,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -751,7 +752,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -779,6 +779,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -802,7 +803,6 @@ while.hdr.209: ; preds = %if.merge.214, %entr
|
||||
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
|
||||
@@ -843,6 +843,13 @@ if.merge.214: ; preds = %if.else.213, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -863,11 +870,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -884,11 +889,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -905,11 +908,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -922,7 +923,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -944,6 +944,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -955,40 +962,33 @@ if.then.207: ; preds = %entry
|
||||
if.merge.208: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.215
|
||||
|
||||
@@ -1099,6 +1099,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1182,7 +1189,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1202,7 +1208,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1211,7 +1216,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1238,7 +1242,6 @@ match.arm.47: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.157 [
|
||||
i64 35, label %dispatch.case.158
|
||||
i64 48, label %dispatch.case.159
|
||||
@@ -1248,7 +1251,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.171 [
|
||||
i64 36, label %dispatch.case.172
|
||||
i64 46, label %dispatch.case.173
|
||||
@@ -1258,7 +1260,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.185 [
|
||||
i64 18, label %dispatch.case.186
|
||||
i64 22, label %dispatch.case.187
|
||||
@@ -1284,7 +1285,6 @@ match.arm.50: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.272 [
|
||||
i64 37, label %dispatch.case.273
|
||||
i64 38, label %dispatch.case.274
|
||||
@@ -2024,6 +2024,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.108, i64 15 }, { ptr, i64 } { ptr @str.109, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2088,7 +2090,6 @@ fv.default: ; preds = %if.merge.110
|
||||
|
||||
fv.case: ; preds = %if.merge.110
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2108,7 +2109,6 @@ fv.case20: ; preds = %if.merge.110
|
||||
|
||||
fv.case24: ; preds = %if.merge.110
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2403,6 +2403,7 @@ fv.case17: ; preds = %if.merge.130
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.146, i64 5 }, { ptr, i64 } { ptr @str.147, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2477,7 +2478,6 @@ fv.case17: ; preds = %if.merge.135
|
||||
|
||||
fv.case20: ; preds = %if.merge.135
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2570,6 +2570,7 @@ fv.case20: ; preds = %if.merge.140
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.164, i64 17 }, { ptr, i64 } { ptr @str.165, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2634,7 +2635,6 @@ fv.default: ; preds = %if.merge.145
|
||||
|
||||
fv.case: ; preds = %if.merge.145
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2660,6 +2660,7 @@ fv.case23: ; preds = %if.merge.145
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.174, i64 7 }, { ptr, i64 } { ptr @str.175, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2722,7 +2723,6 @@ fv.default: ; preds = %if.merge.150
|
||||
|
||||
fv.case: ; preds = %if.merge.150
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2739,6 +2739,9 @@ fv.case17: ; preds = %if.merge.150
|
||||
define internal { ptr, i64 } @struct_to_string__S(ptr %0, { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } }, align 8
|
||||
%ba.tmp = alloca { i64, i1 }, align 8
|
||||
%ba.tmp19 = alloca { { ptr, i64 }, i1 }, align 8
|
||||
%ba.tmp24 = alloca { i1, i1 }, align 8
|
||||
store { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 1 }, { ptr, i64 } { ptr @str.183, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2802,7 +2805,6 @@ fv.default: ; preds = %if.merge.155
|
||||
|
||||
fv.case: ; preds = %if.merge.155
|
||||
%fv.field = extractvalue { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, 0
|
||||
%ba.tmp = alloca { i64, i1 }, align 8
|
||||
store { i64, i1 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 37, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2810,7 +2812,6 @@ fv.case: ; preds = %if.merge.155
|
||||
|
||||
fv.case17: ; preds = %if.merge.155
|
||||
%fv.field18 = extractvalue { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, 1
|
||||
%ba.tmp19 = alloca { { ptr, i64 }, i1 }, align 8
|
||||
store { { ptr, i64 }, i1 } %fv.field18, ptr %ba.tmp19, align 8
|
||||
%ba.p2i20 = ptrtoint ptr %ba.tmp19 to i64
|
||||
%fv.val21 = insertvalue { i64, i64 } { i64 38, i64 undef }, i64 %ba.p2i20, 1
|
||||
@@ -2818,7 +2819,6 @@ fv.case17: ; preds = %if.merge.155
|
||||
|
||||
fv.case22: ; preds = %if.merge.155
|
||||
%fv.field23 = extractvalue { { i64, i1 }, { { ptr, i64 }, i1 }, { i1, i1 } } %loadN, 2
|
||||
%ba.tmp24 = alloca { i1, i1 }, align 8
|
||||
store { i1, i1 } %fv.field23, ptr %ba.tmp24, align 1
|
||||
%ba.p2i25 = ptrtoint ptr %ba.tmp24 to i64
|
||||
%fv.val26 = insertvalue { i64, i64 } { i64 39, i64 undef }, i64 %ba.p2i25, 1
|
||||
@@ -2829,6 +2829,7 @@ fv.case22: ; preds = %if.merge.155
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.191, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2861,7 +2862,6 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2879,6 +2879,8 @@ if.merge.164: ; preds = %if.then.163, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.194, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2911,11 +2913,9 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2932,6 +2932,7 @@ if.merge.169: ; preds = %if.then.168, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.197, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2969,7 +2970,6 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2986,6 +2986,7 @@ if.merge.178: ; preds = %if.then.177, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.200, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3023,7 +3024,6 @@ if.merge.183: ; preds = %if.then.182, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3564,6 +3564,7 @@ if.merge.277: ; preds = %entry
|
||||
define internal { ptr, i64 } @optional_to_string__opt_string(ptr %0, { { ptr, i64 }, i1 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i1 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i1 } %1, ptr %alloca, align 8
|
||||
%load = load { { ptr, i64 }, i1 }, ptr %alloca, align 8
|
||||
%oh.has = extractvalue { { ptr, i64 }, i1 } %load, 1
|
||||
@@ -3576,7 +3577,6 @@ if.then.278: ; preds = %entry
|
||||
if.merge.279: ; preds = %entry
|
||||
%loadN = load { { ptr, i64 }, i1 }, ptr %alloca, align 8
|
||||
%ou.val = extractvalue { { ptr, i64 }, i1 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ou.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -387,6 +387,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -398,15 +403,11 @@ if.then.24: ; preds = %entry
|
||||
if.merge.25: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.26
|
||||
|
||||
@@ -418,7 +419,6 @@ while.hdr.26: ; preds = %if.merge.30, %if.me
|
||||
while.body.27: ; preds = %while.hdr.26
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -476,6 +476,17 @@ if.merge.32: ; preds = %if.then.31, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -487,18 +498,14 @@ if.then.66: ; preds = %entry
|
||||
if.merge.67: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.76
|
||||
|
||||
while.hdr.76: ; preds = %while.exit.87, %if.merge.67
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -506,9 +513,7 @@ while.hdr.76: ; preds = %while.exit.87, %if.
|
||||
br i1 %icmpN, label %or.merge.80, label %or.rhs.79
|
||||
|
||||
while.body.77: ; preds = %or.merge.84
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.85
|
||||
|
||||
@@ -523,7 +528,6 @@ while.exit.78: ; preds = %or.merge.84
|
||||
|
||||
or.rhs.79: ; preds = %while.hdr.76
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -536,7 +540,6 @@ or.merge.80: ; preds = %or.rhs.79, %while.h
|
||||
|
||||
or.rhs.81: ; preds = %or.merge.80
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -549,7 +552,6 @@ or.merge.82: ; preds = %or.rhs.81, %or.merg
|
||||
|
||||
or.rhs.83: ; preds = %or.merge.82
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -570,12 +572,10 @@ while.body.86: ; preds = %while.hdr.85
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -628,6 +628,18 @@ if.merge.90: ; preds = %if.else.89, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -647,11 +659,9 @@ if.else.95: ; preds = %entry
|
||||
|
||||
if.merge.96: ; preds = %if.else.95, %if.then.94
|
||||
%bp = phi double [ %fsub, %if.then.94 ], [ %loadN, %if.else.95 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -659,7 +669,6 @@ if.merge.96: ; preds = %if.else.95, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -674,19 +683,15 @@ if.then.97: ; preds = %if.merge.96
|
||||
if.merge.98: ; preds = %if.then.97, %if.merge.96
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.99, label %if.else.100
|
||||
@@ -699,20 +704,16 @@ if.else.100: ; preds = %if.merge.98
|
||||
|
||||
if.merge.101: ; preds = %if.else.100, %if.then.99
|
||||
%bpN = phi i64 [ 1, %if.then.99 ], [ 0, %if.else.100 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.102, label %if.merge.103
|
||||
@@ -748,7 +749,6 @@ if.merge.103: ; preds = %if.then.102, %if.me
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -776,6 +776,7 @@ if.merge.103: ; preds = %if.then.102, %if.me
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -799,7 +800,6 @@ while.hdr.214: ; preds = %if.merge.219, %entr
|
||||
while.body.215: ; preds = %while.hdr.214
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -840,6 +840,13 @@ if.merge.219: ; preds = %if.else.218, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -860,11 +867,9 @@ if.merge.69: ; preds = %if.then.68, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -881,11 +886,9 @@ if.merge.71: ; preds = %if.then.70, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -902,11 +905,9 @@ if.merge.73: ; preds = %if.then.72, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -919,7 +920,6 @@ if.then.74: ; preds = %if.merge.73
|
||||
br label %if.merge.75
|
||||
|
||||
if.merge.75: ; preds = %if.then.74, %if.merge.73
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -941,6 +941,13 @@ if.merge.75: ; preds = %if.then.74, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -952,40 +959,33 @@ if.then.212: ; preds = %entry
|
||||
if.merge.213: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.220
|
||||
|
||||
@@ -1096,6 +1096,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i32, align 4
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1177,7 +1184,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.63, label %if.else.64
|
||||
|
||||
match.arm.50: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1197,7 +1203,6 @@ match.arm.51: ; preds = %entry
|
||||
|
||||
match.arm.52: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.91, label %fN.unbox.92
|
||||
@@ -1206,7 +1211,6 @@ match.arm.53: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.105 [
|
||||
i64 19, label %dispatch.case.106
|
||||
i64 20, label %dispatch.case.107
|
||||
@@ -1223,7 +1227,6 @@ match.arm.54: ; No predecessors!
|
||||
unreachable
|
||||
|
||||
match.arm.55: ; preds = %entry
|
||||
%allocaN = alloca i32, align 4
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw21 = extractvalue { i64, i64 } %loadN, 1
|
||||
%trN = trunc i64 %ua.raw21 to i32
|
||||
@@ -1242,7 +1245,6 @@ match.arm.57: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw25 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw25, label %dispatch.default.161 [
|
||||
i64 35, label %dispatch.case.162
|
||||
i64 46, label %dispatch.case.163
|
||||
@@ -1252,7 +1254,6 @@ match.arm.58: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw29 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw29, label %dispatch.default.175 [
|
||||
i64 36, label %dispatch.case.176
|
||||
i64 44, label %dispatch.case.177
|
||||
@@ -1262,7 +1263,6 @@ match.arm.59: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw33 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw33, label %dispatch.default.189 [
|
||||
i64 18, label %dispatch.case.190
|
||||
i64 22, label %dispatch.case.191
|
||||
@@ -2058,6 +2058,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.110, i64 15 }, { ptr, i64 } { ptr @str.111, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2122,7 +2124,6 @@ fv.default: ; preds = %if.merge.119
|
||||
|
||||
fv.case: ; preds = %if.merge.119
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2142,7 +2143,6 @@ fv.case20: ; preds = %if.merge.119
|
||||
|
||||
fv.case24: ; preds = %if.merge.119
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2437,6 +2437,7 @@ fv.case17: ; preds = %if.merge.139
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.148, i64 5 }, { ptr, i64 } { ptr @str.149, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2511,7 +2512,6 @@ fv.case17: ; preds = %if.merge.144
|
||||
|
||||
fv.case20: ; preds = %if.merge.144
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2604,6 +2604,7 @@ fv.case20: ; preds = %if.merge.149
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.166, i64 17 }, { ptr, i64 } { ptr @str.167, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2668,7 +2669,6 @@ fv.default: ; preds = %if.merge.154
|
||||
|
||||
fv.case: ; preds = %if.merge.154
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2694,6 +2694,7 @@ fv.case23: ; preds = %if.merge.154
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.176, i64 7 }, { ptr, i64 } { ptr @str.177, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2756,7 +2757,6 @@ fv.default: ; preds = %if.merge.159
|
||||
|
||||
fv.case: ; preds = %if.merge.159
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2773,6 +2773,7 @@ fv.case17: ; preds = %if.merge.159
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.184, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2805,7 +2806,6 @@ if.merge.168: ; preds = %if.then.167, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2823,6 +2823,8 @@ if.merge.168: ; preds = %if.then.167, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.187, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2855,11 +2857,9 @@ if.merge.173: ; preds = %if.then.172, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2876,6 +2876,7 @@ if.merge.173: ; preds = %if.then.172, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2913,7 +2914,6 @@ if.merge.182: ; preds = %if.then.181, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2930,6 +2930,7 @@ if.merge.182: ; preds = %if.then.181, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.193, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2967,7 +2968,6 @@ if.merge.187: ; preds = %if.then.186, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -393,6 +393,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -404,15 +409,11 @@ if.then.26: ; preds = %entry
|
||||
if.merge.27: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.28
|
||||
|
||||
@@ -424,7 +425,6 @@ while.hdr.28: ; preds = %if.merge.32, %if.me
|
||||
while.body.29: ; preds = %while.hdr.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -482,6 +482,17 @@ if.merge.34: ; preds = %if.then.33, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -493,18 +504,14 @@ if.then.68: ; preds = %entry
|
||||
if.merge.69: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.78
|
||||
|
||||
while.hdr.78: ; preds = %while.exit.89, %if.merge.69
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -512,9 +519,7 @@ while.hdr.78: ; preds = %while.exit.89, %if.
|
||||
br i1 %icmpN, label %or.merge.82, label %or.rhs.81
|
||||
|
||||
while.body.79: ; preds = %or.merge.86
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.87
|
||||
|
||||
@@ -529,7 +534,6 @@ while.exit.80: ; preds = %or.merge.86
|
||||
|
||||
or.rhs.81: ; preds = %while.hdr.78
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -542,7 +546,6 @@ or.merge.82: ; preds = %or.rhs.81, %while.h
|
||||
|
||||
or.rhs.83: ; preds = %or.merge.82
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -555,7 +558,6 @@ or.merge.84: ; preds = %or.rhs.83, %or.merg
|
||||
|
||||
or.rhs.85: ; preds = %or.merge.84
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -576,12 +578,10 @@ while.body.88: ; preds = %while.hdr.87
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -634,6 +634,18 @@ if.merge.92: ; preds = %if.else.91, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -653,11 +665,9 @@ if.else.97: ; preds = %entry
|
||||
|
||||
if.merge.98: ; preds = %if.else.97, %if.then.96
|
||||
%bp = phi double [ %fsub, %if.then.96 ], [ %loadN, %if.else.97 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -665,7 +675,6 @@ if.merge.98: ; preds = %if.else.97, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -680,19 +689,15 @@ if.then.99: ; preds = %if.merge.98
|
||||
if.merge.100: ; preds = %if.then.99, %if.merge.98
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.101, label %if.else.102
|
||||
@@ -705,20 +710,16 @@ if.else.102: ; preds = %if.merge.100
|
||||
|
||||
if.merge.103: ; preds = %if.else.102, %if.then.101
|
||||
%bpN = phi i64 [ 1, %if.then.101 ], [ 0, %if.else.102 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.104, label %if.merge.105
|
||||
@@ -754,7 +755,6 @@ if.merge.105: ; preds = %if.then.104, %if.me
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -782,6 +782,7 @@ if.merge.105: ; preds = %if.then.104, %if.me
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -805,7 +806,6 @@ while.hdr.216: ; preds = %if.merge.221, %entr
|
||||
while.body.217: ; preds = %while.hdr.216
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -846,6 +846,13 @@ if.merge.221: ; preds = %if.else.220, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -866,11 +873,9 @@ if.merge.71: ; preds = %if.then.70, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -887,11 +892,9 @@ if.merge.73: ; preds = %if.then.72, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -908,11 +911,9 @@ if.merge.75: ; preds = %if.then.74, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -925,7 +926,6 @@ if.then.76: ; preds = %if.merge.75
|
||||
br label %if.merge.77
|
||||
|
||||
if.merge.77: ; preds = %if.then.76, %if.merge.75
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -947,6 +947,13 @@ if.merge.77: ; preds = %if.then.76, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -958,40 +965,33 @@ if.then.214: ; preds = %entry
|
||||
if.merge.215: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.222
|
||||
|
||||
@@ -1102,6 +1102,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i32, align 4
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1184,7 +1191,6 @@ match.arm.51: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.65, label %if.else.66
|
||||
|
||||
match.arm.52: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1204,7 +1210,6 @@ match.arm.53: ; preds = %entry
|
||||
|
||||
match.arm.54: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.93, label %fN.unbox.94
|
||||
@@ -1213,7 +1218,6 @@ match.arm.55: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.107 [
|
||||
i64 19, label %dispatch.case.108
|
||||
i64 20, label %dispatch.case.109
|
||||
@@ -1230,7 +1234,6 @@ match.arm.56: ; No predecessors!
|
||||
unreachable
|
||||
|
||||
match.arm.57: ; preds = %entry, %entry
|
||||
%allocaN = alloca i32, align 4
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw21 = extractvalue { i64, i64 } %loadN, 1
|
||||
%trN = trunc i64 %ua.raw21 to i32
|
||||
@@ -1249,7 +1252,6 @@ match.arm.59: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw25 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw25, label %dispatch.default.163 [
|
||||
i64 35, label %dispatch.case.164
|
||||
i64 47, label %dispatch.case.165
|
||||
@@ -1259,7 +1261,6 @@ match.arm.60: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw29 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw29, label %dispatch.default.177 [
|
||||
i64 36, label %dispatch.case.178
|
||||
i64 45, label %dispatch.case.179
|
||||
@@ -1269,7 +1270,6 @@ match.arm.61: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw33 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw33, label %dispatch.default.191 [
|
||||
i64 18, label %dispatch.case.192
|
||||
i64 22, label %dispatch.case.193
|
||||
@@ -2077,6 +2077,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.116, i64 15 }, { ptr, i64 } { ptr @str.117, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2141,7 +2143,6 @@ fv.default: ; preds = %if.merge.121
|
||||
|
||||
fv.case: ; preds = %if.merge.121
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2161,7 +2162,6 @@ fv.case20: ; preds = %if.merge.121
|
||||
|
||||
fv.case24: ; preds = %if.merge.121
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2456,6 +2456,7 @@ fv.case17: ; preds = %if.merge.141
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.154, i64 5 }, { ptr, i64 } { ptr @str.155, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2530,7 +2531,6 @@ fv.case17: ; preds = %if.merge.146
|
||||
|
||||
fv.case20: ; preds = %if.merge.146
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2623,6 +2623,7 @@ fv.case20: ; preds = %if.merge.151
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.172, i64 17 }, { ptr, i64 } { ptr @str.173, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2687,7 +2688,6 @@ fv.default: ; preds = %if.merge.156
|
||||
|
||||
fv.case: ; preds = %if.merge.156
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2713,6 +2713,7 @@ fv.case23: ; preds = %if.merge.156
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.182, i64 7 }, { ptr, i64 } { ptr @str.183, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2775,7 +2776,6 @@ fv.default: ; preds = %if.merge.161
|
||||
|
||||
fv.case: ; preds = %if.merge.161
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2792,6 +2792,7 @@ fv.case17: ; preds = %if.merge.161
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.190, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2824,7 +2825,6 @@ if.merge.170: ; preds = %if.then.169, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2842,6 +2842,8 @@ if.merge.170: ; preds = %if.then.169, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.193, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2874,11 +2876,9 @@ if.merge.175: ; preds = %if.then.174, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2895,6 +2895,7 @@ if.merge.175: ; preds = %if.then.174, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.196, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2932,7 +2933,6 @@ if.merge.184: ; preds = %if.then.183, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2949,6 +2949,7 @@ if.merge.184: ; preds = %if.then.183, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.199, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2986,7 +2987,6 @@ if.merge.189: ; preds = %if.then.188, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -389,6 +389,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -400,15 +405,11 @@ if.then.44: ; preds = %entry
|
||||
if.merge.45: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.46
|
||||
|
||||
@@ -420,7 +421,6 @@ while.hdr.46: ; preds = %if.merge.50, %if.me
|
||||
while.body.47: ; preds = %while.hdr.46
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -478,6 +478,17 @@ if.merge.52: ; preds = %if.then.51, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -489,18 +500,14 @@ if.then.86: ; preds = %entry
|
||||
if.merge.87: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.96
|
||||
|
||||
while.hdr.96: ; preds = %while.exit.107, %if.merge.87
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -508,9 +515,7 @@ while.hdr.96: ; preds = %while.exit.107, %if
|
||||
br i1 %icmpN, label %or.merge.100, label %or.rhs.99
|
||||
|
||||
while.body.97: ; preds = %or.merge.104
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.105
|
||||
|
||||
@@ -525,7 +530,6 @@ while.exit.98: ; preds = %or.merge.104
|
||||
|
||||
or.rhs.99: ; preds = %while.hdr.96
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -538,7 +542,6 @@ or.merge.100: ; preds = %or.rhs.99, %while.h
|
||||
|
||||
or.rhs.101: ; preds = %or.merge.100
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -551,7 +554,6 @@ or.merge.102: ; preds = %or.rhs.101, %or.mer
|
||||
|
||||
or.rhs.103: ; preds = %or.merge.102
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -572,12 +574,10 @@ while.body.106: ; preds = %while.hdr.105
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -630,6 +630,18 @@ if.merge.110: ; preds = %if.else.109, %if.th
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -649,11 +661,9 @@ if.else.115: ; preds = %entry
|
||||
|
||||
if.merge.116: ; preds = %if.else.115, %if.then.114
|
||||
%bp = phi double [ %fsub, %if.then.114 ], [ %loadN, %if.else.115 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -661,7 +671,6 @@ if.merge.116: ; preds = %if.else.115, %if.th
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -676,19 +685,15 @@ if.then.117: ; preds = %if.merge.116
|
||||
if.merge.118: ; preds = %if.then.117, %if.merge.116
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.119, label %if.else.120
|
||||
@@ -701,20 +706,16 @@ if.else.120: ; preds = %if.merge.118
|
||||
|
||||
if.merge.121: ; preds = %if.else.120, %if.then.119
|
||||
%bpN = phi i64 [ 1, %if.then.119 ], [ 0, %if.else.120 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.122, label %if.merge.123
|
||||
@@ -750,7 +751,6 @@ if.merge.123: ; preds = %if.then.122, %if.me
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -778,6 +778,7 @@ if.merge.123: ; preds = %if.then.122, %if.me
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -801,7 +802,6 @@ while.hdr.234: ; preds = %if.merge.239, %entr
|
||||
while.body.235: ; preds = %while.hdr.234
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -842,6 +842,13 @@ if.merge.239: ; preds = %if.else.238, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -862,11 +869,9 @@ if.merge.89: ; preds = %if.then.88, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -883,11 +888,9 @@ if.merge.91: ; preds = %if.then.90, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -904,11 +907,9 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -921,7 +922,6 @@ if.then.94: ; preds = %if.merge.93
|
||||
br label %if.merge.95
|
||||
|
||||
if.merge.95: ; preds = %if.then.94, %if.merge.93
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -943,6 +943,13 @@ if.merge.95: ; preds = %if.then.94, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -954,40 +961,33 @@ if.then.232: ; preds = %entry
|
||||
if.merge.233: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.240
|
||||
|
||||
@@ -1098,6 +1098,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i32, align 4
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1179,7 +1186,6 @@ match.arm.69: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.83, label %if.else.84
|
||||
|
||||
match.arm.70: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1199,7 +1205,6 @@ match.arm.71: ; preds = %entry
|
||||
|
||||
match.arm.72: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.111, label %fN.unbox.112
|
||||
@@ -1208,7 +1213,6 @@ match.arm.73: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.125 [
|
||||
i64 19, label %dispatch.case.126
|
||||
i64 20, label %dispatch.case.127
|
||||
@@ -1225,7 +1229,6 @@ match.arm.74: ; No predecessors!
|
||||
unreachable
|
||||
|
||||
match.arm.75: ; preds = %entry
|
||||
%allocaN = alloca i32, align 4
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw21 = extractvalue { i64, i64 } %loadN, 1
|
||||
%trN = trunc i64 %ua.raw21 to i32
|
||||
@@ -1244,7 +1247,6 @@ match.arm.77: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw25 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw25, label %dispatch.default.181 [
|
||||
i64 35, label %dispatch.case.182
|
||||
i64 46, label %dispatch.case.183
|
||||
@@ -1254,7 +1256,6 @@ match.arm.78: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw29 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw29, label %dispatch.default.195 [
|
||||
i64 36, label %dispatch.case.196
|
||||
i64 44, label %dispatch.case.197
|
||||
@@ -1264,7 +1265,6 @@ match.arm.79: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw33 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw33, label %dispatch.default.209 [
|
||||
i64 18, label %dispatch.case.210
|
||||
i64 22, label %dispatch.case.211
|
||||
@@ -2023,6 +2023,8 @@ if.merge.19: ; preds = %catch.handle.16
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca i32, align 4
|
||||
%allocaN = alloca i32, align 4
|
||||
%allocaN = alloca i32, align 4
|
||||
store i32 0, ptr %alloca, align 4
|
||||
%call = call i32 @must(ptr @__sx_default_context, i32 -1)
|
||||
%icmp = icmp ne i32 %call, 0
|
||||
@@ -2062,7 +2064,6 @@ catch.merge.9: ; preds = %catch.handle.8, %ca
|
||||
%addN = add i32 %loadN, %callN
|
||||
store i32 %addN, ptr %alloca, align 4
|
||||
%callN = call i32 @handle_some(ptr @__sx_default_context, i32 0)
|
||||
%allocaN = alloca i32, align 4
|
||||
store i32 %callN, ptr %allocaN, align 4
|
||||
%loadN = load i32, ptr %allocaN, align 4
|
||||
%icmpN = icmp eq i32 %loadN, 2
|
||||
@@ -2076,7 +2077,6 @@ if.then.20: ; preds = %catch.merge.9
|
||||
|
||||
if.merge.21: ; preds = %if.then.20, %catch.merge.9
|
||||
%callN = call i32 @handle_some(ptr @__sx_default_context, i32 -1)
|
||||
%allocaN = alloca i32, align 4
|
||||
store i32 %callN, ptr %allocaN, align 4
|
||||
%loadN = load i32, ptr %allocaN, align 4
|
||||
%icmpN = icmp eq i32 %loadN, 1
|
||||
@@ -2169,6 +2169,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.112, i64 15 }, { ptr, i64 } { ptr @str.113, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2233,7 +2235,6 @@ fv.default: ; preds = %if.merge.139
|
||||
|
||||
fv.case: ; preds = %if.merge.139
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2253,7 +2254,6 @@ fv.case20: ; preds = %if.merge.139
|
||||
|
||||
fv.case24: ; preds = %if.merge.139
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2548,6 +2548,7 @@ fv.case17: ; preds = %if.merge.159
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.150, i64 5 }, { ptr, i64 } { ptr @str.151, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2622,7 +2623,6 @@ fv.case17: ; preds = %if.merge.164
|
||||
|
||||
fv.case20: ; preds = %if.merge.164
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2715,6 +2715,7 @@ fv.case20: ; preds = %if.merge.169
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.168, i64 17 }, { ptr, i64 } { ptr @str.169, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2779,7 +2780,6 @@ fv.default: ; preds = %if.merge.174
|
||||
|
||||
fv.case: ; preds = %if.merge.174
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2805,6 +2805,7 @@ fv.case23: ; preds = %if.merge.174
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.178, i64 7 }, { ptr, i64 } { ptr @str.179, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2867,7 +2868,6 @@ fv.default: ; preds = %if.merge.179
|
||||
|
||||
fv.case: ; preds = %if.merge.179
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2884,6 +2884,7 @@ fv.case17: ; preds = %if.merge.179
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.186, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2916,7 +2917,6 @@ if.merge.188: ; preds = %if.then.187, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -2934,6 +2934,8 @@ if.merge.188: ; preds = %if.then.187, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.189, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -2966,11 +2968,9 @@ if.merge.193: ; preds = %if.then.192, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2987,6 +2987,7 @@ if.merge.193: ; preds = %if.then.192, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.192, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3024,7 +3025,6 @@ if.merge.202: ; preds = %if.then.201, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3041,6 +3041,7 @@ if.merge.202: ; preds = %if.then.201, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.195, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3078,7 +3079,6 @@ if.merge.207: ; preds = %if.then.206, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -160,6 +160,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -171,15 +176,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -191,7 +192,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
|
||||
@@ -176,6 +176,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -187,15 +192,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -207,7 +208,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -831,6 +831,14 @@ define i32 @main() #0 {
|
||||
entry:
|
||||
call void @__sx_objc_defined_class_init()
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%call = call ptr @objc_getClass(ptr @str.16)
|
||||
store ptr %call, ptr %alloca, align 8
|
||||
%load = load ptr, ptr %alloca, align 8
|
||||
@@ -842,10 +850,8 @@ if.then.0: ; preds = %entry
|
||||
ret i32 1
|
||||
|
||||
if.merge.1: ; preds = %entry
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.17)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @class_getMethodImplementation(ptr %loadN, ptr %loadN)
|
||||
@@ -859,12 +865,9 @@ if.then.39: ; preds = %if.merge.1
|
||||
ret i32 1
|
||||
|
||||
if.merge.40: ; preds = %if.merge.1
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.18)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr @objc_msgSend, ptr %allocaN, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
@@ -879,16 +882,13 @@ if.then.41: ; preds = %if.merge.40
|
||||
ret i32 1
|
||||
|
||||
if.merge.42: ; preds = %if.merge.40
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.19)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr @objc_msgSend, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
call void %loadN(ptr %loadN, ptr %loadN)
|
||||
%allocaN = alloca ptr, align 8
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
|
||||
@@ -506,6 +506,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -517,15 +522,11 @@ if.then.18: ; preds = %entry
|
||||
if.merge.19: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.20
|
||||
|
||||
@@ -537,7 +538,6 @@ while.hdr.20: ; preds = %if.merge.24, %if.me
|
||||
while.body.21: ; preds = %while.hdr.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -595,6 +595,17 @@ if.merge.26: ; preds = %if.then.25, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -606,18 +617,14 @@ if.then.64: ; preds = %entry
|
||||
if.merge.65: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.74
|
||||
|
||||
while.hdr.74: ; preds = %while.exit.85, %if.merge.65
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -625,9 +632,7 @@ while.hdr.74: ; preds = %while.exit.85, %if.
|
||||
br i1 %icmpN, label %or.merge.78, label %or.rhs.77
|
||||
|
||||
while.body.75: ; preds = %or.merge.82
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.83
|
||||
|
||||
@@ -642,7 +647,6 @@ while.exit.76: ; preds = %or.merge.82
|
||||
|
||||
or.rhs.77: ; preds = %while.hdr.74
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -655,7 +659,6 @@ or.merge.78: ; preds = %or.rhs.77, %while.h
|
||||
|
||||
or.rhs.79: ; preds = %or.merge.78
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -668,7 +671,6 @@ or.merge.80: ; preds = %or.rhs.79, %or.merg
|
||||
|
||||
or.rhs.81: ; preds = %or.merge.80
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -689,12 +691,10 @@ while.body.84: ; preds = %while.hdr.83
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -747,6 +747,18 @@ if.merge.88: ; preds = %if.else.87, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -766,11 +778,9 @@ if.else.93: ; preds = %entry
|
||||
|
||||
if.merge.94: ; preds = %if.else.93, %if.then.92
|
||||
%bp = phi double [ %fsub, %if.then.92 ], [ %loadN, %if.else.93 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -778,7 +788,6 @@ if.merge.94: ; preds = %if.else.93, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -793,19 +802,15 @@ if.then.95: ; preds = %if.merge.94
|
||||
if.merge.96: ; preds = %if.then.95, %if.merge.94
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.97, label %if.else.98
|
||||
@@ -818,20 +823,16 @@ if.else.98: ; preds = %if.merge.96
|
||||
|
||||
if.merge.99: ; preds = %if.else.98, %if.then.97
|
||||
%bpN = phi i64 [ 1, %if.then.97 ], [ 0, %if.else.98 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.100, label %if.merge.101
|
||||
@@ -867,7 +868,6 @@ if.merge.101: ; preds = %if.then.100, %if.me
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -895,6 +895,7 @@ if.merge.101: ; preds = %if.then.100, %if.me
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -918,7 +919,6 @@ while.hdr.253: ; preds = %if.merge.258, %entr
|
||||
while.body.254: ; preds = %while.hdr.253
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -959,6 +959,13 @@ if.merge.258: ; preds = %if.else.257, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -979,11 +986,9 @@ if.merge.67: ; preds = %if.then.66, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1000,11 +1005,9 @@ if.merge.69: ; preds = %if.then.68, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1021,11 +1024,9 @@ if.merge.71: ; preds = %if.then.70, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -1038,7 +1039,6 @@ if.then.72: ; preds = %if.merge.71
|
||||
br label %if.merge.73
|
||||
|
||||
if.merge.73: ; preds = %if.then.72, %if.merge.71
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1060,6 +1060,13 @@ if.merge.73: ; preds = %if.then.72, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1071,40 +1078,33 @@ if.then.251: ; preds = %entry
|
||||
if.merge.252: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.259
|
||||
|
||||
@@ -1215,6 +1215,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1305,7 +1312,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.61, label %if.else.62
|
||||
|
||||
match.arm.48: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1325,7 +1331,6 @@ match.arm.49: ; preds = %entry
|
||||
|
||||
match.arm.50: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.89, label %fN.unbox.90
|
||||
@@ -1334,7 +1339,6 @@ match.arm.51: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.103 [
|
||||
i64 19, label %dispatch.case.104
|
||||
i64 20, label %dispatch.case.105
|
||||
@@ -1355,7 +1359,6 @@ match.arm.52: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.183 [
|
||||
i64 37, label %dispatch.case.184
|
||||
i64 38, label %dispatch.case.185
|
||||
@@ -1371,7 +1374,6 @@ match.arm.55: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.191 [
|
||||
i64 35, label %dispatch.case.192
|
||||
i64 58, label %dispatch.case.193
|
||||
@@ -1382,7 +1384,6 @@ match.arm.56: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.211 [
|
||||
i64 36, label %dispatch.case.212
|
||||
i64 53, label %dispatch.case.213
|
||||
@@ -1392,7 +1393,6 @@ match.arm.57: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.225 [
|
||||
i64 18, label %dispatch.case.226
|
||||
i64 22, label %dispatch.case.227
|
||||
@@ -2290,6 +2290,10 @@ entry:
|
||||
call void @__sx_objc_selector_init()
|
||||
call void @__sx_objc_defined_class_init()
|
||||
call void @__sx_objc_class_init()
|
||||
%allocaN = alloca i32, align 4
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%load = load ptr, ptr @OBJC_CLASSLIST_REFERENCES_SxBox, align 8
|
||||
%call = call ptr @class_createInstance(ptr %load, i64 0)
|
||||
%loadN = load { { ptr, ptr, ptr }, ptr }, ptr @__sx_default_context, align 8
|
||||
@@ -2345,7 +2349,6 @@ if.merge.3: ; preds = %or.merge.1
|
||||
%loadN = load ptr, ptr %alloca, align 8
|
||||
%loadN = load ptr, ptr @OBJC_SELECTOR_REFERENCES_area, align 8
|
||||
%objc.msg25 = call i32 @objc_msgSend(ptr %loadN, ptr %loadN)
|
||||
%allocaN = alloca i32, align 4
|
||||
store i32 %objc.msg25, ptr %allocaN, align 4
|
||||
%loadN = load i32, ptr %allocaN, align 4
|
||||
%cmp.ext28 = sext i32 %loadN to i64
|
||||
@@ -2358,16 +2361,13 @@ if.then.41: ; preds = %if.merge.3
|
||||
ret i32 1
|
||||
|
||||
if.merge.42: ; preds = %if.merge.3
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @objc_getClass(ptr @str.120)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.121)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%callN = call ptr @class_getInstanceMethod(ptr %loadN, ptr %loadN)
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%icmpN = icmp ne ptr %loadN, null
|
||||
@@ -2607,6 +2607,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.134, i64 15 }, { ptr, i64 } { ptr @str.135, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2671,7 +2673,6 @@ fv.default: ; preds = %if.merge.121
|
||||
|
||||
fv.case: ; preds = %if.merge.121
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2691,7 +2692,6 @@ fv.case20: ; preds = %if.merge.121
|
||||
|
||||
fv.case24: ; preds = %if.merge.121
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2986,6 +2986,7 @@ fv.case17: ; preds = %if.merge.141
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.172, i64 5 }, { ptr, i64 } { ptr @str.173, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3060,7 +3061,6 @@ fv.case17: ; preds = %if.merge.146
|
||||
|
||||
fv.case20: ; preds = %if.merge.146
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3153,6 +3153,7 @@ fv.case20: ; preds = %if.merge.151
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.190, i64 17 }, { ptr, i64 } { ptr @str.191, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3217,7 +3218,6 @@ fv.default: ; preds = %if.merge.156
|
||||
|
||||
fv.case: ; preds = %if.merge.156
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3243,6 +3243,7 @@ fv.case23: ; preds = %if.merge.156
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.200, i64 7 }, { ptr, i64 } { ptr @str.201, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3305,7 +3306,6 @@ fv.default: ; preds = %if.merge.161
|
||||
|
||||
fv.case: ; preds = %if.merge.161
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3487,6 +3487,7 @@ if.merge.176: ; preds = %if.then.175, %while
|
||||
define internal { ptr, i64 } @struct_to_string____SxBoxState(ptr %0, { { ptr, ptr, ptr }, i32, i32, i32 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i32, i32, i32 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i32, i32, i32 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.226, i64 12 }, { ptr, i64 } { ptr @str.227, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3551,7 +3552,6 @@ fv.default: ; preds = %if.merge.181
|
||||
|
||||
fv.case: ; preds = %if.merge.181
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i32, i32, i32 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3662,6 +3662,7 @@ if.merge.189: ; preds = %if.then.188, %entry
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.256, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3694,7 +3695,6 @@ if.merge.199: ; preds = %if.then.198, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3712,6 +3712,8 @@ if.merge.199: ; preds = %if.then.198, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.259, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3744,11 +3746,9 @@ if.merge.204: ; preds = %if.then.203, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3765,6 +3765,8 @@ if.merge.204: ; preds = %if.then.203, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [3 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [3 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.262, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3797,11 +3799,9 @@ if.merge.209: ; preds = %if.then.208, %while
|
||||
%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
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
store [3 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [3 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3818,6 +3818,7 @@ if.merge.209: ; preds = %if.then.208, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.265, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3855,7 +3856,6 @@ if.merge.218: ; preds = %if.then.217, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3872,6 +3872,7 @@ if.merge.218: ; preds = %if.then.217, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.268, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3909,7 +3910,6 @@ if.merge.223: ; preds = %if.then.222, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -152,6 +152,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -163,15 +168,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -183,7 +184,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
|
||||
@@ -448,6 +448,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -459,15 +464,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -479,7 +480,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -537,6 +537,17 @@ if.merge.22: ; preds = %if.then.21, %while.
|
||||
define internal { ptr, i64 } @uint_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -548,18 +559,14 @@ if.then.56: ; preds = %entry
|
||||
if.merge.57: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -567,9 +574,7 @@ while.hdr.66: ; preds = %while.exit.77, %if.
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.75
|
||||
|
||||
@@ -584,7 +589,6 @@ while.exit.68: ; preds = %or.merge.74
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
@@ -597,7 +601,6 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
@@ -610,7 +613,6 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
@@ -631,12 +633,10 @@ while.body.76: ; preds = %while.hdr.75
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
@@ -689,6 +689,18 @@ if.merge.80: ; preds = %if.else.79, %if.the
|
||||
define internal { ptr, i64 } @float_to_string(ptr %0, double %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store double %1, ptr %alloca, align 8
|
||||
%load = load double, ptr %alloca, align 8
|
||||
%fcmp = fcmp olt double %load, 0.000000e+00
|
||||
@@ -708,11 +720,9 @@ if.else.85: ; preds = %entry
|
||||
|
||||
if.merge.86: ; preds = %if.else.85, %if.then.84
|
||||
%bp = phi double [ %fsub, %if.then.84 ], [ %loadN, %if.else.85 ]
|
||||
%allocaN = alloca double, align 8
|
||||
store double %bp, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%fptosi = fptosi double %loadN to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosi, ptr %allocaN, align 8
|
||||
%loadN = load double, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -720,7 +730,6 @@ if.merge.86: ; preds = %if.else.85, %if.the
|
||||
%fsubN = fsub double %loadN, %sitofp
|
||||
%fmul = fmul double %fsubN, 1.000000e+06
|
||||
%fptosiN = fptosi double %fmul to i64
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %fptosiN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmp = icmp slt i64 %loadN, 0
|
||||
@@ -735,19 +744,15 @@ if.then.87: ; preds = %if.merge.86
|
||||
if.merge.88: ; preds = %if.then.87, %if.merge.86
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%len = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %len, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %lenN, ptr %allocaN, align 8
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.89, label %if.else.90
|
||||
@@ -760,20 +765,16 @@ if.else.90: ; preds = %if.merge.88
|
||||
|
||||
if.merge.91: ; preds = %if.else.90, %if.then.89
|
||||
%bpN = phi i64 [ 1, %if.then.89 ], [ 0, %if.else.90 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bpN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, %loadN
|
||||
%addN = add i64 %add, 1
|
||||
%addN = add i64 %addN, 6
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%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.92, label %if.merge.93
|
||||
@@ -809,7 +810,6 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 6, %loadN
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
@@ -837,6 +837,7 @@ if.merge.93: ; preds = %if.then.92, %if.mer
|
||||
define internal void @hex_group(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %2, ptr %allocaN, align 8
|
||||
@@ -860,7 +861,6 @@ while.hdr.237: ; preds = %if.merge.242, %entr
|
||||
while.body.238: ; preds = %while.hdr.237
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 16
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 10
|
||||
@@ -901,6 +901,13 @@ if.merge.242: ; preds = %if.else.241, %if.th
|
||||
define internal [4 x i64] @decompose_u16x4(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%srem = srem i64 %load, 65536
|
||||
@@ -921,11 +928,9 @@ if.merge.59: ; preds = %if.then.58, %entry
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 %loadN, %loadN
|
||||
%sdiv = sdiv i64 %sub, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdiv, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -942,11 +947,9 @@ if.merge.61: ; preds = %if.then.60, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -963,11 +966,9 @@ if.merge.63: ; preds = %if.then.62, %if.mer
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, %loadN
|
||||
%sdivN = sdiv i64 %subN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sdivN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sremN = srem i64 %loadN, 65536
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %sremN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
@@ -980,7 +981,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
@@ -1002,6 +1002,13 @@ if.merge.65: ; preds = %if.then.64, %if.mer
|
||||
define internal { ptr, i64 } @int_to_hex_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -1013,40 +1020,33 @@ if.then.235: ; preds = %entry
|
||||
if.merge.236: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%call = call [4 x i64] @decompose_u16x4(ptr %0, i64 %loadN)
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
store [4 x i64] %call, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.243
|
||||
|
||||
@@ -1157,6 +1157,13 @@ declare ptr @path_join(ptr, ptr) #0
|
||||
define internal { ptr, i64 } @any_to_string(ptr %0, { i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { i64, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { i64, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.5, i64 3 }, ptr %allocaN, align 8
|
||||
@@ -1244,7 +1251,6 @@ match.arm.39: ; preds = %entry, %entry, %ent
|
||||
br i1 %tiu.load, label %if.then.53, label %if.else.54
|
||||
|
||||
match.arm.40: ; preds = %entry
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%ua.raw8 = extractvalue { i64, i64 } %loadN, 1
|
||||
%ua.ptr = inttoptr i64 %ua.raw8 to ptr
|
||||
@@ -1264,7 +1270,6 @@ match.arm.41: ; preds = %entry
|
||||
|
||||
match.arm.42: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca double, align 8
|
||||
%sgN = extractvalue { i64, i64 } %loadN, 0
|
||||
%icmp = icmp eq i64 %sgN, 10
|
||||
br i1 %icmp, label %fN.unbox.81, label %fN.unbox.82
|
||||
@@ -1273,7 +1278,6 @@ match.arm.43: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw16 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw16, label %dispatch.default.95 [
|
||||
i64 19, label %dispatch.case.96
|
||||
i64 20, label %dispatch.case.97
|
||||
@@ -1293,7 +1297,6 @@ match.arm.44: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw20 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw20, label %dispatch.default.169 [
|
||||
i64 37, label %dispatch.case.170
|
||||
i64 38, label %dispatch.case.171
|
||||
@@ -1309,7 +1312,6 @@ match.arm.47: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw24 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw24, label %dispatch.default.177 [
|
||||
i64 35, label %dispatch.case.178
|
||||
i64 52, label %dispatch.case.179
|
||||
@@ -1320,7 +1322,6 @@ match.arm.48: ; preds = %entry, %entry
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw28 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw28, label %dispatch.default.197 [
|
||||
i64 36, label %dispatch.case.198
|
||||
i64 50, label %dispatch.case.199
|
||||
@@ -1330,7 +1331,6 @@ match.arm.49: ; preds = %entry, %entry, %ent
|
||||
%loadN = load { i64, i64 }, ptr %allocaN, align 8
|
||||
%ua.raw32 = extractvalue { i64, i64 } %loadN, 1
|
||||
%loadN = load { i64, i64 }, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
switch i64 %ua.raw32, label %dispatch.default.211 [
|
||||
i64 18, label %dispatch.case.212
|
||||
i64 22, label %dispatch.case.213
|
||||
@@ -2404,6 +2404,8 @@ entry:
|
||||
define internal { ptr, i64 } @struct_to_string__Source_Location(ptr %0, { { ptr, i64 }, i32, i32, { ptr, i64 } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, i64 }, i32, i32, { ptr, i64 } }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { { ptr, i64 }, i32, i32, { ptr, i64 } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.122, i64 15 }, { ptr, i64 } { ptr @str.123, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2468,7 +2470,6 @@ fv.default: ; preds = %if.merge.112
|
||||
|
||||
fv.case: ; preds = %if.merge.112
|
||||
%fv.field = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2488,7 +2489,6 @@ fv.case20: ; preds = %if.merge.112
|
||||
|
||||
fv.case24: ; preds = %if.merge.112
|
||||
%fv.field25 = extractvalue { { ptr, i64 }, i32, i32, { ptr, i64 } } %loadN, 3
|
||||
%ba.tmp26 = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %fv.field25, ptr %ba.tmp26, align 8
|
||||
%ba.p2i27 = ptrtoint ptr %ba.tmp26 to i64
|
||||
%fv.val28 = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i27, 1
|
||||
@@ -2783,6 +2783,7 @@ fv.case17: ; preds = %if.merge.132
|
||||
define internal { ptr, i64 } @struct_to_string__Arena(ptr %0, { ptr, i64, { ptr, ptr, ptr } } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64, { ptr, ptr, ptr } }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, i64, { ptr, ptr, ptr } } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.160, i64 5 }, { ptr, i64 } { ptr @str.161, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -2857,7 +2858,6 @@ fv.case17: ; preds = %if.merge.137
|
||||
|
||||
fv.case20: ; preds = %if.merge.137
|
||||
%fv.field21 = extractvalue { ptr, i64, { ptr, ptr, ptr } } %loadN, 2
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field21, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val22 = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -2950,6 +2950,7 @@ fv.case20: ; preds = %if.merge.142
|
||||
define internal { ptr, i64 } @struct_to_string__TrackingAllocator(ptr %0, { { ptr, ptr, ptr }, i64, i64, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, i64, i64, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, i64, i64, i64 } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.178, i64 17 }, { ptr, i64 } { ptr @str.179, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3014,7 +3015,6 @@ fv.default: ; preds = %if.merge.147
|
||||
|
||||
fv.case: ; preds = %if.merge.147
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, i64, i64, i64 } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3040,6 +3040,7 @@ fv.case23: ; preds = %if.merge.147
|
||||
define internal { ptr, i64 } @struct_to_string__Context(ptr %0, { { ptr, ptr, ptr }, ptr } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { { ptr, ptr, ptr }, ptr }, align 8
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { { ptr, ptr, ptr }, ptr } %1, ptr %alloca, align 8
|
||||
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } { ptr @str.188, i64 7 }, { ptr, i64 } { ptr @str.189, i64 1 })
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
@@ -3102,7 +3103,6 @@ fv.default: ; preds = %if.merge.152
|
||||
|
||||
fv.case: ; preds = %if.merge.152
|
||||
%fv.field = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
||||
%ba.tmp = alloca { ptr, ptr, ptr }, align 8
|
||||
store { ptr, ptr, ptr } %fv.field, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%fv.val = insertvalue { i64, i64 } { i64 20, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3392,6 +3392,7 @@ if.merge.175: ; preds = %if.then.174, %entry
|
||||
define internal { ptr, i64 } @array_to_string__AR_4_s64(ptr %0, [4 x i64] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [4 x i64], align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.237, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3424,7 +3425,6 @@ if.merge.185: ; preds = %if.then.184, %while
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
@@ -3442,6 +3442,8 @@ if.merge.185: ; preds = %if.then.184, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_1_Any(ptr %0, [1 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [1 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [1 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.240, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3474,11 +3476,9 @@ if.merge.190: ; preds = %if.then.189, %while
|
||||
%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
|
||||
%ig.tmp = alloca [1 x { i64, i64 }], align 8
|
||||
store [1 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [1 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3495,6 +3495,8 @@ if.merge.190: ; preds = %if.then.189, %while
|
||||
define internal { ptr, i64 } @array_to_string__AR_3_Any(ptr %0, [3 x { i64, i64 }] %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca [3 x { i64, i64 }], align 8
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store [3 x { i64, i64 }] %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.243, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3527,11 +3529,9 @@ if.merge.195: ; preds = %if.then.194, %while
|
||||
%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
|
||||
%ig.tmp = alloca [3 x { i64, i64 }], align 8
|
||||
store [3 x { i64, i64 }] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [3 x { i64, i64 }], ptr %ig.tmp, i64 0, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3548,6 +3548,7 @@ if.merge.195: ; preds = %if.then.194, %while
|
||||
define internal { ptr, i64 } @slice_to_string__string(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.246, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3585,7 +3586,6 @@ if.merge.204: ; preds = %if.then.203, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { ptr, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { ptr, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 12, i64 undef }, i64 %ba.p2i, 1
|
||||
@@ -3602,6 +3602,7 @@ if.merge.204: ; preds = %if.then.203, %while
|
||||
define internal { ptr, i64 } @slice_to_string__Any(ptr %0, { ptr, i64 } %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca { ptr, i64 }, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { ptr, i64 } %1, ptr %alloca, align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } { ptr @str.249, i64 1 }, ptr %allocaN, align 8
|
||||
@@ -3639,7 +3640,6 @@ if.merge.209: ; preds = %if.then.208, %while
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr = getelementptr { i64, i64 }, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load { i64, i64 }, ptr %ig.ptr, align 8
|
||||
%ba.tmp = alloca { i64, i64 }, align 8
|
||||
store { i64, i64 } %ig.val, ptr %ba.tmp, align 8
|
||||
%ba.p2i = ptrtoint ptr %ba.tmp to i64
|
||||
%ba.val = insertvalue { i64, i64 } { i64 13, i64 undef }, i64 %ba.p2i, 1
|
||||
|
||||
@@ -178,6 +178,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -189,15 +194,11 @@ if.then.14: ; preds = %entry
|
||||
if.merge.15: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
@@ -209,7 +210,6 @@ while.hdr.16: ; preds = %if.merge.20, %if.me
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
|
||||
@@ -151,6 +151,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -162,15 +167,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -182,7 +183,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -658,12 +658,12 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca i32, align 4
|
||||
%gload = load i1, ptr @g_should_call, align 1
|
||||
br i1 %gload, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%call = call i32 @read_int(ptr @__sx_default_context, ptr null, ptr null)
|
||||
%alloca = alloca i32, align 4
|
||||
store i32 %call, ptr %alloca, align 4
|
||||
br label %if.merge.1
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -658,12 +658,12 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%gload = load i1, ptr @g_should_call, align 1
|
||||
br i1 %gload, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%call = call i64 @read_long(ptr @__sx_default_context, ptr null, ptr null)
|
||||
%alloca = alloca i64, align 8
|
||||
store i64 %call, ptr %alloca, align 8
|
||||
br label %if.merge.1
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -658,12 +658,12 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca double, align 8
|
||||
%gload = load i1, ptr @g_should_call, align 1
|
||||
br i1 %gload, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%call = call double @read_double(ptr @__sx_default_context, ptr null, ptr null)
|
||||
%alloca = alloca double, align 8
|
||||
store double %call, ptr %alloca, align 8
|
||||
br label %if.merge.1
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -658,12 +658,12 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca i1, align 1
|
||||
%gload = load i1, ptr @g_should_call, align 1
|
||||
br i1 %gload, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%call = call i1 @read_bool(ptr @__sx_default_context, ptr null, ptr null)
|
||||
%alloca = alloca i1, align 1
|
||||
store i1 %call, ptr %alloca, align 1
|
||||
br label %if.merge.1
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -658,12 +658,12 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%gload = load i1, ptr @g_should_call, align 1
|
||||
br i1 %gload, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%call = call ptr @get_window(ptr @__sx_default_context, ptr null, ptr null)
|
||||
%alloca = alloca ptr, align 8
|
||||
store ptr %call, ptr %alloca, align 8
|
||||
br label %if.merge.1
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -655,12 +655,12 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
%alloca = alloca i32, align 4
|
||||
%gload = load i1, ptr @g_should_call, align 1
|
||||
br i1 %gload, label %if.then.0, label %if.merge.1
|
||||
|
||||
if.then.0: ; preds = %entry
|
||||
%call = call i32 @call_static_max(ptr @__sx_default_context, ptr null, ptr null)
|
||||
%alloca = alloca i32, align 4
|
||||
store i32 %call, ptr %alloca, align 4
|
||||
br label %if.merge.1
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
@@ -620,6 +620,7 @@ if.merge.38: ; preds = %if.then.37, %while.
|
||||
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
%alloca = alloca ptr, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %1, ptr %alloca, align 8
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %2, ptr %allocaN, align 8
|
||||
@@ -651,7 +652,6 @@ jni.cont: ; preds = %jni.miss, %entry
|
||||
%6 = getelementptr inbounds ptr, ptr %jni.ifs, i32 34
|
||||
%jni.callfn = load ptr, ptr %6, align 8
|
||||
%jni.ret = call ptr %jni.callfn(ptr %load, ptr %loadN, ptr %jni.mid)
|
||||
%allocaN = alloca ptr, align 8
|
||||
store ptr %jni.ret, ptr %allocaN, align 8
|
||||
call void @sx_jni_env_tl_set(ptr %call)
|
||||
ret void
|
||||
|
||||
@@ -149,6 +149,11 @@ entry:
|
||||
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
||||
entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca i1, align 1
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
%icmp = icmp eq i64 %load, 0
|
||||
@@ -160,15 +165,11 @@ if.then.16: ; preds = %entry
|
||||
if.merge.17: ; preds = %entry
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
@@ -180,7 +181,6 @@ while.hdr.18: ; preds = %if.merge.22, %if.me
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%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
|
||||
|
||||
136
issues/0109-loop-body-alloca-stack-growth.md
Normal file
136
issues/0109-loop-body-alloca-stack-growth.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# RESOLVED — 0109: allocas inside loop bodies accumulate stack per iteration
|
||||
|
||||
**Root cause:** `emitAlloca` (and ~18 sibling `LLVMBuildAlloca` temp sites in the
|
||||
LLVM backend) built allocas at the builder's current position. An alloca inside a
|
||||
loop body re-executes per iteration and LLVM reclaims allocas only at `ret`, so
|
||||
the frame grew with the trip count — body locals, nested-loop index slots, and
|
||||
spill temps (`ig.tmp` etc.) all segfaulted long loops on stack exhaustion.
|
||||
|
||||
**Fix:** new `LLVMEmitter.buildEntryAlloca` (src/ir/emit_llvm.zig) builds every
|
||||
per-instruction alloca in the function's entry block (after existing entry
|
||||
allocas, builder position restored); all `LLVMBuildAlloca` sites reachable
|
||||
during instruction emission in src/backend/llvm/ops.zig, src/backend/llvm/abi.zig
|
||||
and src/ir/emit_llvm.zig route through it. Initialization stores stay at the
|
||||
use site, so per-iteration re-init semantics are unchanged; entry-block slots
|
||||
are also mem2reg-promotable. ~35 `.ir` snapshots churned (pure alloca position
|
||||
moves — verified type-multiset-identical per file).
|
||||
|
||||
**Regression test:** `examples/0047-basic-loop-local-stack-reuse.sx` (1M-iteration
|
||||
body-local loop prints `sum=499999500000`; 3M-iteration nested loop prints
|
||||
`n=3000000`; both segfaulted pre-fix).
|
||||
|
||||
---
|
||||
|
||||
# 0109 — allocas inside loop bodies accumulate stack per iteration → segfault on long loops
|
||||
|
||||
**Symptom.** Any `alloca` that lands inside a loop's body block executes anew
|
||||
on every iteration, and LLVM stack allocas are only reclaimed at function
|
||||
return — so the frame grows monotonically with the trip count. Observed: a
|
||||
1M-iteration loop with a body-local array segfaults (stack overflow, fault
|
||||
address at the guard page); so does a 3M-iteration nested loop with **no user
|
||||
locals at all** (the inner loop's hidden index slot is itself a body-block
|
||||
alloca of the outer loop). Expected: loop-local storage is reused across
|
||||
iterations; stack usage is static per frame regardless of trip count.
|
||||
|
||||
This hits three shapes, all confirmed:
|
||||
|
||||
1. user locals declared in a loop body (`buf : [128]s64 = ---;`),
|
||||
2. nested loops (inner `for`'s `idx_slot` alloca sits in the outer body),
|
||||
3. compiler temporaries spilled in the body (e.g. `index_get`'s `ig.tmp` —
|
||||
see issue 0110 for the for-over-array case specifically).
|
||||
|
||||
## Reproduction
|
||||
|
||||
Repro A — body local (`issues/0109-loop-body-alloca-stack-growth.sx`):
|
||||
|
||||
```sx
|
||||
#import "modules/std.sx";
|
||||
|
||||
main :: () -> s32 {
|
||||
sum := 0;
|
||||
for 0..1000000: (i) {
|
||||
buf : [128]s64 = ---;
|
||||
buf[0] = i;
|
||||
sum += buf[0];
|
||||
}
|
||||
print("sum={}\n", sum);
|
||||
0
|
||||
}
|
||||
```
|
||||
|
||||
- **Observed**: `Segmentation fault at address 0x16e70ffd0` (guard page).
|
||||
With `0..1000` instead it prints `sum=499500` and exits 0 — the program is
|
||||
correct, only the stack accumulation kills it.
|
||||
- **Expected**: prints `sum=499999500000`, exit 0, at any trip count.
|
||||
|
||||
Repro B — pure nested loops, zero user locals:
|
||||
|
||||
```sx
|
||||
#import "modules/std.sx";
|
||||
|
||||
main :: () -> s32 {
|
||||
n := 0;
|
||||
for 0..3000000: (i) {
|
||||
for 0..1: (j) { n += 1; }
|
||||
}
|
||||
print("n={}\n", n);
|
||||
0
|
||||
}
|
||||
```
|
||||
|
||||
- **Observed**: segfault. **Expected**: `n=3000000`, exit 0.
|
||||
|
||||
The emitted IR shows the cause directly (`sx ir`, body of repro A):
|
||||
|
||||
```llvm
|
||||
for.body.1:
|
||||
%alloca2 = alloca [128 x i64], align 8 ; fresh 1KB every iteration
|
||||
...
|
||||
%ig.tmp = alloca [128 x i64], align 8 ; plus a 1KB spill temp
|
||||
```
|
||||
|
||||
## Root cause (suspected area)
|
||||
|
||||
`Builder.alloca` (`src/ir/module.zig` ~474) emits the `.alloca` instruction
|
||||
into the current block, and the LLVM emitter (`src/backend/llvm/ops.zig`
|
||||
`emitAlloca` ~327) builds `LLVMBuildAlloca` at the current insertion point —
|
||||
so loop-body allocas are *executed* per iteration. LLVM only treats
|
||||
entry-block allocas as static frame slots (and mem2reg/SROA only promote
|
||||
those); a non-entry alloca re-executes and grows the stack each time, until
|
||||
`ret`.
|
||||
|
||||
The standard fix (what clang does): emit **all** static allocas into the
|
||||
function's entry block. Least-invasive locus is the emitter — in
|
||||
`emitAlloca`, save the current insertion point, position the builder at the
|
||||
entry block's first non-alloca instruction (or end of entry if empty), build
|
||||
the alloca there, restore the position, `mapRef` as before. The IR shape and
|
||||
the interpreter are untouched. All sx allocas are statically sized (TypeId),
|
||||
so every one is hoistable.
|
||||
|
||||
## Investigation prompt (paste into a fresh session)
|
||||
|
||||
> Fix issue 0109: loop-body allocas grow the stack per iteration and long
|
||||
> loops segfault. In `src/backend/llvm/ops.zig` `emitAlloca` (~327), hoist the
|
||||
> alloca to the current function's entry block: get the function via the
|
||||
> current insert block's parent, position the builder before the entry
|
||||
> block's first non-alloca instruction (`LLVMGetEntryBasicBlock` +
|
||||
> `LLVMGetFirstInstruction` walk past `LLVMAlloca` opcodes — same positioning
|
||||
> pattern as `injectCtorIntoMain` in `src/ir/emit_llvm.zig` ~466), build the
|
||||
> alloca + `mapRef`, then restore the previous insertion point
|
||||
> (`LLVMGetInsertBlock` before / `LLVMPositionBuilderAtEnd` after). Audit the
|
||||
> other in-place `LLVMBuildAlloca` temporaries in `src/ir/emit_llvm.zig`
|
||||
> (`ba.tmp`, `abi.tmp`, `ig.tmp`, etc. — grep `BuildAlloca`) and route the
|
||||
> ones reachable inside loops through the same hoist helper.
|
||||
>
|
||||
> Semantics note: per-iteration re-zeroing must not regress — initialization
|
||||
> stores (e.g. `store undef` / `= .{...}` inits) stay where the decl was, in
|
||||
> the body block; only the `alloca` itself moves to entry.
|
||||
>
|
||||
> Verify: both repros in `issues/0109-loop-body-alloca-stack-growth.md` (A is
|
||||
> `issues/0109-loop-body-alloca-stack-growth.sx`) now print
|
||||
> `sum=499999500000` / `n=3000000` and exit 0; `sx ir` on repro A shows no
|
||||
> `alloca` inside `for.body.*`. Then `zig build && zig build test && bash
|
||||
> tests/run_examples.sh` — any `.ir` snapshot churn from alloca placement must
|
||||
> be reviewed (`git diff examples/expected/`) before `--update`. Promote a
|
||||
> trip-count-bounded variant (e.g. 200k iterations, small buf) to
|
||||
> `examples/00xx-basic-loop-local-stack-reuse.sx` as the pinned regression.
|
||||
@@ -116,7 +116,7 @@ pub const AbiLowering = struct {
|
||||
}
|
||||
|
||||
pub fn materializeByvalArg(self: AbiLowering, val: c.LLVMValueRef, struct_ty: c.LLVMTypeRef) c.LLVMValueRef {
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, struct_ty, "byval.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(struct_ty, "byval.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, val, tmp);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@ pub const Ops = struct {
|
||||
// ── Memory ────────────────────────────────────────────
|
||||
pub fn emitAlloca(self: Ops, elem_ty: TypeId) void {
|
||||
const llvm_ty = self.e.toLLVMType(elem_ty);
|
||||
const result = c.LLVMBuildAlloca(self.e.builder, llvm_ty, "alloca");
|
||||
const result = self.e.buildEntryAlloca(llvm_ty, "alloca");
|
||||
self.e.mapRef(result);
|
||||
}
|
||||
|
||||
@@ -503,7 +503,7 @@ pub const Ops = struct {
|
||||
|
||||
var sret_slot: c.LLVMValueRef = null;
|
||||
if (uses_sret) {
|
||||
sret_slot = c.LLVMBuildAlloca(self.e.builder, raw_ret_ty, "objc.sret");
|
||||
sret_slot = self.e.buildEntryAlloca(raw_ret_ty, "objc.sret");
|
||||
param_types[0] = self.e.cached_ptr;
|
||||
call_args[0] = sret_slot;
|
||||
}
|
||||
@@ -710,7 +710,7 @@ pub const Ops = struct {
|
||||
// outer phi shape. Instead, return both via tuple
|
||||
// through an auxiliary local — simplest is to attach
|
||||
// `cls` to a per-invocation slot. Use a stack alloca.
|
||||
const cls_slot = c.LLVMBuildAlloca(self.e.builder, self.e.cached_ptr, "jni.parent.cls.slot");
|
||||
const cls_slot = self.e.buildEntryAlloca(self.e.cached_ptr, "jni.parent.cls.slot");
|
||||
_ = c.LLVMBuildStore(self.e.builder, cls, cls_slot);
|
||||
// Tag the slot pointer onto the phi result via the
|
||||
// generated metadata: we'll re-extract by re-running
|
||||
@@ -814,7 +814,7 @@ pub const Ops = struct {
|
||||
defer self.e.alloc.free(args);
|
||||
var sret_slot: c.LLVMValueRef = null;
|
||||
if (callee_uses_sret) {
|
||||
sret_slot = c.LLVMBuildAlloca(self.e.builder, callee_raw_ret, "sret.slot");
|
||||
sret_slot = self.e.buildEntryAlloca(callee_raw_ret, "sret.slot");
|
||||
args[0] = sret_slot;
|
||||
}
|
||||
for (call_op.args, 0..) |arg_ref, j| {
|
||||
@@ -1345,7 +1345,7 @@ pub const Ops = struct {
|
||||
const payload_val = self.e.resolveRef(ei.payload);
|
||||
|
||||
// alloca union, store tag, bitcast payload area, store payload
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, union_ty, "ei.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(union_ty, "ei.tmp");
|
||||
// Store tag at field 0
|
||||
const tag_ptr = c.LLVMBuildStructGEP2(self.e.builder, union_ty, tmp, 0, "ei.tagp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, tag_val, tag_ptr);
|
||||
@@ -1389,7 +1389,7 @@ pub const Ops = struct {
|
||||
const base_kind = c.LLVMGetTypeKind(base_ty);
|
||||
if (base_kind == c.LLVMStructTypeKind) {
|
||||
// Tagged union: alloca, store, GEP field 1 (payload area), bitcast, load
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, base_ty, "ep.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(base_ty, "ep.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, base, tmp);
|
||||
const payload_ptr = c.LLVMBuildStructGEP2(self.e.builder, base_ty, tmp, 1, "ep.pp");
|
||||
const typed_ptr = c.LLVMBuildBitCast(self.e.builder, payload_ptr, self.e.cached_ptr, "ep.cast");
|
||||
@@ -1408,13 +1408,13 @@ pub const Ops = struct {
|
||||
const kind = c.LLVMGetTypeKind(base_ty);
|
||||
if (kind == c.LLVMStructTypeKind) {
|
||||
// Tagged union { header, payload_bytes } — access payload at field 1
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, base_ty, "ug.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(base_ty, "ug.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, base, tmp);
|
||||
const payload_ptr = c.LLVMBuildStructGEP2(self.e.builder, base_ty, tmp, 1, "ug.pp");
|
||||
self.e.mapRef(c.LLVMBuildLoad2(self.e.builder, result_ty, payload_ptr, "ug.val"));
|
||||
} else {
|
||||
// Untagged union [N x i8] — alloca, store, reinterpret-load
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, base_ty, "ug.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(base_ty, "ug.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, base, tmp);
|
||||
self.e.mapRef(c.LLVMBuildLoad2(self.e.builder, result_ty, tmp, "ug.val"));
|
||||
}
|
||||
@@ -1455,7 +1455,7 @@ pub const Ops = struct {
|
||||
self.e.mapRef(c.LLVMBuildExtractElement(self.e.builder, base, idx32, "ve"));
|
||||
} else if (kind == c.LLVMArrayTypeKind) {
|
||||
// Fixed-size array value — alloca, store, GEP, load
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, base_ty, "ig.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(base_ty, "ig.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, base, tmp);
|
||||
const elem_ty = self.e.toLLVMType(instruction.ty);
|
||||
var indices = [_]c.LLVMValueRef{ c.LLVMConstInt(self.e.cached_i64, 0, 0), idx };
|
||||
@@ -1487,7 +1487,7 @@ pub const Ops = struct {
|
||||
const kind = c.LLVMGetTypeKind(base_ty);
|
||||
if (kind == c.LLVMArrayTypeKind) {
|
||||
// Fixed-size array value — alloca, store, GEP
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, base_ty, "igp.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(base_ty, "igp.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, base, tmp);
|
||||
var indices = [_]c.LLVMValueRef{ c.LLVMConstInt(self.e.cached_i64, 0, 0), idx };
|
||||
self.e.mapRef(c.LLVMBuildGEP2(self.e.builder, base_ty, tmp, &indices, 2, "igp.ptr"));
|
||||
@@ -1587,7 +1587,7 @@ pub const Ops = struct {
|
||||
self.e.mapRef(result);
|
||||
} else if (base_kind == c.LLVMArrayTypeKind) {
|
||||
// Array: alloca, GEP to element at lo, compute len
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, base_ty, "ss.arr");
|
||||
const tmp = self.e.buildEntryAlloca(base_ty, "ss.arr");
|
||||
_ = c.LLVMBuildStore(self.e.builder, base, tmp);
|
||||
var indices = [_]c.LLVMValueRef{ c.LLVMConstInt(self.e.cached_i64, 0, 0), lo };
|
||||
const new_ptr = c.LLVMBuildGEP2(self.e.builder, base_ty, tmp, &indices, 2, "ss.ptr");
|
||||
@@ -1611,7 +1611,7 @@ pub const Ops = struct {
|
||||
const arr_kind = c.LLVMGetTypeKind(arr_ty);
|
||||
if (arr_kind == c.LLVMArrayTypeKind) {
|
||||
const len = c.LLVMGetArrayLength2(arr_ty);
|
||||
const tmp = c.LLVMBuildAlloca(self.e.builder, arr_ty, "a2s.tmp");
|
||||
const tmp = self.e.buildEntryAlloca(arr_ty, "a2s.tmp");
|
||||
_ = c.LLVMBuildStore(self.e.builder, arr, tmp);
|
||||
var indices = [_]c.LLVMValueRef{ c.LLVMConstInt(self.e.cached_i64, 0, 0), c.LLVMConstInt(self.e.cached_i64, 0, 0) };
|
||||
const elem_ptr = c.LLVMBuildGEP2(self.e.builder, arr_ty, tmp, &indices, 2, "a2s.ptr");
|
||||
|
||||
@@ -1386,6 +1386,33 @@ pub const LLVMEmitter = struct {
|
||||
self.debugInfo().endFunctionDebug();
|
||||
}
|
||||
|
||||
/// Build an alloca in the current function's ENTRY block, not at the
|
||||
/// builder's position. An alloca executed inside a loop body allocates
|
||||
/// fresh stack on every iteration (LLVM only reclaims at `ret`), so any
|
||||
/// alloca reachable per-instruction must be hoisted here; only entry-block
|
||||
/// allocas are static frame slots (and mem2reg-promotable). Insertion goes
|
||||
/// after existing entry allocas; the builder position is restored.
|
||||
pub fn buildEntryAlloca(self: *LLVMEmitter, ty: c.LLVMTypeRef, name: [*:0]const u8) c.LLVMValueRef {
|
||||
const cur_bb = c.LLVMGetInsertBlock(self.builder);
|
||||
const func = c.LLVMGetBasicBlockParent(cur_bb);
|
||||
const entry_bb = c.LLVMGetEntryBasicBlock(func);
|
||||
if (entry_bb == cur_bb) {
|
||||
return c.LLVMBuildAlloca(self.builder, ty, name);
|
||||
}
|
||||
var insert_before = c.LLVMGetFirstInstruction(entry_bb);
|
||||
while (insert_before != null) : (insert_before = c.LLVMGetNextInstruction(insert_before)) {
|
||||
if (c.LLVMGetInstructionOpcode(insert_before) != c.LLVMAlloca) break;
|
||||
}
|
||||
if (insert_before != null) {
|
||||
c.LLVMPositionBuilderBefore(self.builder, insert_before);
|
||||
} else {
|
||||
c.LLVMPositionBuilderAtEnd(self.builder, entry_bb);
|
||||
}
|
||||
const result = c.LLVMBuildAlloca(self.builder, ty, name);
|
||||
c.LLVMPositionBuilderAtEnd(self.builder, cur_bb);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// After emitting all blocks, fill in PHI incoming values from branch args.
|
||||
fn fixupPhiNodes(self: *LLVMEmitter, func: *const Function, func_idx: u32) void {
|
||||
if (self.pending_phis.items.len == 0) return;
|
||||
@@ -2101,7 +2128,7 @@ pub const LLVMEmitter = struct {
|
||||
}
|
||||
// Struct/Array/Vector types: store to alloca, ptrtoint for the pointer
|
||||
if (kind == c.LLVMStructTypeKind or kind == c.LLVMArrayTypeKind or kind == c.LLVMVectorTypeKind or kind == c.LLVMScalableVectorTypeKind) {
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, ty, "ba.tmp");
|
||||
const tmp = self.buildEntryAlloca(ty, "ba.tmp");
|
||||
_ = c.LLVMBuildStore(self.builder, val, tmp);
|
||||
return c.LLVMBuildPtrToInt(self.builder, tmp, self.cached_i64, "ba.p2i");
|
||||
}
|
||||
@@ -2279,14 +2306,14 @@ pub const LLVMEmitter = struct {
|
||||
}
|
||||
// Struct → Integer (C ABI coercion: store struct to memory, load as integer)
|
||||
if (val_kind == c.LLVMStructTypeKind and param_kind == c.LLVMIntegerTypeKind) {
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, param_ty, "abi.tmp");
|
||||
const tmp = self.buildEntryAlloca(param_ty, "abi.tmp");
|
||||
_ = c.LLVMBuildStore(self.builder, c.LLVMConstNull(param_ty), tmp);
|
||||
_ = c.LLVMBuildStore(self.builder, val, tmp);
|
||||
return c.LLVMBuildLoad2(self.builder, param_ty, tmp, "abi.coerce");
|
||||
}
|
||||
// Integer → Struct (C ABI return coercion: store integer to memory, load as struct)
|
||||
if (val_kind == c.LLVMIntegerTypeKind and param_kind == c.LLVMStructTypeKind) {
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, val_ty, "abi.ret.tmp");
|
||||
const tmp = self.buildEntryAlloca(val_ty, "abi.ret.tmp");
|
||||
_ = c.LLVMBuildStore(self.builder, val, tmp);
|
||||
return c.LLVMBuildLoad2(self.builder, param_ty, tmp, "abi.ret.coerce");
|
||||
}
|
||||
@@ -2295,19 +2322,19 @@ pub const LLVMEmitter = struct {
|
||||
// memory-bitcast pattern as the integer case; the array type carries
|
||||
// 16 bytes of storage so we alloca with param_ty to guarantee size.
|
||||
if (val_kind == c.LLVMStructTypeKind and param_kind == c.LLVMArrayTypeKind) {
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, param_ty, "abi.struct2arr");
|
||||
const tmp = self.buildEntryAlloca(param_ty, "abi.struct2arr");
|
||||
_ = c.LLVMBuildStore(self.builder, val, tmp);
|
||||
return c.LLVMBuildLoad2(self.builder, param_ty, tmp, "abi.coerce.arr");
|
||||
}
|
||||
// Array → Struct (return-side counterpart for 9..16-byte structs)
|
||||
if (val_kind == c.LLVMArrayTypeKind and param_kind == c.LLVMStructTypeKind) {
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, val_ty, "abi.arr2struct");
|
||||
const tmp = self.buildEntryAlloca(val_ty, "abi.arr2struct");
|
||||
_ = c.LLVMBuildStore(self.builder, val, tmp);
|
||||
return c.LLVMBuildLoad2(self.builder, param_ty, tmp, "abi.ret.coerce.arr");
|
||||
}
|
||||
// Array → Ptr (array decay: alloca + GEP to first element)
|
||||
if (val_kind == c.LLVMArrayTypeKind and param_kind == c.LLVMPointerTypeKind) {
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, val_ty, "ca.arr");
|
||||
const tmp = self.buildEntryAlloca(val_ty, "ca.arr");
|
||||
_ = c.LLVMBuildStore(self.builder, val, tmp);
|
||||
const zero = c.LLVMConstInt(self.cached_i64, 0, 0);
|
||||
var indices = [_]c.LLVMValueRef{ zero, zero };
|
||||
@@ -2720,7 +2747,7 @@ pub const LLVMEmitter = struct {
|
||||
field_val = c.LLVMConstInt(self.cached_i64, 0, 0);
|
||||
} else {
|
||||
const base_ty = c.LLVMTypeOf(base_val);
|
||||
const tmp = c.LLVMBuildAlloca(self.builder, base_ty, "fv.utmp");
|
||||
const tmp = self.buildEntryAlloca(base_ty, "fv.utmp");
|
||||
_ = c.LLVMBuildStore(self.builder, base_val, tmp);
|
||||
const payload_ptr = c.LLVMBuildStructGEP2(self.builder, base_ty, tmp, 1, "fv.pp");
|
||||
const field_llvm_ty = self.toLLVMType(field.ty);
|
||||
|
||||
Reference in New Issue
Block a user