diff --git a/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt b/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt index 5a2e54c59..188bc9f76 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt @@ -31,6 +31,13 @@ fun optimizeAssembly(lines: MutableList): Int { numberOfOptimizations++ } + mods = optimizeStoreLoadSame(linesByFour) + if(mods.isNotEmpty()) { + apply(mods, lines) + linesByFour = getLinesBy(lines, 4) + numberOfOptimizations++ + } + mods= optimizeJsrRts(linesByFour) if(mods.isNotEmpty()) { apply(mods, lines) @@ -172,6 +179,7 @@ private fun optimizeSameAssignments(linesByFourteen: List>>): List { + // TODO not sure if this is correct in all situations....: // sta X + lda X, sty X + ldy X, stx X + ldx X -> the second instruction can be eliminated val mods = mutableListOf() for (pair in linesByFour) {