/// This function is used to convert the value to a double, even if it loses
/// precision.
double getValueAsDouble() const;
+ static double getValueAsDouble(APFloat val);
/// Methods for support type inquiry through isa, cast, and dyn_cast.
static bool kindof(Kind kind) { return kind == Kind::Float; }
}
double FloatAttr::getValueAsDouble() const {
- const auto &semantics = getType().cast<FloatType>().getFloatSemantics();
- auto value = getValue();
- bool losesInfo = false; // ignored
- if (&semantics != &APFloat::IEEEdouble()) {
+ return getValueAsDouble(getValue());
+}
+double FloatAttr::getValueAsDouble(APFloat value) {
+ if (&value.getSemantics() != &APFloat::IEEEdouble()) {
+ bool losesInfo = false;
value.convert(APFloat::IEEEdouble(), APFloat::rmNearestTiesToEven,
&losesInfo);
}