Author: Carl Friedrich Bolz <[email protected]>
Branch: better-storesink
Changeset: r87165:8999d5b9bffd
Date: 2016-09-12 19:33 +0200
http://bitbucket.org/pypy/pypy/changeset/8999d5b9bffd/
Log: fix immutable checks
diff --git a/rpython/translator/backendopt/cse.py
b/rpython/translator/backendopt/cse.py
--- a/rpython/translator/backendopt/cse.py
+++ b/rpython/translator/backendopt/cse.py
@@ -217,7 +217,7 @@
res = None
if isinstance(arg0, Constant):
PTRTYPE = arg0.concretetype.TO
- if PTRTYPE._immutable_field(fieldname).is_immutable:
+ if PTRTYPE._immutable_field(fieldname):
# can constant-fold:
FIELDTYPE = getattr(PTRTYPE, fieldname)
value = getattr(arg0.value, fieldname)
diff --git a/rpython/translator/backendopt/test/test_cse.py
b/rpython/translator/backendopt/test/test_cse.py
--- a/rpython/translator/backendopt/test/test_cse.py
+++ b/rpython/translator/backendopt/test/test_cse.py
@@ -388,6 +388,20 @@
return a2.a
self.check(read, [int], getfield=0)
+ # not immutable
+ class A(object):
+ def __init__(self, a):
+ self.a = a
+ a1 = A(5)
+ a2 = A(8)
+
+ def read(i):
+ if i:
+ return a1.a
+ return a2.a
+ self.check(read, [int], getfield=2)
+
+
def fakevar(name='v'):
var = Variable(name)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit