[Lldb-commits] [lldb] 040eca7 - [lldb/Utility] Remove m_ieee_quad from Scalar

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Wed Jun 10 06:15:39 PDT 2020


Author: Pavel Labath
Date: 2020-06-10T15:15:01+02:00
New Revision: 040eca77170bea12ca0614cdb256b957c3b93810

URL: https://github.com/llvm/llvm-project/commit/040eca77170bea12ca0614cdb256b957c3b93810
DIFF: https://github.com/llvm/llvm-project/commit/040eca77170bea12ca0614cdb256b957c3b93810.diff

LOG: [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.

Added: 
    

Modified: 
    lldb/include/lldb/Utility/Scalar.h
    lldb/source/Utility/Scalar.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/include/lldb/Utility/Scalar.h b/lldb/include/lldb/Utility/Scalar.h
index 69c948ec6222..0c8f7452cfc3 100644
--- a/lldb/include/lldb/Utility/Scalar.h
+++ b/lldb/include/lldb/Utility/Scalar.h
@@ -83,20 +83,11 @@ class Scalar {
   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<float>(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<type128 *>(&v))->x));
-    else
-      m_float =
-          llvm::APFloat(llvm::APFloat::x87DoubleExtended(),
-                        llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128,
-                                    (reinterpret_cast<type128 *>(&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<type128 *>(&v))->x)) {}
   Scalar(llvm::APInt v) : m_type(), m_float(static_cast<float>(0)) {
     m_integer = llvm::APInt(v);
     m_type = GetBestTypeForBitSize(m_integer.getBitWidth(), true);
@@ -282,7 +273,6 @@ class Scalar {
   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 e55aa2d4d5a4..827a3f68c62a 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<type128 *>(&v))->x));
-  else
-    m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended(),
-                            llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128,
-                                        (reinterpret_cast<type128 *>(&v))->x));
+  m_float = llvm::APFloat(llvm::APFloat::x87DoubleExtended(),
+                          llvm::APInt(BITWIDTH_INT128, NUM_OF_WORDS_INT128,
+                                      (reinterpret_cast<type128 *>(&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;


        


More information about the lldb-commits mailing list