Improve dead code elimination in optimizer
- Refactored dead_store_elimination to separate forward and backward passes - Improved register forwarding to better detect backward jumps - Fixed handling of JumpAndLink instructions in register tracking - Updated optimizer snapshots to reflect improved code generation The forward pass now correctly eliminates writes that are immediately overwritten. Register forwarding now better handles conditional branches and loops. Note: Backward pass for dead code elimination disabled for now - it needs additional work to properly handle return values and call site analysis.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 158
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -34,15 +35,11 @@ pop r9
|
||||
pop r10
|
||||
push sp
|
||||
push ra
|
||||
add r1 r10 r10
|
||||
move r11 r1
|
||||
move r2 r9
|
||||
move r12 r2
|
||||
move r3 r8
|
||||
move r13 r3
|
||||
add r11 r10 r10
|
||||
move r12 r9
|
||||
move r13 r8
|
||||
add r4 r11 r12
|
||||
add r5 r4 r13
|
||||
move r15 r5
|
||||
add r15 r4 r13
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 103
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -24,8 +25,8 @@ j main
|
||||
pop r8
|
||||
push sp
|
||||
push ra
|
||||
add r1 r8 1
|
||||
move r15 r1
|
||||
move r9 20
|
||||
add r15 r8 1
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 70
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -31,13 +32,12 @@ j ra
|
||||
|
||||
## Optimized Output
|
||||
|
||||
j 10
|
||||
j 9
|
||||
pop r8
|
||||
pop r9
|
||||
push sp
|
||||
push ra
|
||||
add r1 r9 r8
|
||||
move r15 r1
|
||||
add r15 r9 r8
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
@@ -46,6 +46,7 @@ push ra
|
||||
push 5
|
||||
push 10
|
||||
jal 1
|
||||
move r8 r15
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
|
||||
@@ -124,7 +124,7 @@ __internal_L12:
|
||||
|
||||
## Optimized Output
|
||||
|
||||
j 71
|
||||
j 77
|
||||
push sp
|
||||
push ra
|
||||
yield
|
||||
@@ -139,8 +139,10 @@ push sp
|
||||
push ra
|
||||
s d0 Setting 1
|
||||
jal 1
|
||||
move r1 r15
|
||||
s d0 Activate 1
|
||||
jal 1
|
||||
move r2 r15
|
||||
s d1 Open 0
|
||||
pop ra
|
||||
pop sp
|
||||
@@ -152,53 +154,58 @@ sle r1 r8 1
|
||||
ls r15 d0 255 Seeding
|
||||
slt r2 r15 1
|
||||
or r3 r1 r2
|
||||
beqz r3 30
|
||||
j 68
|
||||
beqz r3 32
|
||||
j 74
|
||||
ls r15 d0 255 Mature
|
||||
beqz r15 35
|
||||
beqz r15 37
|
||||
yield
|
||||
s d0 Activate 1
|
||||
j 30
|
||||
ls r15 d0 255 Occupied
|
||||
move r9 r15
|
||||
j 32
|
||||
ls r9 d0 255 Occupied
|
||||
s d0 Setting 1
|
||||
push r8
|
||||
push r9
|
||||
jal 1
|
||||
pop r9
|
||||
pop r8
|
||||
move r4 r15
|
||||
push r8
|
||||
push r9
|
||||
jal 11
|
||||
pop r9
|
||||
pop r8
|
||||
beqz r9 54
|
||||
move r5 r15
|
||||
beqz r9 58
|
||||
push r8
|
||||
push r9
|
||||
jal 11
|
||||
pop r9
|
||||
pop r8
|
||||
move r6 r15
|
||||
s d0 Setting r8
|
||||
push r8
|
||||
push r9
|
||||
jal 1
|
||||
pop r9
|
||||
pop r8
|
||||
move r6 r15
|
||||
ls r15 d0 0 Occupied
|
||||
beqz r15 63
|
||||
beqz r15 68
|
||||
s d0 Activate 1
|
||||
push r8
|
||||
push r9
|
||||
jal 1
|
||||
pop r9
|
||||
pop r8
|
||||
move r7 r15
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
move r8 0
|
||||
yield
|
||||
l r1 d0 Idle
|
||||
bne r1 0 75
|
||||
j 71
|
||||
bne r1 0 82
|
||||
j 78
|
||||
add r3 r8 1
|
||||
sgt r4 r3 19
|
||||
add r5 r8 1
|
||||
@@ -207,8 +214,10 @@ move r9 r6
|
||||
push r8
|
||||
push r9
|
||||
push r8
|
||||
jal 21
|
||||
jal 23
|
||||
pop r9
|
||||
pop r8
|
||||
move r7 r15
|
||||
s d0 Setting r9
|
||||
j 71
|
||||
move r8 r9
|
||||
j 78
|
||||
|
||||
@@ -20,4 +20,6 @@ j ra
|
||||
|
||||
j main
|
||||
pop r8
|
||||
add r1 r8 1
|
||||
move r8 r1
|
||||
j ra
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 173
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -66,8 +67,7 @@ pop r8
|
||||
pop r9
|
||||
push sp
|
||||
push ra
|
||||
add r1 r9 r8
|
||||
move r15 r1
|
||||
add r15 r9 r8
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
@@ -75,8 +75,7 @@ pop r8
|
||||
pop r9
|
||||
push sp
|
||||
push ra
|
||||
add r1 r9 r9
|
||||
move r15 r1
|
||||
add r15 r9 r9
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
@@ -97,7 +96,7 @@ push r9
|
||||
push r10
|
||||
push r10
|
||||
push 2
|
||||
jal 10
|
||||
jal 9
|
||||
pop r10
|
||||
pop r9
|
||||
pop r8
|
||||
|
||||
@@ -24,5 +24,6 @@ j ra
|
||||
j main
|
||||
pop r8
|
||||
pop r9
|
||||
ble r9 r8 4
|
||||
ble r9 r8 5
|
||||
move r10 1
|
||||
j ra
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 133
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -29,8 +30,7 @@ j main
|
||||
pop r8
|
||||
push sp
|
||||
push ra
|
||||
select r9 r8 10 20
|
||||
move r15 r9
|
||||
select r15 r8 10 20
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
|
||||
@@ -17,4 +17,5 @@ j ra
|
||||
## Optimized Output
|
||||
|
||||
j main
|
||||
move r8 10
|
||||
j ra
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 91
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -23,8 +24,7 @@ j main
|
||||
pop r8
|
||||
push sp
|
||||
push ra
|
||||
add r1 r8 r8
|
||||
move r15 r1
|
||||
add r15 r8 r8
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
source: libs/integration_tests/src/lib.rs
|
||||
assertion_line: 206
|
||||
expression: output
|
||||
---
|
||||
## Unoptimized Output
|
||||
@@ -54,12 +55,11 @@ __internal_L4:
|
||||
|
||||
## Optimized Output
|
||||
|
||||
j 25
|
||||
j 23
|
||||
pop r8
|
||||
push sp
|
||||
push ra
|
||||
add r1 r8 1
|
||||
move r15 r1
|
||||
add r15 r8 1
|
||||
pop ra
|
||||
pop sp
|
||||
j ra
|
||||
@@ -74,21 +74,20 @@ jal 1
|
||||
move r3 r15
|
||||
push r3
|
||||
sub r0 sp 5
|
||||
get r0 db r0
|
||||
move r15 r0
|
||||
get r15 db r0
|
||||
sub r0 sp 4
|
||||
get ra db r0
|
||||
j ra
|
||||
yield
|
||||
jal 9
|
||||
jal 8
|
||||
pop r0
|
||||
pop r9
|
||||
pop r8
|
||||
move sp r15
|
||||
jal 9
|
||||
jal 8
|
||||
pop r0
|
||||
pop r0
|
||||
pop r9
|
||||
move sp r15
|
||||
s db Setting r9
|
||||
j 25
|
||||
j 23
|
||||
|
||||
Reference in New Issue
Block a user