Author: Richard Plangger <r...@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) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit