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):
s34 = S('command', 'mflo', 'temp')
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])
generate_flow_graph([b1, b2, b3, b4])
create_in_out([b1, b2, b3, b4])
generate_flow_graph([b1, b2, b3])
create_in_out([b1, b2, b3])
self.assertEqual(b1.use_set, set())
self.assertEqual(b1.def_set, set(['a', 'b', 'd', 'x']))
......@@ -57,12 +57,12 @@ class TestLiveness(unittest.TestCase):
self.assertEqual(b3.use_set, set(['b', 'd']))
self.assertEqual(b3.def_set, set(['c', 'temp', 'return']))
self.assertEqual(b1.live_in, set(['$4', '$5', '$6', '$7']))
self.assertEqual(b1.live_out, set(['a', 'b', 'd', '$4', '$5', '$6', '$7']))
self.assertEqual(b2.live_in, set(['a', 'b', '$4', '$5', '$6', '$7']))
self.assertEqual(b2.live_out, set(['b', 'd', '$4', '$5', '$6', '$7']))
self.assertEqual(b3.live_in, set(['b', 'd', '$4', '$5', '$6', '$7']))
self.assertEqual(b3.live_out, set(['$4', '$5', '$6', '$7']))
self.assertEqual(b1.live_in, set())
self.assertEqual(b1.live_out, set(['a', 'b', 'd']))
self.assertEqual(b2.live_in, set(['a', 'b']))
self.assertEqual(b2.live_out, set(['b', 'd']))
self.assertEqual(b3.live_in, set(['b', 'd']))
self.assertEqual(b3.live_out, set())
# def test_create_in_out_two(self):
# s11 = S('command', 'subu', 'i', 'm', '0x00000001')
......
......@@ -2,7 +2,7 @@ import unittest
from copy import copy
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.dataflow import BasicBlock as B, generate_flow_graph
import src.liveness as liveness
......@@ -104,93 +104,93 @@ class TestOptimizeAdvanced(unittest.TestCase):
self.assertFalse(copy_propagation(block))
self.assertEqual(block.statements, arguments)
def test_algebraic_transforms_add0(self):
block = B([self.foo,
S('command', 'addu', '$1', '$2', 0),
self.bar])
self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo,
S('command', 'move', '$1', '$2'),
self.bar])
def test_algebraic_transforms_add1(self):
arguments = [self.foo,
S('command', 'addu', '$1', '$2', 1),
self.bar]
block = B(arguments)
self.assertFalse(algebraic_transformations(block))
self.assertEqual(block.statements, arguments)
def test_algebraic_transforms_sub0(self):
block = B([self.foo,
S('command', 'subu', '$1', '$2', 0),
self.bar])
self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo,
S('command', 'move', '$1', '$2'),
self.bar])
def test_algebraic_transforms_sub1(self):
arguments = [self.foo,
S('command', 'subu', '$1', '$2', 1),
self.bar]
block = B(arguments)
self.assertFalse(algebraic_transformations(block))
self.assertEqual(block.statements, arguments)
def test_algebraic_transforms_mult0(self):
block = B([self.foo,
S('command', 'mult', '$2', 0),
S('command', 'mflo', '$1'),
self.bar])
self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo,
S('command', 'li', '$1', '0x00000000'),
self.bar])
def test_algebraic_transforms_mult1(self):
block = B([self.foo,
S('command', 'mult', '$2', 1),
S('command', 'mflo', '$1'),
self.bar])
self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo,
S('command', 'move', '$1', '$2'),
self.bar])
def test_algebraic_transforms_mult2(self):
block = B([self.foo,
S('command', 'mult', '$2', 2),
S('command', 'mflo', '$1'),
self.bar])
self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo,
S('command', 'sll', '$1', '$2', 1),
self.bar])
def test_algebraic_transforms_mult16(self):
block = B([self.foo,
S('command', 'mult', '$2', 16),
S('command', 'mflo', '$1'),
self.bar])
self.assertTrue(algebraic_transformations(block))
self.assertEqual(block.statements, [self.foo,
S('command', 'sll', '$1', '$2', 4),
self.bar])
def test_algebraic_transforms_mult3(self):
arguments = [self.foo,
S('command', 'mult', '$2', 3),
S('command', 'mflo', '$1'),
self.bar]
block = B(arguments)
self.assertFalse(algebraic_transformations(block))
self.assertEqual(block.statements, arguments)
#def test_algebraic_transforms_add0(self):
# block = B([self.foo,
# S('command', 'addu', '$1', '$2', 0),
# self.bar])
# self.assertTrue(algebraic_transformations(block))
# self.assertEqual(block.statements, [self.foo,
# S('command', 'move', '$1', '$2'),
# self.bar])
#def test_algebraic_transforms_add1(self):
# arguments = [self.foo,
# S('command', 'addu', '$1', '$2', 1),
# self.bar]
# block = B(arguments)
# self.assertFalse(algebraic_transformations(block))
# self.assertEqual(block.statements, arguments)
#def test_algebraic_transforms_sub0(self):
# block = B([self.foo,
# S('command', 'subu', '$1', '$2', 0),
# self.bar])
# self.assertTrue(algebraic_transformations(block))
# self.assertEqual(block.statements, [self.foo,
# S('command', 'move', '$1', '$2'),
# self.bar])
#def test_algebraic_transforms_sub1(self):
# arguments = [self.foo,
# S('command', 'subu', '$1', '$2', 1),
# self.bar]
# block = B(arguments)
# self.assertFalse(algebraic_transformations(block))
# self.assertEqual(block.statements, arguments)
#def test_algebraic_transforms_mult0(self):
# block = B([self.foo,
# S('command', 'mult', '$2', 0),
# S('command', 'mflo', '$1'),
# self.bar])
# self.assertTrue(algebraic_transformations(block))
# self.assertEqual(block.statements, [self.foo,
# S('command', 'li', '$1', '0x00000000'),
# self.bar])
#def test_algebraic_transforms_mult1(self):
# block = B([self.foo,
# S('command', 'mult', '$2', 1),
# S('command', 'mflo', '$1'),
# self.bar])
# self.assertTrue(algebraic_transformations(block))
# self.assertEqual(block.statements, [self.foo,
# S('command', 'move', '$1', '$2'),
# self.bar])
#def test_algebraic_transforms_mult2(self):
# block = B([self.foo,
# S('command', 'mult', '$2', 2),
# S('command', 'mflo', '$1'),
# self.bar])
# self.assertTrue(algebraic_transformations(block))
# self.assertEqual(block.statements, [self.foo,
# S('command', 'sll', '$1', '$2', 1),
# self.bar])
#def test_algebraic_transforms_mult16(self):
# block = B([self.foo,
# S('command', 'mult', '$2', 16),
# S('command', 'mflo', '$1'),
# self.bar])
# self.assertTrue(algebraic_transformations(block))
# self.assertEqual(block.statements, [self.foo,
# S('command', 'sll', '$1', '$2', 4),
# self.bar])
#def test_algebraic_transforms_mult3(self):
# arguments = [self.foo,
# S('command', 'mult', '$2', 3),
# S('command', 'mflo', '$1'),
# self.bar]
# block = B(arguments)
# self.assertFalse(algebraic_transformations(block))
# self.assertEqual(block.statements, arguments)
......@@ -55,11 +55,11 @@ class TestReachingDefinitions(unittest.TestCase):
s34 = S('command', 'mflo', 'temp')
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])
generate_flow_graph([b1, b2, b3, b4])
create_in_out([b1, b2, b3, b4])
generate_flow_graph([b1, b2, b3])
create_in_out([b1, b2, b3])
self.assertEqual(b1.gen_set, set([s11.sid, s12.sid, s13.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