[pypy-commit] pypy vecopt: could end in a finish operation, crashed the optimizer

plan_rich noreply at buildbot.pypy.org
Mon Aug 3 08:24:56 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: vecopt
Changeset: r78751:c83f61da5f2d
Date: 2015-08-03 08:22 +0200
http://bitbucket.org/pypy/pypy/changeset/c83f61da5f2d/

Log:	could end in a finish operation, crashed the optimizer

diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -855,14 +855,13 @@
 
     def append_loop(self, loop, all_target_tokens):
         # append e.g. the peeled loop to this loop!
-        label, jump = loop.operations[0], loop.operations[-1]
-        assert label.getopnum() == rop.LABEL
-        assert jump.getopnum() == rop.JUMP
+        jump = loop.operations[-1]
+        assert jump.getdescr() is not None
         target_token = None
         i = 0
         # adds all target token until the one is found that jumps from the 
         # last instruction to the label
-        while target_token is not jump.getdescr():
+        while i < len(loop.operations) and target_token is not jump.getdescr():
             # there is another label
             op = loop.operations[i]
             if op.getopnum() == rop.LABEL:


More information about the pypy-commit mailing list