private INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> FloatTypesBinary(APC pc, BinaryOperator op, Variable dest, Variable s1, Variable s2, INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> data) { ConcreteFloat t1, t2; if (TryFloatType(pc, s1, out t1) && TryFloatType(pc, s2, out t2)) { var prevType = data.GetFloatType(ToBoxedVariable(dest)); if (prevType.IsTop) { data.SetFloatType(ToBoxedVariable(dest), ConcreteFloat.Float80); } else { data.SetFloatType(ToBoxedVariable(dest), ConcreteFloat.Uncompatible); } } return(data); }
private INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> FloatTypesLdarg(APC pc, Variable dest, INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> data) { ConcreteFloat type; if (TryFloatType(this.Context.MethodContext.CFG.Post(pc), dest, out type) && !data.GetFloatType(new BoxedVariable <Variable>(dest)).IsNormal()) { data.SetFloatType(ToBoxedVariable(dest), ConcreteFloat.Float80); } return(data); }