fix(std): render integer formatter extremes — i64::MIN and unsigned all-ones [F0.8]
Resolves issue 0090. The `{}` integer formatter mis-rendered both ends of
the 64-bit range:
- `int_to_string` computed the magnitude as `0 - n`, which overflows for
`s64::MIN` (its magnitude is unrepresentable as a positive s64) — the
value stayed negative, the digit loop ran zero times, so only `-`
printed. It now extracts digits straight from `n` (per-digit
`|n % 10|`, `n` truncating toward zero), never negating MIN.
- `any_to_string`'s `case int:` formatted every integer as s64, so a u64
all-ones value printed as `-1`. There was no `uint` type-category to
distinguish signedness. Added an additive `type_is_unsigned(T)`
reflection builtin (static fold + dynamic interp/LLVM paths, mirroring
`type_name`), backed by the new `TypeTable.isUnsignedInt` predicate, and
a `uint_to_string` formatter (unsigned decimal via long-division over
four 16-bit limbs). `case int:` routes through `type_is_unsigned(type)`.
The 16-bit-limb split is factored into a shared `decompose_u16x4`, now
reused by `int_to_hex_string` (no second unsigned-math routine).
Regression: examples/0046-basic-int-formatter-extremes pins both extremes
plus a width spread; unit tests cover `isUnsignedInt`. Docs (specs.md
representation note, readme std API) updated for unsigned/extreme `{}`
behavior. IR snapshots refreshed for the two new std functions.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1
examples/expected/0046-basic-int-formatter-extremes.exit
Normal file
1
examples/expected/0046-basic-int-formatter-extremes.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
10
examples/expected/0046-basic-int-formatter-extremes.stdout
Normal file
10
examples/expected/0046-basic-int-formatter-extremes.stdout
Normal file
@@ -0,0 +1,10 @@
|
||||
s64.min=-9223372036854775808
|
||||
s64.max=9223372036854775807
|
||||
u64.max=18446744073709551615
|
||||
s8.min=-128 s8.max=127
|
||||
s16.min=-32768 s16.max=32767
|
||||
s32.min=-2147483648 s32.max=2147483647
|
||||
u8.max=255 u16.max=65535
|
||||
u32.max=4294967295
|
||||
u8.min=0 u64.min=0 zero=0
|
||||
neg=-42 pos=4000000000
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -96,6 +96,9 @@ declare ptr @cstring(ptr, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -105,6 +108,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
|
||||
@@ -173,38 +173,43 @@ if.merge.15: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.16, label %if.else.17
|
||||
|
||||
if.then.16: ; preds = %if.merge.15
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.18
|
||||
|
||||
if.else.17: ; preds = %if.merge.15
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.18
|
||||
|
||||
if.merge.18: ; preds = %if.else.17, %if.then.16
|
||||
%bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.19
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
while.hdr.19: ; preds = %while.body.20, %if.merge.18
|
||||
while.hdr.16: ; preds = %if.merge.20, %if.merge.15
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.20, label %while.exit.21
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.17, label %while.exit.18
|
||||
|
||||
while.body.20: ; preds = %while.hdr.19
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.19, label %if.merge.20
|
||||
|
||||
while.exit.18: ; preds = %while.hdr.16
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.21, label %if.merge.22
|
||||
|
||||
if.then.19: ; preds = %while.body.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.then.19, %while.body.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -217,34 +222,32 @@ while.body.20: ; preds = %while.hdr.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.19
|
||||
br label %while.hdr.16
|
||||
|
||||
while.exit.21: ; preds = %while.hdr.19
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.22, label %if.merge.23
|
||||
|
||||
if.then.22: ; preds = %while.exit.21
|
||||
if.then.21: ; preds = %while.exit.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.23
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.23: ; preds = %if.then.22, %while.exit.21
|
||||
if.merge.22: ; preds = %if.then.21, %while.exit.18
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -254,6 +257,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -367,7 +373,7 @@ while.exit.2: ; preds = %while.hdr.0
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.36, label %if.merge.37
|
||||
br i1 %icmpN, label %if.then.35, label %if.merge.36
|
||||
|
||||
if.then.3: ; preds = %while.body.1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -385,9 +391,9 @@ if.else.4: ; preds = %while.body.1
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.27, label %if.else.28
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
|
||||
if.merge.5: ; preds = %if.merge.29, %if.merge.8
|
||||
if.merge.5: ; preds = %if.merge.28, %if.merge.8
|
||||
br label %while.hdr.0
|
||||
|
||||
if.then.6: ; preds = %if.then.3
|
||||
@@ -425,9 +431,9 @@ if.else.10: ; preds = %if.then.6
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.24, label %if.else.25
|
||||
br i1 %icmpN, label %if.then.23, label %if.else.24
|
||||
|
||||
if.merge.11: ; preds = %if.merge.26, %if.merge.13
|
||||
if.merge.11: ; preds = %if.merge.25, %if.merge.13
|
||||
br label %if.merge.8
|
||||
|
||||
if.then.12: ; preds = %if.then.9
|
||||
@@ -476,7 +482,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.11
|
||||
|
||||
if.then.24: ; preds = %if.else.10
|
||||
if.then.23: ; preds = %if.else.10
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -504,35 +510,35 @@ if.then.24: ; preds = %if.else.10
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.26
|
||||
br label %if.merge.25
|
||||
|
||||
if.else.25: ; preds = %if.else.10
|
||||
if.else.24: ; preds = %if.else.10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.26
|
||||
br label %if.merge.25
|
||||
|
||||
if.merge.26: ; preds = %if.else.25, %if.then.24
|
||||
if.merge.25: ; preds = %if.else.24, %if.then.23
|
||||
br label %if.merge.11
|
||||
|
||||
if.then.27: ; preds = %if.else.4
|
||||
if.then.26: ; preds = %if.else.4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.30, label %if.else.31
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
|
||||
if.else.28: ; preds = %if.else.4
|
||||
if.else.27: ; preds = %if.else.4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.29
|
||||
br label %if.merge.28
|
||||
|
||||
if.merge.29: ; preds = %if.merge.32, %if.else.28
|
||||
if.merge.28: ; preds = %if.merge.31, %if.else.27
|
||||
br label %if.merge.5
|
||||
|
||||
if.then.30: ; preds = %if.then.27
|
||||
if.then.29: ; preds = %if.then.26
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -541,18 +547,18 @@ if.then.30: ; preds = %if.then.27
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.33, label %if.else.34
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
|
||||
if.else.31: ; preds = %if.then.27
|
||||
if.else.30: ; preds = %if.then.26
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.32
|
||||
br label %if.merge.31
|
||||
|
||||
if.merge.32: ; preds = %if.merge.35, %if.else.31
|
||||
br label %if.merge.29
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
br label %if.merge.28
|
||||
|
||||
if.then.33: ; preds = %if.then.30
|
||||
if.then.32: ; preds = %if.then.29
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -580,18 +586,18 @@ if.then.33: ; preds = %if.then.30
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.35
|
||||
br label %if.merge.34
|
||||
|
||||
if.else.34: ; preds = %if.then.30
|
||||
if.else.33: ; preds = %if.then.29
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.35
|
||||
br label %if.merge.34
|
||||
|
||||
if.merge.35: ; preds = %if.else.34, %if.then.33
|
||||
br label %if.merge.32
|
||||
if.merge.34: ; preds = %if.else.33, %if.then.32
|
||||
br label %if.merge.31
|
||||
|
||||
if.then.36: ; preds = %while.exit.2
|
||||
if.then.35: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -614,9 +620,9 @@ if.then.36: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.then.36, %while.exit.2
|
||||
if.merge.36: ; preds = %if.then.35, %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -189,38 +189,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -233,34 +238,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -270,6 +273,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -383,7 +389,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -401,9 +407,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -441,9 +447,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -492,7 +498,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -520,35 +526,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -557,18 +563,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -596,18 +602,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -630,9 +636,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
@@ -846,13 +852,13 @@ if.merge.1: ; preds = %entry
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%icmpN = icmp eq ptr %loadN, null
|
||||
br i1 %icmpN, label %if.then.40, label %if.merge.41
|
||||
br i1 %icmpN, label %if.then.39, label %if.merge.40
|
||||
|
||||
if.then.40: ; preds = %if.merge.1
|
||||
if.then.39: ; preds = %if.merge.1
|
||||
call void @print__ct_sfe783e2b27a4beff__pack(ptr @__sx_default_context)
|
||||
ret i32 1
|
||||
|
||||
if.merge.41: ; preds = %if.merge.1
|
||||
if.merge.40: ; preds = %if.merge.1
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.18)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
@@ -866,13 +872,13 @@ if.merge.41: ; preds = %if.merge.1
|
||||
store ptr %icall, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%icmpN = icmp eq ptr %loadN, null
|
||||
br i1 %icmpN, label %if.then.42, label %if.merge.43
|
||||
br i1 %icmpN, label %if.then.41, label %if.merge.42
|
||||
|
||||
if.then.42: ; preds = %if.merge.41
|
||||
if.then.41: ; preds = %if.merge.40
|
||||
call void @print__ct_scaebdbbd10c81716__pack(ptr @__sx_default_context)
|
||||
ret i32 1
|
||||
|
||||
if.merge.43: ; preds = %if.merge.41
|
||||
if.merge.42: ; preds = %if.merge.40
|
||||
%allocaN = alloca ptr, align 8
|
||||
%callN = call ptr @sel_registerName(ptr @str.19)
|
||||
store ptr %callN, ptr %allocaN, align 8
|
||||
@@ -890,13 +896,13 @@ if.merge.43: ; preds = %if.merge.41
|
||||
store ptr %icallN, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%icmpN = icmp eq ptr %loadN, null
|
||||
br i1 %icmpN, label %if.then.44, label %if.merge.45
|
||||
br i1 %icmpN, label %if.then.43, label %if.merge.44
|
||||
|
||||
if.then.44: ; preds = %if.merge.43
|
||||
if.then.43: ; preds = %if.merge.42
|
||||
call void @print__ct_s7c1052877b8cc801__pack(ptr @__sx_default_context)
|
||||
ret i32 1
|
||||
|
||||
if.merge.45: ; preds = %if.merge.43
|
||||
if.merge.44: ; preds = %if.merge.42
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
%loadN = load ptr, ptr %allocaN, align 8
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -165,38 +165,43 @@ if.merge.15: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.16, label %if.else.17
|
||||
|
||||
if.then.16: ; preds = %if.merge.15
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.18
|
||||
|
||||
if.else.17: ; preds = %if.merge.15
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.18
|
||||
|
||||
if.merge.18: ; preds = %if.else.17, %if.then.16
|
||||
%bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.19
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
while.hdr.19: ; preds = %while.body.20, %if.merge.18
|
||||
while.hdr.16: ; preds = %if.merge.20, %if.merge.15
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.20, label %while.exit.21
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.17, label %while.exit.18
|
||||
|
||||
while.body.20: ; preds = %while.hdr.19
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.19, label %if.merge.20
|
||||
|
||||
while.exit.18: ; preds = %while.hdr.16
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.21, label %if.merge.22
|
||||
|
||||
if.then.19: ; preds = %while.body.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.then.19, %while.body.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -209,34 +214,32 @@ while.body.20: ; preds = %while.hdr.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.19
|
||||
br label %while.hdr.16
|
||||
|
||||
while.exit.21: ; preds = %while.hdr.19
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.22, label %if.merge.23
|
||||
|
||||
if.then.22: ; preds = %while.exit.21
|
||||
if.then.21: ; preds = %while.exit.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.23
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.23: ; preds = %if.then.22, %while.exit.21
|
||||
if.merge.22: ; preds = %if.then.21, %while.exit.18
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -246,6 +249,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -359,7 +365,7 @@ while.exit.2: ; preds = %while.hdr.0
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.36, label %if.merge.37
|
||||
br i1 %icmpN, label %if.then.35, label %if.merge.36
|
||||
|
||||
if.then.3: ; preds = %while.body.1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -377,9 +383,9 @@ if.else.4: ; preds = %while.body.1
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.27, label %if.else.28
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
|
||||
if.merge.5: ; preds = %if.merge.29, %if.merge.8
|
||||
if.merge.5: ; preds = %if.merge.28, %if.merge.8
|
||||
br label %while.hdr.0
|
||||
|
||||
if.then.6: ; preds = %if.then.3
|
||||
@@ -417,9 +423,9 @@ if.else.10: ; preds = %if.then.6
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.24, label %if.else.25
|
||||
br i1 %icmpN, label %if.then.23, label %if.else.24
|
||||
|
||||
if.merge.11: ; preds = %if.merge.26, %if.merge.13
|
||||
if.merge.11: ; preds = %if.merge.25, %if.merge.13
|
||||
br label %if.merge.8
|
||||
|
||||
if.then.12: ; preds = %if.then.9
|
||||
@@ -468,7 +474,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.11
|
||||
|
||||
if.then.24: ; preds = %if.else.10
|
||||
if.then.23: ; preds = %if.else.10
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -496,35 +502,35 @@ if.then.24: ; preds = %if.else.10
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.26
|
||||
br label %if.merge.25
|
||||
|
||||
if.else.25: ; preds = %if.else.10
|
||||
if.else.24: ; preds = %if.else.10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.26
|
||||
br label %if.merge.25
|
||||
|
||||
if.merge.26: ; preds = %if.else.25, %if.then.24
|
||||
if.merge.25: ; preds = %if.else.24, %if.then.23
|
||||
br label %if.merge.11
|
||||
|
||||
if.then.27: ; preds = %if.else.4
|
||||
if.then.26: ; preds = %if.else.4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.30, label %if.else.31
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
|
||||
if.else.28: ; preds = %if.else.4
|
||||
if.else.27: ; preds = %if.else.4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.29
|
||||
br label %if.merge.28
|
||||
|
||||
if.merge.29: ; preds = %if.merge.32, %if.else.28
|
||||
if.merge.28: ; preds = %if.merge.31, %if.else.27
|
||||
br label %if.merge.5
|
||||
|
||||
if.then.30: ; preds = %if.then.27
|
||||
if.then.29: ; preds = %if.then.26
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -533,18 +539,18 @@ if.then.30: ; preds = %if.then.27
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.33, label %if.else.34
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
|
||||
if.else.31: ; preds = %if.then.27
|
||||
if.else.30: ; preds = %if.then.26
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.32
|
||||
br label %if.merge.31
|
||||
|
||||
if.merge.32: ; preds = %if.merge.35, %if.else.31
|
||||
br label %if.merge.29
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
br label %if.merge.28
|
||||
|
||||
if.then.33: ; preds = %if.then.30
|
||||
if.then.32: ; preds = %if.then.29
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -572,18 +578,18 @@ if.then.33: ; preds = %if.then.30
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.35
|
||||
br label %if.merge.34
|
||||
|
||||
if.else.34: ; preds = %if.then.30
|
||||
if.else.33: ; preds = %if.then.29
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.35
|
||||
br label %if.merge.34
|
||||
|
||||
if.merge.35: ; preds = %if.else.34, %if.then.33
|
||||
br label %if.merge.32
|
||||
if.merge.34: ; preds = %if.else.33, %if.then.32
|
||||
br label %if.merge.31
|
||||
|
||||
if.then.36: ; preds = %while.exit.2
|
||||
if.then.35: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -606,9 +612,9 @@ if.then.36: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.then.36, %while.exit.2
|
||||
if.merge.36: ; preds = %if.then.35, %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -191,38 +191,43 @@ if.merge.15: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.16, label %if.else.17
|
||||
|
||||
if.then.16: ; preds = %if.merge.15
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.18
|
||||
|
||||
if.else.17: ; preds = %if.merge.15
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.18
|
||||
|
||||
if.merge.18: ; preds = %if.else.17, %if.then.16
|
||||
%bp = phi i64 [ %sub, %if.then.16 ], [ %loadN, %if.else.17 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.19
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.16
|
||||
|
||||
while.hdr.19: ; preds = %while.body.20, %if.merge.18
|
||||
while.hdr.16: ; preds = %if.merge.20, %if.merge.15
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.20, label %while.exit.21
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.17, label %while.exit.18
|
||||
|
||||
while.body.20: ; preds = %while.hdr.19
|
||||
while.body.17: ; preds = %while.hdr.16
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.19, label %if.merge.20
|
||||
|
||||
while.exit.18: ; preds = %while.hdr.16
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.21, label %if.merge.22
|
||||
|
||||
if.then.19: ; preds = %while.body.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.then.19, %while.body.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -235,34 +240,32 @@ while.body.20: ; preds = %while.hdr.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.19
|
||||
br label %while.hdr.16
|
||||
|
||||
while.exit.21: ; preds = %while.hdr.19
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.22, label %if.merge.23
|
||||
|
||||
if.then.22: ; preds = %while.exit.21
|
||||
if.then.21: ; preds = %while.exit.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.23
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.23: ; preds = %if.then.22, %while.exit.21
|
||||
if.merge.22: ; preds = %if.then.21, %while.exit.18
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -272,6 +275,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -385,7 +391,7 @@ while.exit.2: ; preds = %while.hdr.0
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.36, label %if.merge.37
|
||||
br i1 %icmpN, label %if.then.35, label %if.merge.36
|
||||
|
||||
if.then.3: ; preds = %while.body.1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -403,9 +409,9 @@ if.else.4: ; preds = %while.body.1
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.27, label %if.else.28
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
|
||||
if.merge.5: ; preds = %if.merge.29, %if.merge.8
|
||||
if.merge.5: ; preds = %if.merge.28, %if.merge.8
|
||||
br label %while.hdr.0
|
||||
|
||||
if.then.6: ; preds = %if.then.3
|
||||
@@ -443,9 +449,9 @@ if.else.10: ; preds = %if.then.6
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.24, label %if.else.25
|
||||
br i1 %icmpN, label %if.then.23, label %if.else.24
|
||||
|
||||
if.merge.11: ; preds = %if.merge.26, %if.merge.13
|
||||
if.merge.11: ; preds = %if.merge.25, %if.merge.13
|
||||
br label %if.merge.8
|
||||
|
||||
if.then.12: ; preds = %if.then.9
|
||||
@@ -494,7 +500,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.11
|
||||
|
||||
if.then.24: ; preds = %if.else.10
|
||||
if.then.23: ; preds = %if.else.10
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -522,35 +528,35 @@ if.then.24: ; preds = %if.else.10
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.26
|
||||
br label %if.merge.25
|
||||
|
||||
if.else.25: ; preds = %if.else.10
|
||||
if.else.24: ; preds = %if.else.10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.26
|
||||
br label %if.merge.25
|
||||
|
||||
if.merge.26: ; preds = %if.else.25, %if.then.24
|
||||
if.merge.25: ; preds = %if.else.24, %if.then.23
|
||||
br label %if.merge.11
|
||||
|
||||
if.then.27: ; preds = %if.else.4
|
||||
if.then.26: ; preds = %if.else.4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.30, label %if.else.31
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
|
||||
if.else.28: ; preds = %if.else.4
|
||||
if.else.27: ; preds = %if.else.4
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.29
|
||||
br label %if.merge.28
|
||||
|
||||
if.merge.29: ; preds = %if.merge.32, %if.else.28
|
||||
if.merge.28: ; preds = %if.merge.31, %if.else.27
|
||||
br label %if.merge.5
|
||||
|
||||
if.then.30: ; preds = %if.then.27
|
||||
if.then.29: ; preds = %if.then.26
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -559,18 +565,18 @@ if.then.30: ; preds = %if.then.27
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.33, label %if.else.34
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
|
||||
if.else.31: ; preds = %if.then.27
|
||||
if.else.30: ; preds = %if.then.26
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.32
|
||||
br label %if.merge.31
|
||||
|
||||
if.merge.32: ; preds = %if.merge.35, %if.else.31
|
||||
br label %if.merge.29
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
br label %if.merge.28
|
||||
|
||||
if.then.33: ; preds = %if.then.30
|
||||
if.then.32: ; preds = %if.then.29
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -598,18 +604,18 @@ if.then.33: ; preds = %if.then.30
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.35
|
||||
br label %if.merge.34
|
||||
|
||||
if.else.34: ; preds = %if.then.30
|
||||
if.else.33: ; preds = %if.then.29
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.35
|
||||
br label %if.merge.34
|
||||
|
||||
if.merge.35: ; preds = %if.else.34, %if.then.33
|
||||
br label %if.merge.32
|
||||
if.merge.34: ; preds = %if.else.33, %if.then.32
|
||||
br label %if.merge.31
|
||||
|
||||
if.then.36: ; preds = %while.exit.2
|
||||
if.then.35: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -632,9 +638,9 @@ if.then.36: ; preds = %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.then.36, %while.exit.2
|
||||
if.merge.36: ; preds = %if.then.35, %while.exit.2
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -164,38 +164,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -208,34 +213,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -245,6 +248,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -358,7 +364,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -376,9 +382,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -416,9 +422,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -467,7 +473,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -495,35 +501,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -532,18 +538,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -571,18 +577,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -605,9 +611,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -162,38 +162,43 @@ if.merge.17: ; preds = %entry
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
%allocaN = alloca i1, align 1
|
||||
store i1 %icmpN, ptr %allocaN, align 1
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.18, label %if.else.19
|
||||
|
||||
if.then.18: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
br label %if.merge.20
|
||||
|
||||
if.else.19: ; preds = %if.merge.17
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
br label %if.merge.20
|
||||
|
||||
if.merge.20: ; preds = %if.else.19, %if.then.18
|
||||
%bp = phi i64 [ %sub, %if.then.18 ], [ %loadN, %if.else.19 ]
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %bp, ptr %allocaN, align 8
|
||||
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
store { ptr, i64 } %call, ptr %allocaN, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 19, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
%loadN = load i64, ptr %alloca, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %while.hdr.18
|
||||
|
||||
while.hdr.21: ; preds = %while.body.22, %if.merge.20
|
||||
while.hdr.18: ; preds = %if.merge.22, %if.merge.17
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp sgt i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.22, label %while.exit.23
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %while.body.19, label %while.exit.20
|
||||
|
||||
while.body.22: ; preds = %while.hdr.21
|
||||
while.body.19: ; preds = %while.hdr.18
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
%add = add i64 %srem, 48
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%icmpN = icmp slt i64 %loadN, 0
|
||||
br i1 %icmpN, label %if.then.21, label %if.merge.22
|
||||
|
||||
while.exit.20: ; preds = %while.hdr.18
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.23, label %if.merge.24
|
||||
|
||||
if.then.21: ; preds = %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sub = sub i64 0, %loadN
|
||||
store i64 %sub, ptr %allocaN, align 8
|
||||
br label %if.merge.22
|
||||
|
||||
if.merge.22: ; preds = %if.then.21, %while.body.19
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%add = add i64 %loadN, 48
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
@@ -206,34 +211,32 @@ while.body.22: ; preds = %while.hdr.21
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %while.hdr.21
|
||||
br label %while.hdr.18
|
||||
|
||||
while.exit.23: ; preds = %while.hdr.21
|
||||
%loadN = load i1, ptr %allocaN, align 1
|
||||
br i1 %loadN, label %if.then.24, label %if.merge.25
|
||||
|
||||
if.then.24: ; preds = %while.exit.23
|
||||
if.then.23: ; preds = %while.exit.20
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data21 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr22 = getelementptr i8, ptr %igp.data21, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr22, align 1
|
||||
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
||||
store i8 45, ptr %igp.ptr25, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
br label %if.merge.25
|
||||
br label %if.merge.24
|
||||
|
||||
if.merge.25: ; preds = %if.then.24, %while.exit.23
|
||||
if.merge.24: ; preds = %if.then.23, %while.exit.20
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 20, %loadN
|
||||
%subN = sub i64 %subN, 1
|
||||
%subN = sub i64 19, %loadN
|
||||
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
||||
ret { ptr, i64 } %callN
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -243,6 +246,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
@@ -356,7 +362,7 @@ while.exit.4: ; preds = %while.hdr.2
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %loadN, %lenN
|
||||
br i1 %icmpN, label %if.then.38, label %if.merge.39
|
||||
br i1 %icmpN, label %if.then.37, label %if.merge.38
|
||||
|
||||
if.then.5: ; preds = %while.body.3
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
@@ -374,9 +380,9 @@ if.else.6: ; preds = %while.body.3
|
||||
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
||||
%cmp.ext22 = zext i8 %ig.val21 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext22, 125
|
||||
br i1 %icmpN, label %if.then.29, label %if.else.30
|
||||
br i1 %icmpN, label %if.then.28, label %if.else.29
|
||||
|
||||
if.merge.7: ; preds = %if.merge.31, %if.merge.10
|
||||
if.merge.7: ; preds = %if.merge.30, %if.merge.10
|
||||
br label %while.hdr.2
|
||||
|
||||
if.then.8: ; preds = %if.then.5
|
||||
@@ -414,9 +420,9 @@ if.else.12: ; preds = %if.then.8
|
||||
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
||||
%cmp.ext43 = zext i8 %ig.val42 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext43, 123
|
||||
br i1 %icmpN, label %if.then.26, label %if.else.27
|
||||
br i1 %icmpN, label %if.then.25, label %if.else.26
|
||||
|
||||
if.merge.13: ; preds = %if.merge.28, %if.merge.15
|
||||
if.merge.13: ; preds = %if.merge.27, %if.merge.15
|
||||
br label %if.merge.10
|
||||
|
||||
if.then.14: ; preds = %if.then.11
|
||||
@@ -465,7 +471,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.26: ; preds = %if.else.12
|
||||
if.then.25: ; preds = %if.else.12
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.7, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -493,35 +499,35 @@ if.then.26: ; preds = %if.else.12
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.else.27: ; preds = %if.else.12
|
||||
if.else.26: ; preds = %if.else.12
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.28
|
||||
br label %if.merge.27
|
||||
|
||||
if.merge.28: ; preds = %if.else.27, %if.then.26
|
||||
if.merge.27: ; preds = %if.else.26, %if.then.25
|
||||
br label %if.merge.13
|
||||
|
||||
if.then.29: ; preds = %if.else.6
|
||||
if.then.28: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
||||
%icmpN = icmp slt i64 %addN, %lenN
|
||||
br i1 %icmpN, label %if.then.32, label %if.else.33
|
||||
br i1 %icmpN, label %if.then.31, label %if.else.32
|
||||
|
||||
if.else.30: ; preds = %if.else.6
|
||||
if.else.29: ; preds = %if.else.6
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.31
|
||||
br label %if.merge.30
|
||||
|
||||
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
||||
if.merge.30: ; preds = %if.merge.33, %if.else.29
|
||||
br label %if.merge.7
|
||||
|
||||
if.then.32: ; preds = %if.then.29
|
||||
if.then.31: ; preds = %if.then.28
|
||||
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
@@ -530,18 +536,18 @@ if.then.32: ; preds = %if.then.29
|
||||
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
||||
%cmp.ext107 = zext i8 %ig.val106 to i64
|
||||
%icmpN = icmp eq i64 %cmp.ext107, 125
|
||||
br i1 %icmpN, label %if.then.35, label %if.else.36
|
||||
br i1 %icmpN, label %if.then.34, label %if.else.35
|
||||
|
||||
if.else.33: ; preds = %if.then.29
|
||||
if.else.32: ; preds = %if.then.28
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.merge.34: ; preds = %if.merge.37, %if.else.33
|
||||
br label %if.merge.31
|
||||
if.merge.33: ; preds = %if.merge.36, %if.else.32
|
||||
br label %if.merge.30
|
||||
|
||||
if.then.35: ; preds = %if.then.32
|
||||
if.then.34: ; preds = %if.then.31
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.10, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -569,18 +575,18 @@ if.then.35: ; preds = %if.then.32
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store i64 %loadN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.else.36: ; preds = %if.then.32
|
||||
if.else.35: ; preds = %if.then.31
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%addN = add i64 %loadN, 1
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
br label %if.merge.37
|
||||
br label %if.merge.36
|
||||
|
||||
if.merge.37: ; preds = %if.else.36, %if.then.35
|
||||
br label %if.merge.34
|
||||
if.merge.36: ; preds = %if.else.35, %if.then.34
|
||||
br label %if.merge.33
|
||||
|
||||
if.then.38: ; preds = %while.exit.4
|
||||
if.then.37: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.13, i64 36 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
@@ -603,9 +609,9 @@ if.then.38: ; preds = %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.15, i64 4 })
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
br label %if.merge.39
|
||||
br label %if.merge.38
|
||||
|
||||
if.merge.39: ; preds = %if.then.38, %while.exit.4
|
||||
if.merge.38: ; preds = %if.then.37, %while.exit.4
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
ret { ptr, i64 } %loadN
|
||||
}
|
||||
|
||||
@@ -106,6 +106,9 @@ declare ptr @cstring(ptr, i64) #0
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @uint_to_string(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @bool_to_string(ptr, i1) #0
|
||||
|
||||
@@ -115,6 +118,9 @@ declare ptr @float_to_string(ptr, double) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @hex_group(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @int_to_hex_string(ptr, i64) #0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user