Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r95383:fd8dbffff070
Date: 2018-11-29 13:29 +0200
http://bitbucket.org/pypy/pypy/changeset/fd8dbffff070/

Log:    A failing test based on #2904

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
@@ -4702,3 +4702,38 @@
         res = self.meta_interp(f, [10])
         assert res == f(10)
 
+    def test_issue2904(self):
+        driver = JitDriver(greens=['codepos'],
+                           reds=['iterations', 'total', 'c', 'height', 'h'])
+
+        class IntVal:
+            _immutable_fields_ = ['intval']
+            def __init__(self, value):
+                self.intval = value
+
+        def f(height, iterations):
+            height = IntVal(height)
+            c = IntVal(0)
+            h = IntVal(0)
+            total = IntVal(0)
+            codepos = 1
+
+            while True:
+                driver.jit_merge_point(codepos=codepos, iterations=iterations,
+                        total=total, c=c, height=height, h=h)
+                if codepos == 1:
+                    if c.intval >= iterations:
+                        return total.intval
+                    else:
+                        h = height
+                        codepos = 2
+                else:
+                    if h.intval > 0:
+                        h = IntVal(h.intval - 1)
+                        total = IntVal(total.intval + 1)
+                    else:
+                        c = IntVal(c.intval + 1)
+                        codepos = 1
+
+        res = self.meta_interp(f, [2, 200])
+        assert res == f(2, 200)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to