[pypy-commit] pypy regalloc-playground: don't crash with unused operation

cfbolz pypy.commits at gmail.com
Sun Sep 3 03:12:49 EDT 2017


Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: regalloc-playground
Changeset: r92309:2534cf818d52
Date: 2017-09-03 09:01 +0200
http://bitbucket.org/pypy/pypy/changeset/2534cf818d52/

Log:	don't crash with unused operation

diff --git a/rpython/jit/backend/x86/reghint.py b/rpython/jit/backend/x86/reghint.py
--- a/rpython/jit/backend/x86/reghint.py
+++ b/rpython/jit/backend/x86/reghint.py
@@ -24,6 +24,8 @@
         self.longevity = longevity
         for i in range(len(operations)):
             op = operations[i]
+            if rop.has_no_side_effect(op.opnum) and op not in self.longevity:
+                continue
             oplist[op.getopnum()](self, op, i)
 
     def not_implemented_op(self, op, position):
diff --git a/rpython/jit/backend/x86/test/test_regalloc.py b/rpython/jit/backend/x86/test/test_regalloc.py
--- a/rpython/jit/backend/x86/test/test_regalloc.py
+++ b/rpython/jit/backend/x86/test/test_regalloc.py
@@ -61,6 +61,18 @@
         for l in self.log:
             print l
 
+    def test_unused(self):
+        ops = '''
+        [i0, i1, i2, i3]
+        i7 = int_add(i0, i1) # unused
+        i9 = int_add(i2, i3)
+        finish(i9)
+        '''
+        # does not crash
+        self.interpret(ops, [5, 6, 7, 8])
+        assert len([entry for entry in self.log if entry.args[0] == "int_add"]) == 1
+
+
     def test_call_use_correct_regs(self):
         ops = '''
         [i0, i1, i2, i3]


More information about the pypy-commit mailing list