Author: Squeaky <[email protected]>
Branch: array-propagate-len
Changeset: r69158:a17311d182d4
Date: 2014-02-15 12:11 +0100
http://bitbucket.org/pypy/pypy/changeset/a17311d182d4/
Log: failing test for getfield_raw, skip bounds check if descr is None
diff --git a/rpython/jit/metainterp/optimizeopt/__init__.py
b/rpython/jit/metainterp/optimizeopt/__init__.py
--- a/rpython/jit/metainterp/optimizeopt/__init__.py
+++ b/rpython/jit/metainterp/optimizeopt/__init__.py
@@ -63,7 +63,7 @@
optimizer.propagate_all_forward()
finally:
debug_stop("jit-optimize")
-
+
if __name__ == '__main__':
print ALL_OPTS_NAMES
diff --git a/rpython/jit/metainterp/optimizeopt/intbounds.py
b/rpython/jit/metainterp/optimizeopt/intbounds.py
--- a/rpython/jit/metainterp/optimizeopt/intbounds.py
+++ b/rpython/jit/metainterp/optimizeopt/intbounds.py
@@ -347,12 +347,14 @@
def optimize_GETARRAYITEM_RAW(self, op):
self.emit_operation(op)
descr = op.getdescr()
- if descr.is_item_integer_bounded():
+ if descr and descr.is_item_integer_bounded():
v1 = self.getvalue(op.result)
v1.intbound.make_ge(IntLowerBound(descr.get_item_integer_min()))
v1.intbound.make_lt(
IntUpperBound(descr.get_item_integer_max() + 1))
+ optimize_GETARRAYITEM_GC = optimize_GETARRAYITEM_RAW
+
def optimize_UNICODEGETITEM(self, op):
self.emit_operation(op)
v1 = self.getvalue(op.result)
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
@@ -5239,6 +5239,21 @@
"""
self.optimize_loop(ops, ops)
+ def test_getfieldraw_cmp_outside_bounds(self):
+ ops = """
+ [p0]
+ i0 = getfield_raw(p0, descr=chardescr)
+ i1 = int_gt(i0, -1)
+ guard_true(i1) []
+ """
+
+ expected = """
+ [p0]
+ i0 = getfield_raw(p0, descr=chardescr)
+ """
+ self.optimize_loop(ops, expected)
+
+
def test_rawarray_cmp_outside_intbounds(self):
ops = """
[i0]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit