private void PostProcess() { foreach (CodeDescriptor cd in _allMethods) { var iva = InductionVariableAnalyzer.Run(cd.GenuineImplementation.Body); var locals = cd.Implementation.LocalVariables; var vrcs = new CodeDescriptor.ValueRangeConstraint[locals.Count]; for (int i = 0; i < locals.Count; i++) { var loc = locals[i] as Variable; if (loc != null && iva.IsConstrained(loc)) { long min, max; iva.GetRange(loc, out min, out max); vrcs[i] = new CodeDescriptor.ValueRangeConstraint(min, max); } else { vrcs[i] = CodeDescriptor.ValueRangeConstraint.Unconstrained; } } cd.ValueRangeConstraints = vrcs; } }
private void PostProcess() { foreach (CodeDescriptor cd in _allMethods) { var iva = InductionVariableAnalyzer.Run(cd.GenuineImplementation.Body); var locals = cd.Implementation.LocalVariables; var vrcs = new CodeDescriptor.ValueRangeConstraint[locals.Count]; for (int i = 0; i < locals.Count; i++) { var loc = locals[i] as Variable; if (loc != null && iva.IsConstrained(loc)) { long min, max; iva.GetRange(loc, out min, out max); vrcs[i] = new CodeDescriptor.ValueRangeConstraint(min, max); } else vrcs[i] = CodeDescriptor.ValueRangeConstraint.Unconstrained; } cd.ValueRangeConstraints = vrcs; } }