Exemplo n.º 1
0
insn3 = Instruction(insn_addr, insn_len,
                    [PcodeOp(insn_addr, 'COPY', [u0], r1)])

# Simple test CFG
s_block1 = Block([insn1.copy()], name='s_block_1')
s_block2 = Block([insn1.copy()], predecessor=s_block1, name='s_block_2')
s_block3 = Block([insn1.copy()], predecessor=s_block1, name='s_block_3')
s_block4 = Block([insn1.copy()], predecessor=s_block3, name='s_block_4')
simple_cfg_blocks = [s_block2, s_block3, s_block4, s_block1]

# Complex test CFG 1
c1_block1 = Block([insn1.copy(), insn2], name='c1_block_1')
c1_block2 = Block([insn1.copy()], predecessor=c1_block1, name='c1_block_2')
c1_block3 = Block([insn1.copy()], predecessor=c1_block1, name='c1_block_3')
c1_block4 = Block([insn1.copy()], predecessor=c1_block3, name='c1_block_4')
c1_block4.add_predecessor(c1_block2)
complex1_cfg_blocks = [c1_block2, c1_block3, c1_block4, c1_block1]

# Complex test CFG 2
c2_block1 = Block([insn1.copy(), insn2], name='c2_block_1')
c2_block2 = Block([insn1.copy(), insn3],
                  predecessor=c2_block1,
                  name='c2_block_2')
c2_block3 = Block([insn1.copy()], predecessor=c2_block1, name='c2_block_3')
c2_block4 = Block([insn1.copy()], predecessor=c2_block3, name='c2_block_4')
c2_block4.add_predecessor(c2_block2)
c2_block5 = Block([insn1.copy()], predecessor=c2_block4, name='c2_block_5')
complex2_cfg_blocks = [c2_block2, c2_block3, c2_block4, c2_block1, c2_block5]


class TestSSA(unittest.TestCase):