[pypy-svn] r14087 - in pypy/dist/pypy/translator/llvm2: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Sat Jul 2 14:00:25 CEST 2005


Author: cfbolz
Date: Sat Jul  2 14:00:25 2005
New Revision: 14087

Removed:
   pypy/dist/pypy/translator/llvm2/cfgtransform.py
Modified:
   pypy/dist/pypy/translator/llvm2/codewriter.py
   pypy/dist/pypy/translator/llvm2/genllvm.py
   pypy/dist/pypy/translator/llvm2/test/test_genllvm.py
Log:
(ericvrp, cfbolz)

a small cleanup, a (failing) test for lists and removal
of unneeded cfgtransform (functionality moved to translator/backendoptimization.py


Deleted: /pypy/dist/pypy/translator/llvm2/cfgtransform.py
==============================================================================
--- /pypy/dist/pypy/translator/llvm2/cfgtransform.py	Sat Jul  2 14:00:25 2005
+++ (empty file)
@@ -1,44 +0,0 @@
-from pypy.objspace.flow.model import traverse, Block, checkgraph
-from pypy.translator.unsimplify import remove_double_links
-
-
-def remove_same_as(graph): 
-    same_as_positions = []
-    def visit(node): 
-        if isinstance(node, Block): 
-            for i, op in enumerate(node.operations):
-                if op.opname == 'same_as': 
-                    same_as_positions.append((node, i))
-    traverse(visit, graph)
-    while same_as_positions:
-        block, index = same_as_positions.pop()
-        same_as_result = block.operations[index].result
-        same_as_arg = block.operations[index].args[0]
-        # replace the new variable (same_as_result) with the old variable
-        # (from all subsequent positions)
-        for op in block.operations[index:]:
-            if op is not None:
-                for i in range(len(op.args)):
-                    if op.args[i] == same_as_result:
-                        op.args[i] = same_as_arg
-        for link in block.exits:
-            for i in range(len(link.args)):
-                if link.args[i] == same_as_result:
-                    link.args[i] = same_as_arg
-        if block.exitswitch == same_as_result:
-            block.exitswitch = same_as_arg
-        block.operations[index] = None
-       
-    # remove all same_as operations
-    def visit(node): 
-        if isinstance(node, Block) and node.operations:
-            node.operations[:] = filter(None, node.operations)
-    traverse(visit, graph)
-    checkgraph(graph)
-
-
-def prepare_graph(graph, translator):
-    remove_same_as(graph)
-    remove_double_links(translator, graph)
-    return graph
-

Modified: pypy/dist/pypy/translator/llvm2/codewriter.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/codewriter.py	(original)
+++ pypy/dist/pypy/translator/llvm2/codewriter.py	Sat Jul  2 14:00:25 2005
@@ -17,6 +17,9 @@
     def comment(self, line):
         self.append(";; " + line) 
 
+    def newline(self):
+        self.append("")
+
     def indent(self, line): 
         self.append("        " + line) 
 

Modified: pypy/dist/pypy/translator/llvm2/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/genllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm2/genllvm.py	Sat Jul  2 14:00:25 2005
@@ -21,7 +21,7 @@
     entrynode = db.obj2node[c]
     codewriter = CodeWriter()
     comment = codewriter.comment
-    nl = lambda: codewriter.append("")
+    nl = codewriter.newline
     
     nl(); comment("Type Declarations"); nl()
     for typ_decl in db.get_typedecls():

Modified: pypy/dist/pypy/translator/llvm2/test/test_genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/test/test_genllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm2/test/test_genllvm.py	Sat Jul  2 14:00:25 2005
@@ -185,6 +185,16 @@
     assert f(-1) == 3
     assert f(0) == 5
 
+def test_list_getitem(): 
+    def list_getitem(i): 
+        l = [1,2,i]
+        return l[i]
+    f = compile_function(list_getitem, [int])
+    assert f(0) == 1
+    assert f(1) == 2
+    assert f(3) == 3
+
+
 def DONOT_test_simple_chars():
      def char_constant2(s):
          s = s + s + s



More information about the Pypy-commit mailing list