Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: guard-compatible Changeset: r85327:b5babc443dd9 Date: 2016-06-22 12:17 +0200 http://bitbucket.org/pypy/pypy/changeset/b5babc443dd9/
Log: pass the first unroll test (way too easy???) diff --git a/rpython/jit/metainterp/optimizeopt/test/test_compatible.py b/rpython/jit/metainterp/optimizeopt/test/test_compatible.py --- a/rpython/jit/metainterp/optimizeopt/test/test_compatible.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_compatible.py @@ -3,6 +3,8 @@ LLtypeMixin) from rpython.jit.metainterp.optimizeopt.test.test_optimizebasic import ( BaseTestBasic) +from rpython.jit.metainterp.optimizeopt.test.test_optimizeopt import ( + BaseTestWithUnroll) from rpython.jit.metainterp.history import ConstInt, ConstPtr from rpython.jit.metainterp.optimize import InvalidLoop @@ -278,3 +280,25 @@ (ConstInt(123), ConstPtr(self.quasiptr), ConstInt(-4247)): ConstInt(5), } self.optimize_loop(ops, expected, call_pure_results) + + +class TestCompatibleUnroll(BaseTestWithUnroll, LLtypeMixin): + + def test_remove_guard_compatible(self): + ops = """ + [p0] + guard_compatible(p0, ConstPtr(myptr)) [] + guard_compatible(p0, ConstPtr(myptr)) [] + jump(p0) + """ + preamble = """ + [p0] + guard_compatible(p0, ConstPtr(myptr)) [] + jump(p0) + """ + expected = """ + [p0] + jump(p0) + """ + self.optimize_loop(ops, expected, expected_preamble=preamble) + diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py b/rpython/jit/metainterp/optimizeopt/unroll.py --- a/rpython/jit/metainterp/optimizeopt/unroll.py +++ b/rpython/jit/metainterp/optimizeopt/unroll.py @@ -85,6 +85,10 @@ op.set_forwarded(str_info) if preamble_info.is_nonnull(): self.make_nonnull(op) + if preamble_info._compatibility_conditions: + info_in_loop = op.get_forwarded() + if info_in_loop is not None: + info_in_loop._compatibility_conditions = preamble_info._compatibility_conditions elif isinstance(preamble_info, intutils.IntBound): if preamble_info.lower > MININT/2 or preamble_info.upper < MAXINT/2: intbound = self.getintbound(op) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit