示例#1
0
            public bool IsUsedInPhi(Identifier id)
            {
                var src = ssa.Identifiers[id].DefStatement;

                if (src == null)
                {
                    return(false);
                }
                if (!(src.Instruction is Assignment assSrc))
                {
                    return(false);
                }
                return(ExpressionIdentifierUseFinder.Find(ssa.Identifiers, assSrc.Src)
                       .Select(c => ssa.Identifiers[c].DefStatement)
                       .Where(d => d != null)
                       .Select(ph => ph !.Instruction as PhiAssignment)
                       .Where(ph => ph != null)
                       .Any());
            }
示例#2
0
 public void FindNoOutParams()
 {
     Assert.AreEqual(0, ExpressionIdentifierUseFinder.Find(null, m.Fn("foo", m.Out(PrimitiveType.Ptr32, m.Local32("tmp")))).Count);
 }
示例#3
0
 public void FindId()
 {
     Assert.AreEqual(1, ExpressionIdentifierUseFinder.Find(null, m.Local(PrimitiveType.Word16, "loc3")).Count);
 }
示例#4
0
 public void FindIdsInBinOp()
 {
     Assert.AreEqual(2, ExpressionIdentifierUseFinder.Find(null, m.IAdd(
                                                               m.Local32("loc2"),
                                                               m.Local32("loc1"))).Count);
 }
示例#5
0
 public void FindNone()
 {
     Assert.AreEqual(0, ExpressionIdentifierUseFinder.Find(null, m.Int32(3)).Count);
 }