[Lldb-commits] [lldb] 30a5dda - Revert "[lldb] Fix UB in half2float and add some more tests."

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Wed May 19 13:07:35 PDT 2021


Author: Raphael Isemann
Date: 2021-05-19T22:06:53+02:00
New Revision: 30a5ddaef3e88912e10a6b1c8173b00819c722d3

URL: https://github.com/llvm/llvm-project/commit/30a5ddaef3e88912e10a6b1c8173b00819c722d3
DIFF: https://github.com/llvm/llvm-project/commit/30a5ddaef3e88912e10a6b1c8173b00819c722d3.diff

LOG: Revert "[lldb] Fix UB in half2float and add some more tests."

This reverts commit 4b074b49be206306330076b9fa40632ef1960823.

Some of the new tests are failing on Debian.

Added: 
    

Modified: 
    lldb/source/Core/DumpDataExtractor.cpp
    lldb/unittests/Core/DumpDataExtractorTest.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Core/DumpDataExtractor.cpp b/lldb/source/Core/DumpDataExtractor.cpp
index 34c9353c9feaa..ec44e3481c1e5 100644
--- a/lldb/source/Core/DumpDataExtractor.cpp
+++ b/lldb/source/Core/DumpDataExtractor.cpp
@@ -52,9 +52,7 @@ static float half2float(uint16_t half) {
     float f;
     uint32_t u;
   } u;
-  // Sign extend to 4 byte.
-  int32_t sign_extended = static_cast<int16_t>(half);
-  uint32_t v = static_cast<uint32_t>(sign_extended);
+  int32_t v = (int16_t)half;
 
   if (0 == (v & 0x7c00)) {
     u.u = v & 0x80007FFFU;

diff  --git a/lldb/unittests/Core/DumpDataExtractorTest.cpp b/lldb/unittests/Core/DumpDataExtractorTest.cpp
index 05cd13add1e99..c4ec5f2e9a35b 100644
--- a/lldb/unittests/Core/DumpDataExtractorTest.cpp
+++ b/lldb/unittests/Core/DumpDataExtractorTest.cpp
@@ -174,30 +174,8 @@ TEST(DumpDataExtractorTest, Formats) {
            "{0x0000000000000000 0xaaaabbbbccccdddd}");
 
   // See half2float for format details.
-  // Test zeroes.
-  TestDump(std::vector<uint16_t>{0x0000, 0x8000},
-           lldb::Format::eFormatVectorOfFloat16, "{0 -0}");
-  // Some subnormal numbers.
-  TestDump(std::vector<uint16_t>{0x0001, 0x8001},
-           lldb::Format::eFormatVectorOfFloat16, "{5.96046e-08 -5.96046e-08}");
-  // A full mantisse and empty expontent.
-  TestDump(std::vector<uint16_t>{0x83ff, 0x03ff},
-           lldb::Format::eFormatVectorOfFloat16, "{-6.09756e-05 6.09756e-05}");
-  // Some normal numbers.
-  TestDump(std::vector<uint16_t>{0b0100001001001000},
-           lldb::Format::eFormatVectorOfFloat16, "{3.14062}");
   TestDump(std::vector<uint16_t>{0xabcd, 0x1234},
            lldb::Format::eFormatVectorOfFloat16, "{-0.0609436 0.000757217}");
-  // Largest and smallest normal number.
-  TestDump(std::vector<uint16_t>{0x0400, 0x7bff},
-           lldb::Format::eFormatVectorOfFloat16, "{6.10352e-05 65504}");
-  // quiet/signaling NaNs.
-  TestDump(std::vector<uint16_t>{0xffff, 0xffc0, 0x7fff, 0x7fc0},
-           lldb::Format::eFormatVectorOfFloat16, "{nan nan nan nan}");
-  // +/-Inf.
-  TestDump(std::vector<uint16_t>{0xfc00, 0x7c00},
-           lldb::Format::eFormatVectorOfFloat16, "{-inf inf}");
-
   TestDump(std::vector<float>{std::numeric_limits<float>::min(),
                               std::numeric_limits<float>::max()},
            lldb::Format::eFormatVectorOfFloat32, "{1.17549e-38 3.40282e+38}");


        


More information about the lldb-commits mailing list