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()); }
public void FindNoOutParams() { Assert.AreEqual(0, ExpressionIdentifierUseFinder.Find(null, m.Fn("foo", m.Out(PrimitiveType.Ptr32, m.Local32("tmp")))).Count); }
public void FindId() { Assert.AreEqual(1, ExpressionIdentifierUseFinder.Find(null, m.Local(PrimitiveType.Word16, "loc3")).Count); }
public void FindIdsInBinOp() { Assert.AreEqual(2, ExpressionIdentifierUseFinder.Find(null, m.IAdd( m.Local32("loc2"), m.Local32("loc1"))).Count); }
public void FindNone() { Assert.AreEqual(0, ExpressionIdentifierUseFinder.Find(null, m.Int32(3)).Count); }