Author: Carl Friedrich Bolz <cfb...@gmx.de> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit