def test_insert_phis_complex_1(self): cfg = CFG(complex1_cfg_blocks) phis_inserted = cfg.insert_phis() self.assertEqual(phis_inserted, 1) for blk in [c1_block1, c1_block2, c1_block3]: for insn in blk.insns: self.assertEqual(insn.num_phis(), 0) insn = c1_block4.insns[0] self.assertEqual(insn.num_phis(), 1) self.assertEqual(insn.pcode[0].output, r3)
def test_insert_phis_complex_2(self): cfg = CFG(complex2_cfg_blocks) phis_inserted = cfg.insert_phis() self.assertEqual(phis_inserted, 2) for blk in [c2_block1, c2_block2, c2_block3, c2_block5]: for insn in blk.insns: self.assertEqual(insn.num_phis(), 0) insn = c2_block4.insns[0] self.assertEqual(insn.num_phis(), 2) outputs = set([pcop.output for pcop in insn.pcode if pcop.is_phi()]) self.assertEqual(outputs, set({r3, r1}))
def test_insert_phis_simple(self): cfg = CFG(simple_cfg_blocks) phis_inserted = cfg.insert_phis() self.assertEqual(phis_inserted, 0)