From 921a59bdadced77e745a5cac98cb30cd538f5874 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Fri, 17 Jan 2020 23:29:39 +0100 Subject: [PATCH] More tests --- .../millfork/test/ArrayFieldsSuite.scala | 8 ++++++ .../test/AssemblyOptimizationSuite.scala | 26 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/test/scala/millfork/test/ArrayFieldsSuite.scala diff --git a/src/test/scala/millfork/test/ArrayFieldsSuite.scala b/src/test/scala/millfork/test/ArrayFieldsSuite.scala new file mode 100644 index 00000000..f2bc30cc --- /dev/null +++ b/src/test/scala/millfork/test/ArrayFieldsSuite.scala @@ -0,0 +1,8 @@ +package millfork.test + +/** + * @author Karol Stasiak + */ +class ArrayFieldsSuite { + +} diff --git a/src/test/scala/millfork/test/AssemblyOptimizationSuite.scala b/src/test/scala/millfork/test/AssemblyOptimizationSuite.scala index 7841fe7c..e6c42bca 100644 --- a/src/test/scala/millfork/test/AssemblyOptimizationSuite.scala +++ b/src/test/scala/millfork/test/AssemblyOptimizationSuite.scala @@ -790,4 +790,30 @@ class AssemblyOptimizationSuite extends FunSuite with Matchers { m.readByte(0xc000) should equal(3) } } + + test("Repeated struct array indexing optimization") { + EmuBenchmarkRun( + """ + | struct A { + | byte padding + | byte x + | byte y + | } + | + | array(A) arr[40] + | + | byte output @$c000 + | void main() { + | arr[0].x = 1 + | f(0, 50) + | output = arr[0].y + | } + | + | noinline void f(byte i, byte v) { + | arr[i].y = arr[i].x + v + | } + |""".stripMargin){ m => + m.readByte(0xc000) should equal(51) + } + } }