ir: fix chunk linkage in optimizer

This commit is contained in:
Irmen de Jong
2022-10-30 23:42:41 +01:00
parent 5b6569d0f9
commit 5efe2b027a
3 changed files with 16 additions and 7 deletions
@@ -99,8 +99,11 @@ internal class IRPeepholeOptimizer(private val irprog: IRProgram) {
val chunks = mutableListOf<IRCodeChunkBase>()
chunks += sub.chunks[0]
for(ix in 1 until sub.chunks.size) {
if(mayJoin(chunks.last(), sub.chunks[ix]))
chunks.last().instructions += sub.chunks[ix].instructions
val lastChunk = chunks.last()
if(mayJoin(lastChunk, sub.chunks[ix])) {
lastChunk.instructions += sub.chunks[ix].instructions
lastChunk.next = sub.chunks[ix].next
}
else
chunks += sub.chunks[ix]
}