1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
define private i64 @s1(i64 %arg, i64** %globasp) #0 {
%astack = alloca i64*, i64 10000
%asp.000 = getelementptr i64*, i64** %astack
%bstack = alloca i64, i64 10000
%bsp.000 = getelementptr i64, i64* %bstack, i64 9999
%bsp.001 = call i64* @pushI(i64 %arg, i64* %bsp.000)
%bsp.100 = call i64* @pushI(i64 2, i64* %bsp.001)
%bsp.101 = call i64* @push_b(i64 1, i64* %bsp.100)
%bsp.102 = call i64* @ltI(i64* %bsp.101)
%t.0 = call i64 @peek_b(i64* %bsp.102)
%bsp.103 = call i64* @pop_b1(i64* %bsp.102)
%t.1 = trunc i64 %t.0 to i1
br i1 %t.1, label %l.0, label %else.1
l.0:
%bsp.200 = call i64* @pop_b1(i64* %bsp.103)
%bsp.201 = call i64* @pushI(i64 1, i64* %bsp.200)
%r = call i64 @peek_b(i64* %bsp.201)
%bsp.202 = call i64* @pop_b1(i64* %bsp.201)
ret i64 %r
else.1:
%bsp.300 = call i64* @pushI(i64 2, i64* %bsp.103)
%bsp.301 = call i64* @push_b(i64 1, i64* %bsp.300)
%bsp.302 = call i64* @subI(i64* %bsp.301)
%arg.0 = call i64 @peek_b(i64* %bsp.302)
%bsp.302.0 = call i64* @pop_b1(i64* %bsp.302)
%r.0 = call i64 @s1(i64 %arg.0, i64** %globasp)
%bsp.303 = call i64* @pushI(i64 %r.0, i64* %bsp.302.0)
%bsp.304 = call i64* @pushI(i64 1, i64* %bsp.303)
%bsp.305 = call i64* @push_b(i64 2, i64* %bsp.304)
%bsp.306 = call i64* @subI(i64* %bsp.305)
%arg.1 = call i64 @peek_b(i64* %bsp.306)
%bsp.306.0 = call i64* @pop_b1(i64* %bsp.306)
%r.1 = call i64 @s1(i64 %arg.1, i64** %globasp)
%bsp.307 = call i64* @pushI(i64 %r.1, i64* %bsp.306.0)
%bsp.308 = call i64* @addI(i64* %bsp.307)
%bsp.309 = call i64* @pushI(i64 1, i64* %bsp.308)
%bsp.310 = call i64* @push_b(i64 1, i64* %bsp.309)
%bsp.311 = call i64* @update_b(i64 1, i64 2, i64* %bsp.310)
%bsp.312 = call i64* @update_b(i64 0, i64 1, i64* %bsp.311)
%bsp.313 = call i64* @pop_b1(i64* %bsp.312)
%bsp.314 = call i64* @update_b(i64 1, i64 2, i64* %bsp.313)
%bsp.315 = call i64* @updatepop_b01(i64* %bsp.314)
%bsp.316 = call i64* @addI(i64* %bsp.315)
%relse = call i64 @peek_b(i64* %bsp.316)
%bsp.317 = call i64* @pop_b1(i64* %bsp.316)
ret i64 %relse
}
define private i64 @_s2(i64 %arg, i64** %globasp) {
%ret = tail call i64 @s1(i64 %arg, i64** %globasp)
ret i64 %ret
}
define i64 @main() {
%heap = bitcast [100000000 x i64]* @heap to i64*
%astack = bitcast [10000 x i64*]* @astack to i64**
%r = call i64 @_s2(i64 43, i64** %astack)
call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %r)
call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_c, i64 0, i64 0), i64 10)
ret i64 0
}
|