[pypy-commit] pypy vecopt-merge: adapted tests to ignore the jump. the jump operation is not tracked anymore as a dependency, but it is always emitted at the latest position in the trace
plan_rich
noreply at buildbot.pypy.org
Wed Aug 19 14:03:31 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: vecopt-merge
Changeset: r79054:fc7129745344
Date: 2015-08-19 14:03 +0200
http://bitbucket.org/pypy/pypy/changeset/fc7129745344/
Log: adapted tests to ignore the jump. the jump operation is not tracked
anymore as a dependency, but it is always emitted at the latest
position in the trace
diff --git a/rpython/jit/metainterp/optimizeopt/dependency.py b/rpython/jit/metainterp/optimizeopt/dependency.py
--- a/rpython/jit/metainterp/optimizeopt/dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/dependency.py
@@ -62,13 +62,15 @@
count -= 1
while i < count:
op = self.path[i].getoperation()
- if not op.is_always_pure():
- return False
if op.is_guard():
descr = op.getdescr()
+ if not descr:
+ return False
assert isinstance(descr, ResumeGuardDescr)
- if not descr or not descr.exits_early():
+ if not descr.exits_early():
return False
+ elif not op.is_always_pure():
+ return False
i += 1
return True
diff --git a/rpython/jit/metainterp/optimizeopt/schedule.py b/rpython/jit/metainterp/optimizeopt/schedule.py
--- a/rpython/jit/metainterp/optimizeopt/schedule.py
+++ b/rpython/jit/metainterp/optimizeopt/schedule.py
@@ -82,6 +82,7 @@
self.renamer = renamer
self.oplist = oplist
self.unpack = unpack
+
while self.has_more():
i = self.next_index(self.schedulable_nodes)
if i >= 0:
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
@@ -59,7 +59,7 @@
dependency = node_a.getedge_to(node_b)
if dependency is None and idx_b not in exceptions.setdefault(idx,[]):
self.show_dot_graph(graph, self.test_name + '_except')
- assert dependency is not None, \
+ assert dependency is not None or node_b.getopnum() == rop.JUMP, \
" it is expected that instruction at index" + \
" %s depends on instr on index %s but it does not.\n%s" \
% (node_a, node_b, graph)
@@ -168,8 +168,6 @@
self.assert_dependent(1,2)
self.assert_dependent(2,3)
self.assert_dependent(1,3)
- self.assert_dependent(2,4)
- self.assert_dependent(3,4)
def test_def_use_jump_use_def(self):
ops = """
@@ -336,7 +334,6 @@
jump(p0, i1) # 4:
"""
self.assert_dependencies(ops, full_check=True)
- assert self.last_graph.getnode(1).provides_count() == 1
self.assert_independent(1,2)
self.assert_independent(1,3) # they modify 2 different cells
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -55,7 +55,7 @@
for i,op in enumerate(loop.operations):
if op.getopnum() == rop.LABEL:
op.setdescr(tt)
- loop.operations = pre + loop.operations
+ loop.operations = pre + filter(lambda op: op.getopnum() != rop.DEBUG_MERGE_POINT, loop.operations)
if loop.operations[-1].getopnum() == rop.JUMP:
loop.operations[-1].setdescr(token)
for op in loop.operations:
@@ -1495,8 +1495,8 @@
debug_merge_point(0, 0, '<code object <module>. file '/home/rich/fijal.py'. line 2> #34 FOR_ITER')
jump(p0, p1, p5, p6, p7, p9, p11, p70)
"""
- opt = self.schedule(self.parse_loop(trace))
- self.debug_print_operations(opt.loop)
+ #opt = self.schedule(self.parse_loop(trace))
+ #self.debug_print_operations(opt.loop)
class TestLLtype(BaseTestVectorize, LLtypeMixin):
pass
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -555,7 +555,6 @@
continue
ee_guard_node.remove_edge_to(last_but_one)
#label_node.edge_to(last_but_one, label='pullup')
- print "guard", guard_node, "moved earlier"
# only the last guard needs a connection
guard_node.edge_to(ee_guard_node, label='pullup-last-guard')
self.relax_guard_to(guard_node, ee_guard_node)
More information about the pypy-commit
mailing list