示例#1
0
 public void SefAreConstrained()
 {
     Procedure proc = new ConstrainedMock().Procedure;
     Statement def = proc.EntryBlock.Succ[0].Statements[0];
     Statement use = proc.EntryBlock.Succ[0].Statements[2];
     Assert.AreEqual("id = bar(0x00000003)", def.Instruction.ToString());
     Assert.AreEqual("Mem0[0x10000304:word32] = id", use.Instruction.ToString());
     Assert.AreEqual(SideEffectFlags.Application, sef.FindSideEffect(def.Instruction));
     Assert.AreEqual(SideEffectFlags.Load | SideEffectFlags.Store, sef.FindSideEffect(proc.EntryBlock.Succ[0].Statements[1].Instruction));
     Assert.AreEqual(SideEffectFlags.Load|SideEffectFlags.Store, sef.FindSideEffect(use.Instruction));
     Assert.IsTrue(sef.AreConstrained(def, use));
 }
示例#2
0
        public void SefAreConstrained()
        {
            Procedure proc = new ConstrainedMock().Procedure;
            Statement def  = proc.EntryBlock.Succ[0].Statements[0];
            Statement use  = proc.EntryBlock.Succ[0].Statements[2];

            Assert.AreEqual("id = bar(3<i32>)", def.Instruction.ToString());
            Assert.AreEqual("Mem0[0x10000304<32>:word32] = id", use.Instruction.ToString());
            Assert.AreEqual(SideEffectFlags.Application, sef.FindSideEffect(def.Instruction));
            Assert.AreEqual(SideEffectFlags.Load | SideEffectFlags.Store, sef.FindSideEffect(proc.EntryBlock.Succ[0].Statements[1].Instruction));
            Assert.AreEqual(SideEffectFlags.Load | SideEffectFlags.Store, sef.FindSideEffect(use.Instruction));
            Assert.IsTrue(sef.AreConstrained(def, use));
        }