aboutsummaryrefslogtreecommitdiff
path: root/fib_eqI_b.ll
diff options
context:
space:
mode:
Diffstat (limited to 'fib_eqI_b.ll')
-rw-r--r--fib_eqI_b.ll76
1 files changed, 48 insertions, 28 deletions
diff --git a/fib_eqI_b.ll b/fib_eqI_b.ll
index ac9cbca..8b7f547 100644
--- a/fib_eqI_b.ll
+++ b/fib_eqI_b.ll
@@ -1,4 +1,5 @@
-define i64* @e_fib_eqI_b_nfib(i64* %n, i64** %globasp) prefix {i8*, i64} {i8* inttoptr (i64 0 to i8*), i64 1} {
+define {i64*,i64*} @e_fib_eqI_b_nfib(i64* %n, i64** %globasp, i64* %hp.0) align 8
+ prefix {i8*, i64} {i8* inttoptr (i64 0 to i8*), i64 1} {
%astack = alloca i64*, i64 10
%asp.000 = getelementptr i64*, i64** %astack
%bstack = alloca i64, i64 10
@@ -7,24 +8,29 @@ define i64* @e_fib_eqI_b_nfib(i64* %n, i64** %globasp) prefix {i8*, i64} {i8* in
%asp.001 = getelementptr i64*, i64** %asp.000, i64 1
store i64* %n, i64** %asp.001
- %t.0 = bitcast i64*(i64**)* @_cycle_in_spine to i64*
+ %t.0 = bitcast {i64*,i64*}(i64**,i64*)* @_cycle_in_spine to i64*
%asp.002 = call i64** @push_node(i64* %t.0, i64 1, i64** %asp.001)
%t.1 = call i64* @peek_a(i64** %asp.002)
%asp.003 = call i64** @pop_a1(i64** %asp.002)
%globasp.0 = call i64** @_push_local_astack(i64** %asp.003, i64** %asp.000, i64** %globasp)
- %t.2 = call i64 @ea1(i64* %t.1, i64** %globasp.0)
- %bsp.001 = call i64* @pushI(i64 %t.2, i64* %bsp.000)
+ %t.2 = call {i64,i64*} @ea1(i64* %t.1, i64** %globasp.0, i64* %hp.0)
+ %t.2.0 = extractvalue {i64,i64*} %t.2, 0
+ %hp.1 = extractvalue {i64,i64*} %t.2, 1
+ %bsp.001 = call i64* @pushI(i64 %t.2.0, i64* %bsp.000)
%asp.004 = call i64** @fillI_b(i64 0, i64 -0, i64* %bsp.001, i64** %asp.003)
%bsp.002 = call i64* @pop_b1(i64* %bsp.001)
%t.3 = call i64* @peek_a(i64** %asp.004)
%asp.005 = call i64** @pop_a1(i64** %asp.004)
- ret i64* %t.3
+
+ %ret.0 = insertvalue {i64*,i64*} undef, i64* %t.3, 0
+ %ret.1 = insertvalue {i64*,i64*} %ret.0, i64* %hp.1, 1
+ ret {i64*,i64*} %ret.1
}
-define private i64 @ea1(i64* %n, i64** %globasp) {
+define private {i64,i64*} @ea1(i64* %n, i64** %globasp, i64* %hp.0) {
%astack = alloca i64*, i64 10
%asp.000 = getelementptr i64*, i64** %astack, i64 0
%bstack = alloca i64, i64 10
@@ -33,22 +39,22 @@ define private i64 @ea1(i64* %n, i64** %globasp) {
%asp.001 = getelementptr i64*, i64** %asp.000, i64 1
store i64* %n, i64** %asp.001
- %asp.002 = call i64** @jsr_eval(i64 -0, i64** %asp.001, i64** %asp.000, i64** %globasp)
- %bsp.001 = call i64* @pushI_a(i64 -0, i64* %bsp.000, i64** %asp.002)
- %asp.003 = call i64** @pop_a1(i64** %asp.002)
+ %hp.1 = call i64* @jsr_eval(i64 -0, i64** %asp.001, i64** %asp.000, i64** %globasp, i64* %hp.0)
+ %bsp.001 = call i64* @pushI_a(i64 -0, i64* %bsp.000, i64** %asp.001)
+ %asp.002 = call i64** @pop_a1(i64** %asp.001)
%t.0 = call i64 @peek_b(i64* %bsp.001)
%bsp.002 = call i64* @pop_b1(i64* %bsp.001)
- %t.1 = tail call i64 @s1(i64 %t.0, i64** %globasp)
- ret i64 %t.1
-}
+ %t.1 = tail call {i64,i64*} @s1(i64 %t.0, i64** %globasp, i64* %hp.1)
+ %t.2 = extractvalue {i64,i64*} %t.1, 0
+ %hp.2 = extractvalue {i64,i64*} %t.1, 1
-define i64 @e_fib_eqI_b_sfib(i64 %arg, i64** %globasp) #0 {
- %r = tail call i64 @s1(i64 %arg, i64** %globasp)
- ret i64 %r
+ %ret.0 = insertvalue {i64,i64*} undef, i64 %t.2, 0
+ %ret.1 = insertvalue {i64,i64*} %ret.0, i64* %hp.2, 1
+ ret {i64,i64*} %ret.1
}
-define private i64 @s1(i64 %arg, i64** %globasp) #0 {
+define private {i64,i64*} @s1(i64 %arg, i64** %globasp, i64* %hp.0) #0 {
%astack = alloca i64*, i64 10000
%asp.000 = getelementptr i64*, i64** %astack
%bstack = alloca i64, i64 10000
@@ -76,7 +82,9 @@ case.1:
%r.1 = call i64 @peek_b(i64* %bsp.101)
%bsp.102 = call i64* @pop_b1(i64* %bsp.101)
- ret i64 %r.1
+ %ret.0 = insertvalue {i64,i64*} undef, i64 %r.1, 0
+ %ret.1 = insertvalue {i64,i64*} %ret.0, i64* %hp.0, 1
+ ret {i64,i64*} %ret.1
case.2:
%bsp.200 = call i64* @pop_b1(i64* %bsp.005)
@@ -85,7 +93,9 @@ case.2:
%r.2 = call i64 @peek_b(i64* %bsp.201)
%bsp.202 = call i64* @pop_b1(i64* %bsp.201)
- ret i64 %r.2
+ %ret.2 = insertvalue {i64,i64*} undef, i64 %r.2, 0
+ %ret.3 = insertvalue {i64,i64*} %ret.2, i64* %hp.0, 1
+ ret {i64,i64*} %ret.3
case.3:
%bsp.300 = call i64* @pushI(i64 1, i64* %bsp.005)
@@ -94,8 +104,10 @@ case.3:
%arg.0 = call i64 @peek_b(i64* %bsp.302)
%bsp.302.0 = call i64* @pop_b1(i64* %bsp.302)
- %ret.0 = call i64 @s1(i64 %arg.0, i64** %globasp)
- %bsp.303 = call i64* @pushI(i64 %ret.0, i64* %bsp.302.0)
+ %t.4 = call {i64,i64*} @s1(i64 %arg.0, i64** %globasp, i64* %hp.0)
+ %t.5 = extractvalue {i64,i64*} %t.4, 0
+ %hp.1 = extractvalue {i64,i64*} %t.4, 1
+ %bsp.303 = call i64* @pushI(i64 %t.5, i64* %bsp.302.0)
%bsp.304 = call i64* @pushI(i64 2, i64* %bsp.303)
%bsp.305 = call i64* @push_b(i64 2, i64* %bsp.304)
@@ -103,8 +115,10 @@ case.3:
%arg.1 = call i64 @peek_b(i64* %bsp.306)
%bsp.306.0 = call i64* @pop_b1(i64* %bsp.306)
- %ret.1 = call i64 @s1(i64 %arg.1, i64** %globasp)
- %bsp.307 = call i64* @pushI(i64 %ret.1, i64* %bsp.306.0)
+ %t.6 = call {i64,i64*} @s1(i64 %arg.1, i64** %globasp, i64* %hp.1)
+ %t.7 = extractvalue {i64,i64*} %t.6, 0
+ %hp.2 = extractvalue {i64,i64*} %t.6, 1
+ %bsp.307 = call i64* @pushI(i64 %t.7, i64* %bsp.306.0)
%bsp.308 = call i64* @update_b(i64 1, i64 2, i64* %bsp.307)
%bsp.309 = call i64* @updatepop_b01(i64* %bsp.308)
@@ -113,27 +127,33 @@ case.3:
%r.3 = call i64 @peek_b(i64* %bsp.310)
%bsp.311 = call i64* @pop_b1(i64* %bsp.310)
- ret i64 %r.3
+ %ret.4 = insertvalue {i64,i64*} undef, i64 %r.3, 0
+ %ret.5 = insertvalue {i64,i64*} %ret.4, i64* %hp.2, 1
+ ret {i64,i64*} %ret.5
}
define i64 @main() {
- %heap = bitcast [10000 x i64]* @heap to i64*
+ %hp.0 = bitcast [10000 x i64]* @heap to i64*
%astack = bitcast [10000 x i64*]* @astack to i64**
- %n.0 = getelementptr i64, i64* %heap
+ %n.0 = getelementptr i64, i64* %hp.0
%INT.0 = ptrtoint {i64, i64, i64*, i64, i8, i8, i8}* @INT to i64
%INT.1 = add i64 %INT.0, 2
store i64 %INT.1, i64* %n.0
%n.0.0 = getelementptr i64, i64* %n.0, i64 1
store i64 43, i64* %n.0.0
+ %hp.1 = getelementptr i64, i64* %hp.0, i64 2
- %n.1 = getelementptr i64, i64* %n.0, i64 2
- store i64 ptrtoint (i64*(i64*,i64**)* @e_fib_eqI_b_nfib to i64), i64* %n.1
+ %n.1 = getelementptr i64, i64* %hp.1
+ store i64 ptrtoint ({i64*,i64*}(i64*,i64**,i64*)* @e_fib_eqI_b_nfib to i64), i64* %n.1
%t.0 = ptrtoint i64* %n.0 to i64
%n.1.0 = getelementptr i64, i64* %n.1, i64 1
store i64 %t.0, i64* %n.1.0
+ %hp.2 = getelementptr i64, i64* %hp.0, i64 3
- %n.2 = call i64* @e_fib_eqI_b_nfib(i64* %n.1, i64** %astack)
+ %t.1 = call {i64*,i64*} @e_fib_eqI_b_nfib(i64* %n.1, i64** %astack, i64* %hp.2)
+ %n.2 = extractvalue {i64*,i64*} %t.1, 0
+ %hp.3 = extractvalue {i64*,i64*} %t.1, 1
%n.3 = getelementptr i64, i64* %n.2, i64 1
%r = load i64, i64* %n.3