[pypy-svn] r21558 - in pypy/dist/pypy/translator/llvm: . test

rxe at codespeak.net rxe at codespeak.net
Fri Dec 23 19:00:10 CET 2005


Author: rxe
Date: Fri Dec 23 19:00:08 2005
New Revision: 21558

Modified:
   pypy/dist/pypy/translator/llvm/funcnode.py
   pypy/dist/pypy/translator/llvm/test/test_merge_if_blocks.py
Log:
arrghh - im an idiot!



Modified: pypy/dist/pypy/translator/llvm/funcnode.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/funcnode.py	(original)
+++ pypy/dist/pypy/translator/llvm/funcnode.py	Fri Dec 23 19:00:08 2005
@@ -182,8 +182,8 @@
                     defaultlink = link
                     continue
 
-                exitcase = link.llexitcase 
-                if block.exitswitch.concretetype is lltype.Char:
+                exitcase = link.llexitcase
+                if block.exitswitch.concretetype in [lltype.Char, lltype.UniChar]:
                     exitcase = ord(exitcase)
                 value_labels.append( (exitcase,
                                       self.block_to_name[link.target]) )

Modified: pypy/dist/pypy/translator/llvm/test/test_merge_if_blocks.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/test_merge_if_blocks.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/test_merge_if_blocks.py	Fri Dec 23 19:00:08 2005
@@ -37,6 +37,19 @@
     for i in range(0, 50):
         assert basic(i) == merge_if_blocks_chr(i)
 
+def test_merge_if_blocks_uni():
+    def merge_if_blocks_uni(i):
+        c = unichr(i)
+        if c == u'\x05':
+            return 1005
+        elif c == u'!':
+            return 1008
+        return 2222
+    basic  = compile_optimized_function(merge_if_blocks_uni , [int])
+    for i in range(0, 50):
+        assert basic(i) == merge_if_blocks_uni(i)
+
+
 def test_merge_if_blocks_many():
     def merge_if_blocks_many(i):
         if i == 0:



More information about the Pypy-commit mailing list