[pypy-commit] pypy optimize-int-and: fix and improve test

squeaky noreply at buildbot.pypy.org
Sun Feb 16 19:33:24 CET 2014


Author: Squeaky <squeaky_pl at 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 = """


More information about the pypy-commit mailing list