[pypy-commit] pypy optresult-unroll: fix for guard_value on floats
fijal
noreply at buildbot.pypy.org
Tue Jul 7 12:09:04 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r78485:087a1c3233fb
Date: 2015-07-07 12:09 +0200
http://bitbucket.org/pypy/pypy/changeset/087a1c3233fb/
Log: fix for guard_value on floats
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
@@ -313,6 +313,10 @@
if old_guard_op is not None:
op = self.replace_guard_class_with_guard_value(op, info,
old_guard_op)
+ elif arg0.type == 'f':
+ arg0 = self.get_box_replacement(arg0)
+ if arg0.is_constant():
+ return
constbox = op.getarg(1)
assert isinstance(constbox, Const)
self.optimize_guard(op, constbox)
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
@@ -5722,5 +5722,19 @@
"""
self.optimize_loop(ops, expected)
+ def test_float_guard_value(self):
+ ops = """
+ [f0]
+ guard_value(f0, 3.5) []
+ guard_value(f0, 3.5) []
+ finish(f0)
+ """
+ expected = """
+ [f0]
+ guard_value(f0, 3.5) []
+ finish(3.5)
+ """
+ self.optimize_loop(ops, expected)
+
class TestLLtype(BaseTestOptimizeBasic, LLtypeMixin):
pass
More information about the pypy-commit
mailing list