[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