Author: Carl Friedrich Bolz <[email protected]>
Branch:
Changeset: r81611:7a618a8a60ec
Date: 2016-01-08 00:37 +0100
http://bitbucket.org/pypy/pypy/changeset/7a618a8a60ec/
Log: review the skips in test_optimizebasic
- killed the really old tests that relied on optimizefindnode
machinery
- fixed and enabled a few
- the remaining ones look actually useful
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
@@ -696,58 +696,6 @@
# ----------
- def test_virtual_1(self):
- ops = """
- [i, p0]
- i0 = getfield_gc(p0, descr=valuedescr)
- i1 = int_add(i0, i)
- setfield_gc(p0, i1, descr=valuedescr)
- jump(i, p0)
- """
- expected = """
- [i, i2]
- i1 = int_add(i2, i)
- jump(i, i1)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Not, Virtual(node_vtable, valuedescr=Not)',
- expected)
-
- def test_virtual_float(self):
- ops = """
- [f, p0]
- f0 = getfield_gc(p0, descr=floatdescr)
- f1 = float_add(f0, f)
- setfield_gc(p0, f1, descr=floatdescr)
- jump(f, p0)
- """
- expected = """
- [f, f2]
- f1 = float_add(f2, f)
- jump(f, f1)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Not, Virtual(node_vtable, floatdescr=Not)',
- expected)
-
- def test_virtual_2(self):
- py.test.skip("XXX")
- ops = """
- [i, p0]
- i0 = getfield_gc(p0, descr=valuedescr)
- i1 = int_add(i0, i)
- p1 = new_with_vtable(ConstClass(node_vtable))
- setfield_gc(p1, i1, descr=valuedescr)
- jump(i, p1)
- """
- expected = """
- [i, i2]
- i1 = int_add(i2, i)
- jump(i, i1)
- """
- self.optimize_loop(ops, 'Not, Virtual(node_vtable, valuedescr=Not)',
- expected)
-
def test_virtual_oois(self):
ops = """
[p0, p1, p2]
@@ -774,20 +722,6 @@
guard_false(i12) []
jump(p0, p1, p2)
"""
- expected = """
- [p2]
- # all constant-folded :-)
- jump(p2)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, '''Virtual(node_vtable),
- Virtual(node_vtable),
- Not''',
- expected)
- #
- # to be complete, we also check the no-opt case where most comparisons
- # are not removed. The exact set of comparisons removed depends on
- # the details of the algorithm...
expected2 = """
[p0, p1, p2]
guard_nonnull(p0) []
@@ -801,26 +735,6 @@
"""
self.optimize_loop(ops, expected2)
- def test_virtual_default_field(self):
- py.test.skip("XXX")
- ops = """
- [p0]
- i0 = getfield_gc(p0, descr=valuedescr)
- guard_value(i0, 0) []
- p1 = new_with_vtable(ConstClass(node_vtable))
- # the field 'value' has its default value of 0
- jump(p1)
- """
- expected = """
- [i]
- guard_value(i, 0) []
- jump(0)
- """
- # the 'expected' is sub-optimal, but it should be done by another later
- # optimization step. See test_find_nodes_default_field() for why.
- self.optimize_loop(ops, 'Virtual(node_vtable, valuedescr=Not)',
- expected)
-
def test_virtual_3(self):
ops = """
[i]
@@ -837,55 +751,6 @@
"""
self.optimize_loop(ops, expected)
- def test_virtual_4(self):
- py.test.skip("XXX")
- ops = """
- [i0, p0]
- guard_class(p0, ConstClass(node_vtable)) []
- i1 = getfield_gc(p0, descr=valuedescr)
- i2 = int_sub(i1, 1)
- i3 = int_add(i0, i1)
- p1 = new_with_vtable(descr=nodesize)
- setfield_gc(p1, i2, descr=valuedescr)
- jump(i3, p1)
- """
- expected = """
- [i0, i1]
- i2 = int_sub(i1, 1)
- i3 = int_add(i0, i1)
- jump(i3, i2)
- """
- self.optimize_loop(ops, 'Not, Virtual(node_vtable, valuedescr=Not)',
- expected)
-
- def test_virtual_5(self):
- py.test.skip("XXX")
- ops = """
- [i0, p0]
- guard_class(p0, ConstClass(node_vtable)) []
- i1 = getfield_gc(p0, descr=valuedescr)
- i2 = int_sub(i1, 1)
- i3 = int_add(i0, i1)
- p2 = new_with_vtable(descr=nodesize2)
- setfield_gc(p2, i1, descr=valuedescr)
- p1 = new_with_vtable(descr=nodesize)
- setfield_gc(p1, i2, descr=valuedescr)
- setfield_gc(p1, p2, descr=nextdescr)
- jump(i3, p1)
- """
- expected = """
- [i0, i1, i1bis]
- i2 = int_sub(i1, 1)
- i3 = int_add(i0, i1)
- jump(i3, i2, i1)
- """
- self.optimize_loop(ops,
- '''Not, Virtual(node_vtable,
- valuedescr=Not,
- nextdescr=Virtual(node_vtable2,
- valuedescr=Not))''',
- expected)
-
def test_virtual_constant_isnull(self):
ops = """
[i0]
@@ -1209,27 +1074,6 @@
"""
self.optimize_loop(ops, expected)
- def test_varray_2(self):
- ops = """
- [i0, p1]
- i1 = getarrayitem_gc(p1, 0, descr=arraydescr)
- i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
- i3 = int_sub(i1, i2)
- guard_value(i3, 15) []
- p2 = new_array(2, descr=arraydescr)
- setarrayitem_gc(p2, 1, i0, descr=arraydescr)
- setarrayitem_gc(p2, 0, 20, descr=arraydescr)
- jump(i0, p2)
- """
- expected = """
- [i0, i1, i2]
- i3 = int_sub(i1, i2)
- guard_value(i3, 15) []
- jump(i0, 20, i0)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Not, VArray(arraydescr, Not, Not)', expected)
-
def test_p123_array(self):
ops = """
[i1, p2, p3]
@@ -1264,23 +1108,6 @@
"""
self.optimize_loop(ops, expected)
- def test_vstruct_1(self):
- py.test.skip("XXX")
- ops = """
- [i1, p2]
- i2 = getfield_gc(p2, descr=adescr)
- escape_n(i2)
- p3 = new(descr=ssize)
- setfield_gc(p3, i1, descr=adescr)
- jump(i1, p3)
- """
- expected = """
- [i1, i2]
- escape_n(i2)
- jump(i1, i1)
- """
- self.optimize_loop(ops, 'Not, VStruct(ssize, adescr=Not)', expected)
-
def test_p123_vstruct(self):
ops = """
[i1, p2, p3]
@@ -1443,26 +1270,6 @@
"""
self.optimize_loop(ops, expected)
- def test_duplicate_getfield_guard_value_const(self):
- ops = """
- [p1]
- guard_value(p1, ConstPtr(myptr)) []
- i1 = getfield_gc_i(p1, descr=valuedescr)
- i2 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
- escape_n(i1)
- escape_n(i2)
- jump(p1)
- """
- expected = """
- []
- i1 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
- escape_n(i1)
- escape_n(i1)
- jump()
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Constant(myptr)', expected)
-
def test_duplicate_getfield_sideeffects_1(self):
ops = """
[p1]
@@ -1688,12 +1495,12 @@
jump(p1, i1, i2)
"""
expected = """
- [i1, i2]
+ [p1, i1, i2]
+ guard_value(p1, ConstPtr(myptr)) []
setfield_gc(ConstPtr(myptr), i2, descr=valuedescr)
- jump(i1, i2)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Constant(myptr), Not, Not', expected)
+ jump(ConstPtr(myptr), i1, i2)
+ """
+ self.optimize_loop(ops, expected)
def test_duplicate_getarrayitem_1(self):
ops = """
@@ -1870,163 +1677,7 @@
"""
self.optimize_loop(ops, expected)
- def test_bug_1(self):
- ops = """
- [i0, p1]
- p4 = getfield_gc_r(p1, descr=nextdescr)
- guard_nonnull(p4) []
- escape_n(p4)
- #
- p2 = new_with_vtable(descr=nodesize)
- p3 = escape_r()
- setfield_gc(p2, p3, descr=nextdescr)
- jump(i0, p2)
- """
- expected = """
- [i0, p4]
- guard_nonnull(p4) []
- escape_n(p4)
- #
- p3 = escape_r()
- jump(i0, p3)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Not, Virtual(node_vtable, nextdescr=Not)',
- expected)
-
- def test_bug_2(self):
- ops = """
- [i0, p1]
- p4 = getarrayitem_gc(p1, 0, descr=arraydescr2)
- guard_nonnull(p4) []
- escape_n(p4)
- #
- p2 = new_array(1, descr=arraydescr2)
- p3 = escape_r()
- setarrayitem_gc(p2, 0, p3, descr=arraydescr2)
- jump(i0, p2)
- """
- expected = """
- [i0, p4]
- guard_nonnull(p4) []
- escape_n(p4)
- #
- p3 = escape_r()
- jump(i0, p3)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Not, VArray(arraydescr2, Not)',
- expected)
-
- def test_bug_3(self):
- ops = """
- [p1]
- guard_nonnull(p1) []
- guard_class(p1, ConstClass(node_vtable2)) []
- p2 = getfield_gc_r(p1, descr=nextdescr)
- guard_nonnull(12) []
- guard_class(p2, ConstClass(node_vtable)) []
- p3 = getfield_gc_r(p1, descr=otherdescr)
- guard_nonnull(12) []
- guard_class(p3, ConstClass(node_vtable)) []
- setfield_gc(p3, p2, descr=otherdescr)
- p1a = new_with_vtable(ConstClass(node_vtable2))
- p2a = new_with_vtable(descr=nodesize)
- p3a = new_with_vtable(descr=nodesize)
- escape_n(p3a)
- setfield_gc(p1a, p2a, descr=nextdescr)
- setfield_gc(p1a, p3a, descr=otherdescr)
- jump(p1a)
- """
- expected = """
- [p2, p3]
- guard_class(p2, ConstClass(node_vtable)) []
- guard_class(p3, ConstClass(node_vtable)) []
- setfield_gc(p3, p2, descr=otherdescr)
- p3a = new_with_vtable(descr=nodesize)
- escape_n(p3a)
- p2a = new_with_vtable(descr=nodesize)
- jump(p2a, p3a)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Virtual(node_vtable2, nextdescr=Not,
otherdescr=Not)', expected)
-
- def test_bug_3bis(self):
- ops = """
- [p1]
- guard_nonnull(p1) []
- guard_class(p1, ConstClass(node_vtable2)) []
- p2 = getfield_gc_r(p1, descr=nextdescr)
- guard_nonnull(12) []
- guard_class(p2, ConstClass(node_vtable)) []
- p3 = getfield_gc_r(p1, descr=otherdescr)
- guard_nonnull(12) []
- guard_class(p3, ConstClass(node_vtable)) []
- p1a = new_with_vtable(ConstClass(node_vtable2))
- p2a = new_with_vtable(descr=nodesize)
- setfield_gc(p3, p2a, descr=otherdescr)
- p3a = new_with_vtable(descr=nodesize)
- escape_n(p3a)
- setfield_gc(p1a, p2a, descr=nextdescr)
- setfield_gc(p1a, p3a, descr=otherdescr)
- jump(p1a)
- """
- expected = """
- [p2, p3]
- guard_class(p2, ConstClass(node_vtable)) []
- guard_class(p3, ConstClass(node_vtable)) []
- p2a = new_with_vtable(descr=nodesize)
- setfield_gc(p3, p2a, descr=otherdescr)
- p3a = new_with_vtable(descr=nodesize)
- escape_n(p3a)
- jump(p2a, p3a)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, 'Virtual(node_vtable2, nextdescr=Not,
otherdescr=Not)', expected)
-
- def test_invalid_loop_1(self):
- ops = """
- [p1]
- guard_isnull(p1) []
- #
- p2 = new_with_vtable(descr=nodesize)
- jump(p2)
- """
- py.test.skip("XXX")
- py.test.raises(InvalidLoop, self.optimize_loop,
- ops, 'Virtual(node_vtable)', None)
-
- def test_invalid_loop_2(self):
- py.test.skip("this would fail if we had Fixed again in the specnodes")
- ops = """
- [p1]
- guard_class(p1, ConstClass(node_vtable2)) []
- #
- p2 = new_with_vtable(descr=nodesize)
- escape_n(p2) # prevent it from staying Virtual
- jump(p2)
- """
- py.test.raises(InvalidLoop, self.optimize_loop,
- ops, '...', None)
-
- def test_invalid_loop_3(self):
- ops = """
- [p1]
- p2 = getfield_gc_r(p1, descr=nextdescr)
- guard_isnull(p2) []
- #
- p3 = new_with_vtable(descr=nodesize)
- p4 = new_with_vtable(descr=nodesize)
- setfield_gc(p3, p4, descr=nextdescr)
- jump(p3)
- """
- py.test.skip("XXX")
- py.test.raises(InvalidLoop, self.optimize_loop, ops,
- 'Virtual(node_vtable, nextdescr=Virtual(node_vtable))',
- None)
-
def test_merge_guard_class_guard_value(self):
- py.test.skip("disabled")
ops = """
[p1, i0, i1, i2, p2]
guard_class(p1, ConstClass(node_vtable)) [i0]
@@ -2060,7 +1711,6 @@
self.check_expanded_fail_descr("i0", rop.GUARD_NONNULL_CLASS)
def test_merge_guard_nonnull_guard_value(self):
- py.test.skip("disabled")
ops = """
[p1, i0, i1, i2, p2]
guard_nonnull(p1) [i0]
@@ -2078,7 +1728,6 @@
self.check_expanded_fail_descr("i0", rop.GUARD_VALUE)
def test_merge_guard_nonnull_guard_class_guard_value(self):
- py.test.skip("disabled")
ops = """
[p1, i0, i1, i2, p2]
guard_nonnull(p1) [i0]
@@ -2625,26 +2274,6 @@
where p2 is a node_vtable, valuedescr=i2, nextdescr=p1
''', rop.GUARD_TRUE)
- def test_expand_fail_6(self):
- ops = """
- [p0, i0, i1]
- guard_true(i0) [p0]
- p1 = new_with_vtable(descr=nodesize)
- setfield_gc(p1, i1, descr=valuedescr)
- jump(p1, i1, i1)
- """
- expected = """
- [i1b, i0, i1]
- guard_true(i0) [i1b]
- jump(i1, i1, i1)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, '''Virtual(node_vtable, valuedescr=Not),
- Not, Not''', expected)
- self.check_expanded_fail_descr('''p0
- where p0 is a node_vtable, valuedescr=i1b
- ''', rop.GUARD_TRUE)
-
def test_expand_fail_varray(self):
ops = """
[i1]
@@ -2686,47 +2315,6 @@
where p2 is a vstruct ssize, adescr=i1, bdescr=p1
''', rop.GUARD_TRUE)
- def test_expand_fail_v_all_1(self):
- ops = """
- [i1, p1a, i2]
- p6s = getarrayitem_gc(p1a, 0, descr=arraydescr2)
- p7v = getfield_gc_r(p6s, descr=bdescr)
- p5s = new(descr=ssize)
- setfield_gc(p5s, i2, descr=adescr)
- setfield_gc(p5s, p7v, descr=bdescr)
- setarrayitem_gc(p1a, 1, p5s, descr=arraydescr2)
- guard_true(i1) [p1a]
- p2s = new(descr=ssize)
- p3v = new_with_vtable(descr=nodesize)
- p4a = new_array(2, descr=arraydescr2)
- setfield_gc(p2s, i1, descr=adescr)
- setfield_gc(p2s, p3v, descr=bdescr)
- setfield_gc(p3v, i2, descr=valuedescr)
- setarrayitem_gc(p4a, 0, p2s, descr=arraydescr2)
- jump(i1, p4a, i2)
- """
- expected = """
- [i1, ia, iv, pnull, i2]
- guard_true(i1) [ia, iv, i2]
- jump(1, 1, i2, NULL, i2)
- """
- py.test.skip("XXX")
- self.optimize_loop(ops, '''
- Not,
- VArray(arraydescr2,
- VStruct(ssize,
- adescr=Not,
- bdescr=Virtual(node_vtable,
- valuedescr=Not)),
- Not),
- Not''', expected)
- self.check_expanded_fail_descr('''p1a
- where p1a is a varray arraydescr2: p6s, p5s
- where p6s is a vstruct ssize, adescr=ia, bdescr=p7v
- where p5s is a vstruct ssize, adescr=i2, bdescr=p7v
- where p7v is a node_vtable, valuedescr=iv
- ''', rop.GUARD_TRUE)
-
def test_expand_fail_lazy_setfield_1(self):
ops = """
[p1, i2, i3]
@@ -5179,6 +4767,8 @@
"""
self.optimize_loop(ops, expected)
+ def test_intmod_bounds_harder(self):
+ py.test.skip("harder")
# Of course any 'maybe-negative % power-of-two' can be turned into
# int_and(), but that's a bit harder to detect here because it turns
# into several operations, and of course it is wrong to just turn
@@ -5196,7 +4786,6 @@
i4 = int_and(i0, 15)
finish(i4)
"""
- py.test.skip("harder")
self.optimize_loop(ops, expected)
def test_intmod_bounds_bug1(self):
@@ -5357,7 +4946,7 @@
i5 = int_lt(i2, i1)
guard_true(i5) []
- i6 = getarrayitem_gc(p0, i2)
+ i6 = getarrayitem_gc_i(p0, i2, descr=chararraydescr)
finish(i6)
"""
expected = """
@@ -5368,7 +4957,7 @@
i4 = int_lt(i2, i0)
guard_true(i4) []
- i6 = getarrayitem_gc(p0, i3)
+ i6 = getarrayitem_gc_i(p0, i3, descr=chararraydescr)
finish(i6)
"""
self.optimize_loop(ops, expected)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit