void GetLoopInvariants(LoopStmt loop, Method method) { foreach (var invariant in loop.Invariants) { _allRemovableTypes.AddInvariant(new Wrap <MaybeFreeExpression>(invariant, loop.Invariants), method); } }
public List <Tuple <MaybeFreeExpression, MaybeFreeExpression> > GetSimplifiedInvariants() { var simplifier = new Simplifier(Program); var wrappedInvariants = simplifier.GetSimplifiedItems(AllRemovableTypes.Invariants); var invariants = new List <Tuple <MaybeFreeExpression, MaybeFreeExpression> >(); foreach (var wrappedInvariant in wrappedInvariants) { AllRemovableTypes.AddInvariant(wrappedInvariant.Item2, AllRemovableTypes.FindMemberFromInvariantWrap(wrappedInvariant.Item1)); AllRemovableTypes.RemoveInvariant(wrappedInvariant.Item1); invariants.Add(new Tuple <MaybeFreeExpression, MaybeFreeExpression>(wrappedInvariant.Item1.Removable, wrappedInvariant.Item2.Removable)); } return(invariants); }