فهرست منبع

Working on copy propagation.

Jayke Meijer 14 سال پیش
والد
کامیت
ed8637b887
2فایلهای تغییر یافته به همراه15 افزوده شده و 4 حذف شده
  1. 2 2
      src/optimize/__init__.py
  2. 13 2
      src/optimize/advanced.py

+ 2 - 2
src/optimize/__init__.py

@@ -1,4 +1,4 @@
-from src.dataflow import find_basic_blocks
+from dataflow import find_basic_blocks
 
 from standard import redundant_move_1, redundant_move_2, \
         redundant_move_3, redundant_move_4, redundant_load, \
@@ -57,7 +57,7 @@ def optimize_block(block):
     #              or fold_constants(block)
 
     while eliminate_common_subexpressions(block) \
-            | fold_constants(block):
+            | fold_constants(block) | copy_propagation(block):
         pass
 
 def optimize(statements, verbose=0):

+ 13 - 2
src/optimize/advanced.py

@@ -1,4 +1,4 @@
-from src.statement import Statement as S
+from statement import Statement as S
 
 
 def eliminate_common_subexpressions(block):
@@ -55,9 +55,20 @@ def fold_constants(block):
     """
     return False
     
-def copy_propagtion(block):
+def copy_propagation(block):
     """
     Rename values that were copied to there original, so the copy statement
     might be useless, allowing it to be removed by dead code elimination.
     """
+    moves = []
+    count = 0
+    
+    while not block.end():
+        s = block.read()
+        
+        if s.is_command('move'):
+            moves.append((s[0], s[1]))
+            count += 1
+            
+    print "count", count
     return false