From ca6534c3a7255aea5e13275e354f567bb1c69db5 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Thu, 22 Feb 2018 13:36:56 +0100 Subject: [PATCH] Fix for common index subexpression elimination optimization --- .../scala/millfork/assembly/opt/AlwaysGoodOptimizations.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/millfork/assembly/opt/AlwaysGoodOptimizations.scala b/src/main/scala/millfork/assembly/opt/AlwaysGoodOptimizations.scala index 55c53235..68bae126 100644 --- a/src/main/scala/millfork/assembly/opt/AlwaysGoodOptimizations.scala +++ b/src/main/scala/millfork/assembly/opt/AlwaysGoodOptimizations.scala @@ -1269,7 +1269,7 @@ object AlwaysGoodOptimizations { HasOpcodeIn(Set(ADC, ORA, EOR, AND, SBC)) & HasAddrModeIn(Set(Absolute, ZeroPage, Immediate)) val firstFiller = fillerLine.* val secondFiller = (Elidable & fillerLine).* - val betweenLines = (Linear & Not(secondLoad)).+ + val betweenLines = (Linear & Not(secondLoad) & Not(if (targetY) ChangesY else ChangesX)).+ (firstLoad ~ firstFiller ~ firstTransfer).capture(91) ~ betweenLines.capture(95) ~ (secondLoad ~ secondFiller ~ secondTransfer).capture(92) ~ Where(ctx => { val first = ctx.get[List[AssemblyLine]](91) val second = ctx.get[List[AssemblyLine]](92)