Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r79859:afce8682985f
Date: 2015-09-27 09:49 +0200
http://bitbucket.org/pypy/pypy/changeset/afce8682985f/

Log:    Test and fix (this should fix test_pypy_c.test_generators)

diff --git a/rpython/jit/metainterp/optimizeopt/heap.py 
b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -72,7 +72,7 @@
     def do_setfield(self, optheap, op):
         # Update the state with the SETFIELD_GC/SETARRAYITEM_GC operation 'op'.
         structinfo = optheap.ensure_ptr_info_arg0(op)
-        arg1 = optheap.get_box_replacement(op.getarg(1))
+        arg1 = optheap.get_box_replacement(self._getvalue(op))
         if self.possible_aliasing(optheap, structinfo):
             self.force_lazy_setfield(optheap, op.getdescr())
             assert not self.possible_aliasing(optheap, structinfo)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -5993,5 +5993,22 @@
         """
         self.optimize_loop(ops, expected)
 
+    def test_remove_multiple_setarrayitems(self):
+        ops = """
+        [p0, i1]
+        setarrayitem_gc(p0, 2, NULL, descr=gcarraydescr)
+        guard_value(i1, 42) []
+        setarrayitem_gc(p0, 2, NULL, descr=gcarraydescr)   # remove this
+        finish()
+        """
+        expected = """
+        [p0, i1]
+        setarrayitem_gc(p0, 2, NULL, descr=gcarraydescr)
+        guard_value(i1, 42) []
+        finish()
+        """
+        self.optimize_loop(ops, expected)
+
+
 class TestLLtype(BaseTestOptimizeBasic, LLtypeMixin):
     pass
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to