[pypy-commit] pypy default: Test that loops automatically unroll if they are written anywhere in the

arigo pypy.commits at gmail.com
Mon Sep 19 16:08:00 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r87238:3ebb2e0f8d2b
Date: 2016-09-19 22:07 +0200
http://bitbucket.org/pypy/pypy/changeset/3ebb2e0f8d2b/

Log:	Test that loops automatically unroll if they are written anywhere in
	the same function as one that contains a jit_merge_point()

diff --git a/rpython/jit/metainterp/test/test_ajit.py b/rpython/jit/metainterp/test/test_ajit.py
--- a/rpython/jit/metainterp/test/test_ajit.py
+++ b/rpython/jit/metainterp/test/test_ajit.py
@@ -4558,3 +4558,20 @@
         self.meta_interp(f, [])
         self.check_resops(guard_nonnull=0)
 
+    def test_loop_before_main_loop(self):
+        fdriver = JitDriver(greens=[], reds='auto')
+        gdriver = JitDriver(greens=[], reds='auto')
+        def f(i, j):
+            while j > 0:   # this loop unrolls because it is in the same
+                j -= 1     # function as a jit_merge_point()
+            while i > 0:
+                fdriver.jit_merge_point()
+                i -= 1
+        def g(i, j, k):
+            while k > 0:
+                gdriver.jit_merge_point()
+                f(i, j)
+                k -= 1
+
+        self.meta_interp(g, [5, 5, 5])
+        self.check_resops(guard_true=10)   # 5 unrolled, plus 5 unrelated


More information about the pypy-commit mailing list