| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import unittest
- from src.optimize.advanced import eliminate_common_subexpressions, \
- fold_constants, copy_propagation
- from src.statement import Statement as S, Block as B
- class TestOptimizeAdvanced(unittest.TestCase):
- def setUp(self):
- self.foo = S('command', 'foo')
- self.bar = S('command', 'bar')
- def test_eliminate_common_subexpressions(self):
- pass
-
- def test_copy_propagation_true(self):
- block = B([self.foo,
- S('command', 'move', '$1', '$2'),
- self.foo,
- S('command', 'addu', '$3', '$1', '$4'),
- self.bar])
-
- self.assertTrue(copy_propagation(block))
- self.assertEqual(block.statements, [self.foo,
- S('command', 'move', '$1', '$2'),
- self.foo,
- S('command', 'addu', '$3', '$2', '$4'),
- self.bar])
-
- def test_copy_propagation_overwrite(self):
- block = B([self.foo, \
- S('command', 'move', '$1', '$2'),
- S('command', 'move', '$1', '$5'),
- S('command', 'addu', '$3', '$1', '$4'),
- self.bar])
-
- self.assertTrue(copy_propagation(block))
- self.assertEqual(block.statements, [self.foo,
- S('command', 'move', '$1', '$2'),
- S('command', 'move', '$1', '$5'),
- S('command', 'addu', '$3', '$5', '$4'),
- self.bar])
-
- def test_copy_propagation_false(self):
- arguments = [self.foo,
- S('command', 'move', '$1', '$2'),
- S('command', 'move', '$10', '$20'),
- S('command', 'addu', '$1', '$5', 1),
- S('command', 'addu', '$3', '$1', '$4'),
- self.bar]
- block = B(arguments)
- self.assertFalse(copy_propagation(block))
- self.assertEqual(block.statements, arguments)
-
- def test_copy_propagation_false_severalmoves(self):
- arguments = [self.foo,
- S('command', 'move', '$1', '$2'),
- self.foo,
- S('command', 'addu', '$1', '$5', 1),
- S('command', 'addu', '$3', '$1', '$4'),
- self.bar]
- block = B(arguments)
- self.assertFalse(copy_propagation(block))
- self.assertEqual(block.statements, arguments)
|