[pypy-commit] pypy int-tag-untag-as-operations: transplant 3eb981d2713e from type-specialized-instances
cfbolz
noreply at buildbot.pypy.org
Wed Apr 24 16:54:49 CEST 2013
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: int-tag-untag-as-operations
Changeset: r63592:5af87d057647
Date: 2013-04-24 16:36 +0200
http://bitbucket.org/pypy/pypy/changeset/5af87d057647/
Log: transplant 3eb981d2713e from type-specialized-instances
diff --git a/rpython/jit/metainterp/optimizeopt/intbounds.py b/rpython/jit/metainterp/optimizeopt/intbounds.py
--- a/rpython/jit/metainterp/optimizeopt/intbounds.py
+++ b/rpython/jit/metainterp/optimizeopt/intbounds.py
@@ -195,6 +195,7 @@
maxbounds = IntBound((-sys.maxint-1) >> 1, sys.maxint >> 1)
v1.intbound.intersect(maxbounds)
self.pure(rop.INT_UNTAG, [result], args[0])
+ self.pure(rop.INT_TAG, args[:], result)
self.emit_operation(op)
def optimize_GUARD_OVERFLOW(self, op):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -5540,6 +5540,28 @@
"""
self.optimize_loop(ops, expected, preamble)
+ def test_int_tag_ovf_not_repeated(self):
+ ops = """
+ [i0]
+ i1 = int_tag_ovf(i0)
+ guard_no_overflow() []
+ i2 = int_tag_ovf(i0)
+ guard_no_overflow() []
+ i5 = int_add(i2, 1)
+ escape(i5)
+ jump(i5)
+ """
+ expected = """
+ [i0]
+ i1 = int_tag_ovf(i0)
+ guard_no_overflow() []
+ i5 = int_add(i1, 1)
+ escape(i5)
+ jump(i5)
+ """
+ self.optimize_loop(ops, expected)
+
+
def test_mul_ovf(self):
ops = """
[i0, i1]
More information about the pypy-commit
mailing list