From 040eca77170bea12ca0614cdb256b957c3b93810 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 10 Jun 2020 15:04:31 +0200 Subject: [PATCH] [lldb/Utility] Remove m_ieee_quad from Scalar This field is unused (the only way to change its value is via a constructor which is never called), and as far as I can tell it has been unused since it was introduced in D12100. It also has some soundness issues -- e.g. operator= does not reinitialize it, but uses the old value from the overwritten object. It sounds like this class should be able to support different floating point semantics, but if that is needed, it would be better to start afresh -- probably by passing in an APFloat::fltSemantics object instead of a bool flag. --- lldb/include/lldb/Utility/Scalar.h | 20 ++++------------ lldb/source/Utility/Scalar.cpp | 47 ++++++++++++-------------------------- 2 files changed, 20 insertions(+), 47 deletions(-) diff --git a/lldb/include/lldb/Utility/Scalar.h b/lldb/include/lldb/Utility/Scalar.h index 69c948e..0c8f745 100644 --- a/lldb/include/lldb/Utility/Scalar.h +++ b/lldb/include/lldb/Utility/Scalar.h @@ -83,20 +83,11 @@ public: Scalar(double v) : m_type(e_double), m_float(v) { m_float = llvm::APFloat(v); } - Scalar(long double v, bool ieee_quad) - : m_type(e_long_double), m_float(static_cast(0)), - m_ieee_quad(ieee_quad) { - if (ieee_quad) - m_float = - llvm::APFloat(llvm::APFloat::IEEEquad(), - llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128, - (reinterpret_cast(&v))->x)); - else - m_float = - llvm::APFloat(llvm::APFloat::x87DoubleExtended(), - llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128, - (reinterpret_cast(&v))->x)); - } + Scalar(long double v) + : m_type(e_long_double), + m_float(llvm::APFloat::x87DoubleExtended(), + llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128, + (reinterpret_cast(&v))->x)) {} Scalar(llvm::APInt v) : m_type(), m_float(static_cast(0)) { m_integer = llvm::APInt(v); m_type = GetBestTypeForBitSize(m_integer.getBitWidth(), true); @@ -282,7 +273,6 @@ protected: Scalar::Type m_type; llvm::APInt m_integer; llvm::APFloat m_float; - bool m_ieee_quad = false; private: friend const Scalar operator+(const Scalar &lhs, const Scalar &rhs); diff --git a/lldb/source/Utility/Scalar.cpp b/lldb/source/Utility/Scalar.cpp index e55aa2d..827a3f6 100644 --- a/lldb/source/Utility/Scalar.cpp +++ b/lldb/source/Utility/Scalar.cpp @@ -355,14 +355,9 @@ Scalar &Scalar::operator=(double v) { Scalar &Scalar::operator=(long double v) { m_type = e_long_double; - if (m_ieee_quad) - m_float = llvm::APFloat(llvm::APFloat::IEEEquad(), - llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128, - (reinterpret_cast(&v))->x)); - else - m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended(), - llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128, - (reinterpret_cast(&v))->x)); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended(), + llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128, + (reinterpret_cast(&v))->x)); return *this; } @@ -523,8 +518,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, true, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -593,8 +587,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, false, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -659,8 +652,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, true, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -721,8 +713,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, false, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -779,8 +770,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, true, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -833,8 +823,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, false, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -887,8 +876,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, true, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -937,8 +925,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, false, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -987,8 +974,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, true, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -1034,8 +1020,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: - m_float = llvm::APFloat(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended()); + m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended()); m_float.convertFromAPInt(m_integer, false, llvm::APFloat::rmNearestTiesToEven); success = true; @@ -1074,8 +1059,7 @@ bool Scalar::Promote(Scalar::Type type) { case e_long_double: { bool ignore; - m_float.convert(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended(), + m_float.convert(llvm::APFloat::x87DoubleExtended(), llvm::APFloat::rmNearestTiesToEven, &ignore); success = true; break; @@ -1105,8 +1089,7 @@ bool Scalar::Promote(Scalar::Type type) { break; case e_long_double: { bool ignore; - m_float.convert(m_ieee_quad ? llvm::APFloat::IEEEquad() - : llvm::APFloat::x87DoubleExtended(), + m_float.convert(llvm::APFloat::x87DoubleExtended(), llvm::APFloat::rmNearestTiesToEven, &ignore); success = true; break; -- 2.7.4