Commit c53c99a7 authored by Taddeus Kroes's avatar Taddeus Kroes

Fixed unit tests without dummy block.

parent 968c47b8
...@@ -42,11 +42,11 @@ class TestLiveness(unittest.TestCase): ...@@ -42,11 +42,11 @@ class TestLiveness(unittest.TestCase):
s34 = S('command', 'mflo', 'temp') s34 = S('command', 'mflo', 'temp')
s35 = S('command', 'addu', 'return', 'temp', 'c') s35 = S('command', 'addu', 'return', 'temp', 'c')
b1, b2, b3, b4 = find_basic_blocks([s11, s12, s13, s14, s15, s21, s22, \ b1, b2, b3 = find_basic_blocks([s11, s12, s13, s14, s15, s21, s22,
s31, s32, s33, s34, s35]) s31, s32, s33, s34, s35])
generate_flow_graph([b1, b2, b3, b4]) generate_flow_graph([b1, b2, b3])
create_in_out([b1, b2, b3, b4]) create_in_out([b1, b2, b3])
self.assertEqual(b1.use_set, set()) self.assertEqual(b1.use_set, set())
self.assertEqual(b1.def_set, set(['a', 'b', 'd', 'x'])) self.assertEqual(b1.def_set, set(['a', 'b', 'd', 'x']))
...@@ -57,12 +57,12 @@ class TestLiveness(unittest.TestCase): ...@@ -57,12 +57,12 @@ class TestLiveness(unittest.TestCase):
self.assertEqual(b3.use_set, set(['b', 'd'])) self.assertEqual(b3.use_set, set(['b', 'd']))
self.assertEqual(b3.def_set, set(['c', 'temp', 'return'])) self.assertEqual(b3.def_set, set(['c', 'temp', 'return']))
self.assertEqual(b1.live_in, set(['$4', '$5', '$6', '$7'])) self.assertEqual(b1.live_in, set())
self.assertEqual(b1.live_out, set(['a', 'b', 'd', '$4', '$5', '$6', '$7'])) self.assertEqual(b1.live_out, set(['a', 'b', 'd']))
self.assertEqual(b2.live_in, set(['a', 'b', '$4', '$5', '$6', '$7'])) self.assertEqual(b2.live_in, set(['a', 'b']))
self.assertEqual(b2.live_out, set(['b', 'd', '$4', '$5', '$6', '$7'])) self.assertEqual(b2.live_out, set(['b', 'd']))
self.assertEqual(b3.live_in, set(['b', 'd', '$4', '$5', '$6', '$7'])) self.assertEqual(b3.live_in, set(['b', 'd']))
self.assertEqual(b3.live_out, set(['$4', '$5', '$6', '$7'])) self.assertEqual(b3.live_out, set())
# def test_create_in_out_two(self): # def test_create_in_out_two(self):
# s11 = S('command', 'subu', 'i', 'm', '0x00000001') # s11 = S('command', 'subu', 'i', 'm', '0x00000001')
......
...@@ -2,7 +2,7 @@ import unittest ...@@ -2,7 +2,7 @@ import unittest
from copy import copy from copy import copy
from src.optimize.advanced import eliminate_common_subexpressions, \ from src.optimize.advanced import eliminate_common_subexpressions, \
fold_constants, copy_propagation, algebraic_transformations fold_constants, copy_propagation
from src.statement import Statement as S from src.statement import Statement as S
from src.dataflow import BasicBlock as B, generate_flow_graph from src.dataflow import BasicBlock as B, generate_flow_graph
import src.liveness as liveness import src.liveness as liveness
...@@ -104,93 +104,93 @@ class TestOptimizeAdvanced(unittest.TestCase): ...@@ -104,93 +104,93 @@ class TestOptimizeAdvanced(unittest.TestCase):
self.assertFalse(copy_propagation(block)) self.assertFalse(copy_propagation(block))
self.assertEqual(block.statements, arguments) self.assertEqual(block.statements, arguments)
def test_algebraic_transforms_add0(self): #def test_algebraic_transforms_add0(self):
block = B([self.foo, # block = B([self.foo,
S('command', 'addu', '$1', '$2', 0), # S('command', 'addu', '$1', '$2', 0),
self.bar]) # self.bar])
self.assertTrue(algebraic_transformations(block)) # self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo, # self.assertEqual(block.statements, [self.foo,
S('command', 'move', '$1', '$2'), # S('command', 'move', '$1', '$2'),
self.bar]) # self.bar])
def test_algebraic_transforms_add1(self): #def test_algebraic_transforms_add1(self):
arguments = [self.foo, # arguments = [self.foo,
S('command', 'addu', '$1', '$2', 1), # S('command', 'addu', '$1', '$2', 1),
self.bar] # self.bar]
block = B(arguments) # block = B(arguments)
self.assertFalse(algebraic_transformations(block)) # self.assertFalse(algebraic_transformations(block))
self.assertEqual(block.statements, arguments) # self.assertEqual(block.statements, arguments)
def test_algebraic_transforms_sub0(self): #def test_algebraic_transforms_sub0(self):
block = B([self.foo, # block = B([self.foo,
S('command', 'subu', '$1', '$2', 0), # S('command', 'subu', '$1', '$2', 0),
self.bar]) # self.bar])
self.assertTrue(algebraic_transformations(block)) # self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo, # self.assertEqual(block.statements, [self.foo,
S('command', 'move', '$1', '$2'), # S('command', 'move', '$1', '$2'),
self.bar]) # self.bar])
def test_algebraic_transforms_sub1(self): #def test_algebraic_transforms_sub1(self):
arguments = [self.foo, # arguments = [self.foo,
S('command', 'subu', '$1', '$2', 1), # S('command', 'subu', '$1', '$2', 1),
self.bar] # self.bar]
block = B(arguments) # block = B(arguments)
self.assertFalse(algebraic_transformations(block)) # self.assertFalse(algebraic_transformations(block))
self.assertEqual(block.statements, arguments) # self.assertEqual(block.statements, arguments)
def test_algebraic_transforms_mult0(self): #def test_algebraic_transforms_mult0(self):
block = B([self.foo, # block = B([self.foo,
S('command', 'mult', '$2', 0), # S('command', 'mult', '$2', 0),
S('command', 'mflo', '$1'), # S('command', 'mflo', '$1'),
self.bar]) # self.bar])
self.assertTrue(algebraic_transformations(block)) # self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo, # self.assertEqual(block.statements, [self.foo,
S('command', 'li', '$1', '0x00000000'), # S('command', 'li', '$1', '0x00000000'),
self.bar]) # self.bar])
def test_algebraic_transforms_mult1(self): #def test_algebraic_transforms_mult1(self):
block = B([self.foo, # block = B([self.foo,
S('command', 'mult', '$2', 1), # S('command', 'mult', '$2', 1),
S('command', 'mflo', '$1'), # S('command', 'mflo', '$1'),
self.bar]) # self.bar])
self.assertTrue(algebraic_transformations(block)) # self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo, # self.assertEqual(block.statements, [self.foo,
S('command', 'move', '$1', '$2'), # S('command', 'move', '$1', '$2'),
self.bar]) # self.bar])
def test_algebraic_transforms_mult2(self): #def test_algebraic_transforms_mult2(self):
block = B([self.foo, # block = B([self.foo,
S('command', 'mult', '$2', 2), # S('command', 'mult', '$2', 2),
S('command', 'mflo', '$1'), # S('command', 'mflo', '$1'),
self.bar]) # self.bar])
self.assertTrue(algebraic_transformations(block)) # self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo, # self.assertEqual(block.statements, [self.foo,
S('command', 'sll', '$1', '$2', 1), # S('command', 'sll', '$1', '$2', 1),
self.bar]) # self.bar])
def test_algebraic_transforms_mult16(self): #def test_algebraic_transforms_mult16(self):
block = B([self.foo, # block = B([self.foo,
S('command', 'mult', '$2', 16), # S('command', 'mult', '$2', 16),
S('command', 'mflo', '$1'), # S('command', 'mflo', '$1'),
self.bar]) # self.bar])
self.assertTrue(algebraic_transformations(block)) # self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo, # self.assertEqual(block.statements, [self.foo,
S('command', 'sll', '$1', '$2', 4), # S('command', 'sll', '$1', '$2', 4),
self.bar]) # self.bar])
def test_algebraic_transforms_mult3(self): #def test_algebraic_transforms_mult3(self):
arguments = [self.foo, # arguments = [self.foo,
S('command', 'mult', '$2', 3), # S('command', 'mult', '$2', 3),
S('command', 'mflo', '$1'), # S('command', 'mflo', '$1'),
self.bar] # self.bar]
block = B(arguments) # block = B(arguments)
self.assertFalse(algebraic_transformations(block)) # self.assertFalse(algebraic_transformations(block))
self.assertEqual(block.statements, arguments) # self.assertEqual(block.statements, arguments)
...@@ -55,11 +55,11 @@ class TestReachingDefinitions(unittest.TestCase): ...@@ -55,11 +55,11 @@ class TestReachingDefinitions(unittest.TestCase):
s34 = S('command', 'mflo', 'temp') s34 = S('command', 'mflo', 'temp')
s35 = S('command', 'addu', 'return', 'temp', 'c') s35 = S('command', 'addu', 'return', 'temp', 'c')
b1, b2, b3, b4 = find_basic_blocks([s11, s12, s13, s14, s15, s21, s22, \ b1, b2, b3 = find_basic_blocks([s11, s12, s13, s14, s15, s21, s22, \
s31, s32, s33, s34, s35]) s31, s32, s33, s34, s35])
generate_flow_graph([b1, b2, b3, b4]) generate_flow_graph([b1, b2, b3])
create_in_out([b1, b2, b3, b4]) create_in_out([b1, b2, b3])
self.assertEqual(b1.gen_set, set([s11.sid, s12.sid, s13.sid, self.assertEqual(b1.gen_set, set([s11.sid, s12.sid, s13.sid,
s14.sid])) s14.sid]))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment