[pypy-commit] pypy guard-compatible: check that even if there are two guard_compatibles, the conditions end up on
cfbolz
pypy.commits at gmail.com
Sun Mar 13 13:39:51 EDT 2016
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: guard-compatible
Changeset: r83015:f0e5ad960ab7
Date: 2016-03-13 18:16 +0100
http://bitbucket.org/pypy/pypy/changeset/f0e5ad960ab7/
Log: check that even if there are two guard_compatibles, the conditions
end up on only one
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_compatible.py b/rpython/jit/metainterp/optimizeopt/test/test_compatible.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_compatible.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_compatible.py
@@ -49,7 +49,7 @@
(ConstInt(123), ConstPtr(self.myptr)): ConstInt(5),
(ConstInt(124), ConstPtr(self.myptr)): ConstInt(7),
}
- ops = """
+ ops1 = """
[p1]
guard_compatible(p1, ConstPtr(myptr)) []
i3 = call_pure_i(123, p1, descr=plaincalldescr)
@@ -58,6 +58,16 @@
escape_n(i5)
jump(ConstPtr(myptr))
"""
+ ops2 = """
+ [p1]
+ guard_compatible(p1, ConstPtr(myptr)) []
+ i3 = call_pure_i(123, p1, descr=plaincalldescr)
+ escape_n(i3)
+ guard_compatible(p1, ConstPtr(myptr)) []
+ i5 = call_pure_i(124, p1, descr=plaincalldescr)
+ escape_n(i5)
+ jump(ConstPtr(myptr))
+ """
expected = """
[p1]
guard_compatible(p1, ConstPtr(myptr)) []
@@ -65,9 +75,10 @@
escape_n(7)
jump(ConstPtr(myptr))
"""
- self.optimize_loop(ops, expected, call_pure_results=call_pure_results)
- # whitebox-test the guard_compatible descr a bit
- descr = self.loop.operations[1].getdescr()
- assert descr._compatibility_conditions is not None
- assert descr._compatibility_conditions.known_valid.same_constant(ConstPtr(self.myptr))
- assert len(descr._compatibility_conditions.pure_call_conditions) == 2
+ for ops in [ops1, ops2]:
+ self.optimize_loop(ops, expected, call_pure_results=call_pure_results)
+ # whitebox-test the guard_compatible descr a bit
+ descr = self.loop.operations[1].getdescr()
+ assert descr._compatibility_conditions is not None
+ assert descr._compatibility_conditions.known_valid.same_constant(ConstPtr(self.myptr))
+ assert len(descr._compatibility_conditions.pure_call_conditions) == 2
More information about the pypy-commit
mailing list