[pypy-commit] pypy default: int_floordiv(i0, 1) is always equal to i0.
alex_gaynor
noreply at buildbot.pypy.org
Mon May 30 20:17:13 CEST 2011
Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch:
Changeset: r44598:3380961ff42e
Date: 2011-05-30 11:30 -0700
http://bitbucket.org/pypy/pypy/changeset/3380961ff42e/
Log: int_floordiv(i0, 1) is always equal to i0.
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -432,6 +432,9 @@
v1 = self.getvalue(op.getarg(0))
v2 = self.getvalue(op.getarg(1))
+ if v2.is_constant() and v2.box.getint() == 1:
+ self.make_equal_to(op.result, v1)
+ return
if v1.intbound.known_ge(IntBound(0, 0)) and v2.is_constant():
val = v2.box.getint()
if val & (val - 1) == 0 and val > 0: # val == 2**shift
diff --git a/pypy/jit/metainterp/test/test_optimizeopt.py b/pypy/jit/metainterp/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/test/test_optimizeopt.py
@@ -3899,7 +3899,7 @@
jump(i4, i10)
"""
self.optimize_loop(ops, expected)
-
+
def test_add_sub_ovf(self):
ops = """
[i1]
@@ -3939,7 +3939,7 @@
[i0, i1]
escape(i1)
i2 = int_add_ovf(i0, 1)
- guard_no_overflow() []
+ guard_no_overflow() []
jump(i2, i0)
"""
self.optimize_loop(ops, expected)
@@ -4420,7 +4420,6 @@
i8 = int_floordiv(4, i2)
i9 = int_rshift(i1, 2)
i10 = int_floordiv(i1, 0)
- i11 = int_rshift(i1, 0)
i12 = int_floordiv(i2, 2)
i13 = int_floordiv(i2, 3)
i14 = int_floordiv(i2, 4)
@@ -4497,6 +4496,18 @@
"""
self.optimize_loop(ops, expected)
+ def test_int_div_1(self):
+ ops = """
+ [i0]
+ i1 = int_floordiv(i0, 1)
+ jump(i1)
+ """
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, expected)
+
def test_subsub_ovf(self):
ops = """
[i0]
More information about the pypy-commit
mailing list