Author: Squeaky <squeaky...@gmx.com> Branch: optimize-int-and Changeset: r69174:92dba00162ff Date: 2014-02-16 13:35 +0100 http://bitbucket.org/pypy/pypy/changeset/92dba00162ff/
Log: fix and improve test diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py --- a/rpython/jit/metainterp/optimizeopt/rewrite.py +++ b/rpython/jit/metainterp/optimizeopt/rewrite.py @@ -86,6 +86,13 @@ v2 = self.getvalue(op.getarg(1)) if v1.is_null() or v2.is_null(): self.make_constant_int(op.result, 0) + elif v2.is_constant(): + val = v2.box.getint() + if val == -1 or v1.intbound.lower >= 0 and \ + v1.intbound.upper <= val & ~(val + 1): + self.make_equal_to(op.result, v1) + else: + self.emit_operation(op) else: self.emit_operation(op) diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py --- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py @@ -5303,7 +5303,8 @@ [p0] i0 = getarrayitem_gc(p0, 0, descr=chararraydescr) i1 = int_and(i0, 255) - jump(i1) + i2 = int_and(i1, -1) + jump(i2) """ expected = """ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit