Exemple #1
0
 def testMergeOneVariable(self):
     p = cfg.Program()
     n0 = p.NewCFGNode("n0")
     u = p.NewVariable([0], [], n0)
     self.assertIs(cfg_utils.merge_variables(p, n0, [u]), u)
     self.assertIs(cfg_utils.merge_variables(p, n0, [u, u]), u)
     self.assertIs(cfg_utils.merge_variables(p, n0, [u, u, u]), u)
Exemple #2
0
 def test_merge_one_variable(self):
     p = cfg.Program()
     n0 = p.NewCFGNode("n0")
     u = p.NewVariable([0], [], n0)
     self.assertIsNot(cfg_utils.merge_variables(p, n0, [u]), u)
     self.assertIsNot(cfg_utils.merge_variables(p, n0, [u, u, u]), u)
     self.assertCountEqual(
         cfg_utils.merge_variables(p, n0, [u, u, u]).data, u.data)
Exemple #3
0
 def test_merge_variables(self):
     p = cfg.Program()
     n0, n1, n2 = p.NewCFGNode("n0"), p.NewCFGNode("n1"), p.NewCFGNode("n2")
     u = p.NewVariable()
     u1 = u.AddBinding(0, source_set=[], where=n0)
     v = p.NewVariable()
     v.AddBinding(1, source_set=[], where=n1)
     v.AddBinding(2, source_set=[], where=n1)
     w = p.NewVariable()
     w.AddBinding(1, source_set=[u1], where=n1)
     w.AddBinding(3, source_set=[], where=n1)
     vw = cfg_utils.merge_variables(p, n2, [v, w])
     self.assertCountEqual(vw.data, [1, 2, 3])
     val1, = [v for v in vw.bindings if v.data == 1]
     self.assertTrue(val1.HasSource(u1))
Exemple #4
0
 def test_merge_zero_variables(self):
     p = cfg.Program()
     n0 = p.NewCFGNode("n0")
     self.assertIsInstance(cfg_utils.merge_variables(p, n0, []),
                           cfg.Variable)
Exemple #5
0
 def join_variables(self, node, variables):
     return cfg_utils.merge_variables(self.program, node, variables)