Author: Richard Plangger <[email protected]>
Branch:
Changeset: r78704:bdfcbfcfddb7
Date: 2015-07-29 12:12 +0200
http://bitbucket.org/pypy/pypy/changeset/bdfcbfcfddb7/
Log: #2101 ported fix from vecopt to default
diff --git a/rpython/jit/codewriter/jtransform.py
b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -1178,7 +1178,12 @@
else:
v1 = v_arg
sizesign = rffi.size_and_sign(v_result.concretetype)
- if sizesign <= rffi.size_and_sign(lltype.Signed):
+ if v_result.concretetype is lltype.Bool:
+ op = self.rewrite_operation(
+ SpaceOperation('float_is_true', [v1], v_result)
+ )
+ ops.append(op)
+ elif sizesign <= rffi.size_and_sign(lltype.Signed):
# cast to a type that fits in an int: either the size is
# smaller, or it is equal and it is not unsigned
v2 = varoftype(lltype.Signed)
diff --git a/rpython/jit/codewriter/test/test_flatten.py
b/rpython/jit/codewriter/test/test_flatten.py
--- a/rpython/jit/codewriter/test/test_flatten.py
+++ b/rpython/jit/codewriter/test/test_flatten.py
@@ -868,6 +868,12 @@
cast_int_to_float %i0 -> %f0
float_return %f0
""", transform=True)
+ def f(n):
+ return rffi.cast(lltype.Bool, n)
+ self.encoding_test(f, [0.1], """
+ float_ne %f0, $0.0 -> %i0
+ int_return %i0
+ """, transform=True)
# Casts to lltype.SingleFloat
def g(n):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit