[pypy-svn] r16061 - pypy/dist/pypy/translator/llvm2

rxe at codespeak.net rxe at codespeak.net
Sun Aug 14 16:19:53 CEST 2005


Author: rxe
Date: Sun Aug 14 16:19:51 2005
New Revision: 16061

Modified:
   pypy/dist/pypy/translator/llvm2/opwriter.py
Log:
Check this in for now.  


Modified: pypy/dist/pypy/translator/llvm2/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/opwriter.py	(original)
+++ pypy/dist/pypy/translator/llvm2/opwriter.py	Sun Aug 14 16:19:51 2005
@@ -90,7 +90,10 @@
             elif op.opname in self.shift_operations:
                 self.shiftop(op)
             elif op.opname.startswith('cast_'):
-                self.cast_primitive(op)
+                if op.opname == 'cast_char_to_int':
+                    self.cast_char_to_int(op)
+                else:
+                    self.cast_primitive(op)
             else:
                 meth = getattr(self, op.opname, None)
                 if not meth:
@@ -207,6 +210,17 @@
                                 self.db.repr_arg(op.args[0]),
                                 tmpvar)
 
+    def cast_char_to_int(self, op):
+        " works for all casts "
+        assert len(op.args) == 1
+        targetvar = self.db.repr_arg(op.result)
+        targettype = self.db.repr_arg_type(op.result)
+        fromvar = self.db.repr_arg(op.args[0])
+        fromtype = self.db.repr_arg_type(op.args[0])
+        intermediate = self.db.repr_tmpvar()
+        self.codewriter.cast(intermediate, fromtype, fromvar, "ubyte")
+        self.codewriter.cast(targetvar, "ubyte", intermediate, targettype)
+
     def cast_primitive(self, op):
         " works for all casts "
         assert len(op.args) == 1



More information about the Pypy-commit mailing list