Skip to content
Snippets Groups Projects
Commit ed8637b8 authored by Jayke Meijer's avatar Jayke Meijer
Browse files

Working on copy propagation.

parent 7b0de9af
No related branches found
No related tags found
No related merge requests found
from src.dataflow import find_basic_blocks from dataflow import find_basic_blocks
from standard import redundant_move_1, redundant_move_2, \ from standard import redundant_move_1, redundant_move_2, \
redundant_move_3, redundant_move_4, redundant_load, \ redundant_move_3, redundant_move_4, redundant_load, \
...@@ -57,7 +57,7 @@ def optimize_block(block): ...@@ -57,7 +57,7 @@ def optimize_block(block):
# or fold_constants(block) # or fold_constants(block)
while eliminate_common_subexpressions(block) \ while eliminate_common_subexpressions(block) \
| fold_constants(block): | fold_constants(block) | copy_propagation(block):
pass pass
def optimize(statements, verbose=0): def optimize(statements, verbose=0):
......
from src.statement import Statement as S from statement import Statement as S
def eliminate_common_subexpressions(block): def eliminate_common_subexpressions(block):
...@@ -55,9 +55,20 @@ def fold_constants(block): ...@@ -55,9 +55,20 @@ def fold_constants(block):
""" """
return False return False
def copy_propagtion(block): def copy_propagation(block):
""" """
Rename values that were copied to there original, so the copy statement Rename values that were copied to there original, so the copy statement
might be useless, allowing it to be removed by dead code elimination. 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 return false
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment