Author: Armin Rigo <[email protected]>
Branch:
Changeset: r78628:8250500bac26
Date: 2015-07-21 19:39 +0200
http://bitbucket.org/pypy/pypy/changeset/8250500bac26/
Log: Unsure, but it may be the case that int_is_true is better...
diff --git a/rpython/rtyper/rbuiltin.py b/rpython/rtyper/rbuiltin.py
--- a/rpython/rtyper/rbuiltin.py
+++ b/rpython/rtyper/rbuiltin.py
@@ -480,8 +480,6 @@
}
_cast_from_Signed = {
lltype.Signed: None,
- #lltype.Bool: 'int_is_true', ---disabled, see test_cast_to_bool_1
- # in translator/c/test/test_lltyped.py
lltype.Char: 'cast_int_to_char',
lltype.UniChar: 'cast_int_to_unichar',
lltype.Float: 'cast_int_to_float',
@@ -503,6 +501,8 @@
if op:
v_value = llops.genop(op, [v_value], resulttype=TGT)
return v_value
+ elif ORIG is lltype.Signed and TGT is lltype.Bool:
+ return llops.genop('int_is_true', [v_value],
resulttype=lltype.Bool)
else:
# use the generic operation if there is no alternative
return llops.genop('cast_primitive', [v_value], resulttype=TGT)
diff --git a/rpython/rtyper/test/test_rbuiltin.py
b/rpython/rtyper/test/test_rbuiltin.py
--- a/rpython/rtyper/test/test_rbuiltin.py
+++ b/rpython/rtyper/test/test_rbuiltin.py
@@ -541,6 +541,14 @@
return lltype.cast_primitive(lltype.Signed, v)
res = self.interpret(llf, [rffi.r_short(123)],
policy=LowLevelAnnotatorPolicy())
assert res == 123
+ def llf(v):
+ return lltype.cast_primitive(lltype.Bool, v)
+ res = self.interpret(llf, [2**24], policy=LowLevelAnnotatorPolicy())
+ assert res == True
+ def llf(v):
+ return lltype.cast_primitive(lltype.Bool, v)
+ res = self.interpret(llf, [rffi.r_longlong(2**48)],
policy=LowLevelAnnotatorPolicy())
+ assert res == True
def test_force_cast(self):
def llfn(v):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit