https://github.com/DrSergei updated 
https://github.com/llvm/llvm-project/pull/174195

>From 69ee3709806ff58feb4d3253d136f87b06dcd7dc Mon Sep 17 00:00:00 2001
From: Sergei Druzhkov <[email protected]>
Date: Fri, 2 Jan 2026 11:51:07 +0300
Subject: [PATCH 1/3] [lldb] Add std::*_ordering summary providers

---
 .../Language/CPlusPlus/CPlusPlusLanguage.cpp  |  33 ++++++
 .../Plugins/Language/CPlusPlus/LibCxx.cpp     | 100 ++++++++++++++++--
 .../Plugins/Language/CPlusPlus/LibCxx.h       |  12 +++
 .../Plugins/Language/CPlusPlus/LibStdcpp.cpp  |  89 +++++++++++++++-
 .../Plugins/Language/CPlusPlus/LibStdcpp.h    |  12 +++
 .../generic/ordering/Makefile                 |   4 +
 .../ordering/TestDataFormatterStdOrdering.py  |  42 ++++++++
 .../generic/ordering/main.cpp                 |  16 +++
 8 files changed, 300 insertions(+), 8 deletions(-)
 create mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/Makefile
 create mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
 create mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/main.cpp

diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index dd3b84e47dec3..3c1464485bbe0 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -1286,6 +1286,22 @@ static void 
LoadLibCxxFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
       TypeSummaryImplSP(new StringSummaryFormat(
           eTypeOptionHideChildren | eTypeOptionHideValue,
           "${var.__y_} ${var.__m_} ${var.__wdl_}")));
+
+  AddCXXSummary(cpp_category_sp,
+                lldb_private::formatters::LibcxxPartialOrderingSummaryProvider,
+                "libc++ std::partial_ordering summary provider",
+                "^std::__[[:alnum:]]+::partial_ordering$",
+                eTypeOptionHideChildren | eTypeOptionHideValue, true);
+  AddCXXSummary(cpp_category_sp,
+                lldb_private::formatters::LibcxxWeakOrderingSummaryProvider,
+                "libc++ std::weak_ordering summary provider",
+                "^std::__[[:alnum:]]+::weak_ordering$",
+                eTypeOptionHideChildren | eTypeOptionHideValue, true);
+  AddCXXSummary(cpp_category_sp,
+                lldb_private::formatters::LibcxxStrongOrderingSummaryProvider,
+                "libc++ std::strong_ordering summary provider",
+                "^std::__[[:alnum:]]+::strong_ordering$",
+                eTypeOptionHideChildren | eTypeOptionHideValue, true);
 }
 
 static void RegisterStdStringSummaryProvider(
@@ -1515,6 +1531,23 @@ static void 
LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
                 lldb_private::formatters::ContainerSizeSummaryProvider,
                 "libstdc++ std::span summary provider", "^std::span<.+>$",
                 stl_summary_flags, true);
+
+  AddCXXSummary(
+      cpp_category_sp,
+      lldb_private::formatters::LibStdcppPartialOrderingSummaryProvider,
+      "libstdc++ std::partial_ordering summary provider",
+      "std::partial_ordering", eTypeOptionHideChildren | eTypeOptionHideValue,
+      false);
+  AddCXXSummary(cpp_category_sp,
+                lldb_private::formatters::LibStdcppWeakOrderingSummaryProvider,
+                "libstdc++ std::weak_ordering summary provider",
+                "std::weak_ordering",
+                eTypeOptionHideChildren | eTypeOptionHideValue, false);
+  AddCXXSummary(
+      cpp_category_sp,
+      lldb_private::formatters::LibStdcppStrongOrderingSummaryProvider,
+      "libstdc++ std::strong_ordering summary provider", 
"std::strong_ordering",
+      eTypeOptionHideChildren | eTypeOptionHideValue, false);
 }
 
 static lldb_private::SyntheticChildrenFrontEnd *
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
index 141c5c9a2caf9..914abd9590c95 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
@@ -256,6 +256,92 @@ bool 
lldb_private::formatters::LibcxxUniquePointerSummaryProvider(
   return true;
 }
 
+static std::optional<int64_t> LibcxxExtractOrderingValue(ValueObject &valobj) {
+  lldb::ValueObjectSP value_sp = valobj.GetChildMemberWithName("__value_");
+  if (!value_sp)
+    return std::nullopt;
+  bool success;
+  int64_t value = value_sp->GetValueAsSigned(0, &success);
+  if (!success)
+    return std::nullopt;
+  return value;
+}
+
+bool lldb_private::formatters::LibcxxPartialOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
+  std::optional<int64_t> value = LibcxxExtractOrderingValue(valobj);
+  if (!value) {
+    stream << "Summary Unavailable";
+    return true;
+  }
+  switch (*value) {
+  case -1:
+    stream << "less";
+    break;
+  case 0:
+    stream << "equivalent";
+    break;
+  case 1:
+    stream << "greater";
+    break;
+  case -127:
+    stream << "unordered";
+    break;
+  default:
+    stream << "Invalid partial ordering value";
+    break;
+  }
+  return true;
+}
+
+bool lldb_private::formatters::LibcxxWeakOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
+  std::optional<int64_t> value = LibcxxExtractOrderingValue(valobj);
+  if (!value) {
+    stream << "Summary Unavailable";
+    return true;
+  }
+  switch (*value) {
+  case -1:
+    stream << "less";
+    break;
+  case 0:
+    stream << "equivalent";
+    break;
+  case 1:
+    stream << "greater";
+    break;
+  default:
+    stream << "Invalid weak ordering value";
+    break;
+  }
+  return true;
+}
+
+bool lldb_private::formatters::LibcxxStrongOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
+  std::optional<int64_t> value = LibcxxExtractOrderingValue(valobj);
+  if (!value) {
+    stream << "Summary Unavailable";
+    return true;
+  }
+  switch (*value) {
+  case -1:
+    stream << "less";
+    break;
+  case 0:
+    stream << "equal";
+    break;
+  case 1:
+    stream << "greater";
+    break;
+  default:
+    stream << "Invalid strong ordering value";
+    break;
+  }
+  return true;
+}
+
 /*
  (lldb) fr var ibeg --raw --ptr-depth 1 -T
  (std::__1::__wrap_iter<int *>) ibeg = {
@@ -495,8 +581,8 @@ ExtractLibcxxStringInfo(ValueObject &valobj) {
   StringLayout layout =
       *index_or_err == 0 ? StringLayout::DSC : StringLayout::CSD;
 
-  bool short_mode = false; // this means the string is in short-mode and the
-                           // data is stored inline
+  bool short_mode = false;    // this means the string is in short-mode and the
+                              // data is stored inline
   bool using_bitmasks = true; // Whether the class uses bitmasks for the mode
                               // flag (pre-D123580).
   uint64_t size;
@@ -639,23 +725,23 @@ bool 
lldb_private::formatters::LibcxxStringSummaryProviderUTF32(
 }
 
 static std::tuple<bool, ValueObjectSP, size_t>
-LibcxxExtractStringViewData(ValueObject& valobj) {
+LibcxxExtractStringViewData(ValueObject &valobj) {
   auto dataobj = GetChildMemberWithName(
       valobj, {ConstString("__data_"), ConstString("__data")});
   auto sizeobj = GetChildMemberWithName(
       valobj, {ConstString("__size_"), ConstString("__size")});
   if (!dataobj || !sizeobj)
-    return std::make_tuple<bool,ValueObjectSP,size_t>(false, {}, {});
+    return std::make_tuple<bool, ValueObjectSP, size_t>(false, {}, {});
 
   if (!dataobj->GetError().Success() || !sizeobj->GetError().Success())
-    return std::make_tuple<bool,ValueObjectSP,size_t>(false, {}, {});
+    return std::make_tuple<bool, ValueObjectSP, size_t>(false, {}, {});
 
   bool success{false};
   uint64_t size = sizeobj->GetValueAsUnsigned(0, &success);
   if (!success)
-    return std::make_tuple<bool,ValueObjectSP,size_t>(false, {}, {});
+    return std::make_tuple<bool, ValueObjectSP, size_t>(false, {}, {});
 
-  return std::make_tuple(true,dataobj,size);
+  return std::make_tuple(true, dataobj, size);
 }
 
 template <StringPrinter::StringElementType element_type>
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h 
b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
index 8fd29288da35f..69cca8ee621d9 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
@@ -92,6 +92,18 @@ bool LibcxxFunctionSummaryProvider(
     ValueObject &valobj, Stream &stream,
     const TypeSummaryOptions &options); // libc++ std::function<>
 
+bool LibcxxPartialOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream,
+    const TypeSummaryOptions &options); // libc++ std::partial_ordering
+
+bool LibcxxWeakOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream,
+    const TypeSummaryOptions &options); // libc++ std::weak_ordering
+
+bool LibcxxStrongOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream,
+    const TypeSummaryOptions &options); // libc++ std::strong_ordering
+
 SyntheticChildrenFrontEnd *
 LibcxxVectorBoolSyntheticFrontEndCreator(CXXSyntheticChildren *,
                                          lldb::ValueObjectSP);
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
index 86f0a5ad78a9a..c1e06850be9b3 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
@@ -73,7 +73,6 @@ class LibStdcppSharedPtrSyntheticFrontEnd : public 
SyntheticChildrenFrontEnd {
   llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override;
 
 private:
-
   // The lifetime of a ValueObject and all its derivative ValueObjects
   // (children, clones, etc.) is managed by a ClusterManager. These
   // objects are only destroyed when every shared pointer to any of them
@@ -410,3 +409,91 @@ bool formatters::LibStdcppVariantSummaryProvider(
   stream << " Active Type = " << active_type.GetDisplayTypeName() << " ";
   return true;
 }
+
+static std::optional<int64_t>
+LibStdcppExtractOrderingValue(ValueObject &valobj) {
+  lldb::ValueObjectSP value_sp = valobj.GetChildMemberWithName("_M_value");
+  if (!value_sp)
+    return std::nullopt;
+  bool success;
+  int64_t value = value_sp->GetValueAsSigned(0, &success);
+  if (!success)
+    return std::nullopt;
+  return value;
+}
+
+bool lldb_private::formatters::LibStdcppPartialOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
+  std::optional<int64_t> value = LibStdcppExtractOrderingValue(valobj);
+  if (!value) {
+    stream << "Summary Unavailable";
+    return true;
+  }
+  switch (*value) {
+  case -1:
+    stream << "less";
+    break;
+  case 0:
+    stream << "equivalent";
+    break;
+  case 1:
+    stream << "greater";
+    break;
+  case -128:
+  case 2:
+    stream << "unordered";
+    break;
+  default:
+    stream << "Invalid partial ordering value";
+    break;
+  }
+  return true;
+}
+
+bool lldb_private::formatters::LibStdcppWeakOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
+  std::optional<int64_t> value = LibStdcppExtractOrderingValue(valobj);
+  if (!value) {
+    stream << "Summary Unavailable";
+    return true;
+  }
+  switch (*value) {
+  case -1:
+    stream << "less";
+    break;
+  case 0:
+    stream << "equivalent";
+    break;
+  case 1:
+    stream << "greater";
+    break;
+  default:
+    stream << "Invalid weak ordering value";
+    break;
+  }
+  return true;
+}
+
+bool lldb_private::formatters::LibStdcppStrongOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
+  std::optional<int64_t> value = LibStdcppExtractOrderingValue(valobj);
+  if (!value) {
+    stream << "Summary Unavailable";
+    return true;
+  }
+  switch (*value) {
+  case -1:
+    stream << "less";
+    break;
+  case 0:
+    stream << "equal";
+    break;
+  case 1:
+    stream << "greater";
+    break;
+  default:
+    stream << "Invalid strong ordering value";
+    break;
+  }
+  return true;
+}
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.h 
b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.h
index 8d2c81f2bbcbb..94d4968b45175 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.h
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.h
@@ -33,6 +33,18 @@ bool LibStdcppVariantSummaryProvider(
     ValueObject &valobj, Stream &stream,
     const TypeSummaryOptions &options); // libstdc++ std::variant<>
 
+bool LibStdcppPartialOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream,
+    const TypeSummaryOptions &options); // libstdc++ std::partial_ordering
+
+bool LibStdcppWeakOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream,
+    const TypeSummaryOptions &options); // libstdc++ std::weak_ordering
+
+bool LibStdcppStrongOrderingSummaryProvider(
+    ValueObject &valobj, Stream &stream,
+    const TypeSummaryOptions &options); // libstdc++ std::strong_ordering
+
 SyntheticChildrenFrontEnd *
 LibstdcppMapIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
                                              lldb::ValueObjectSP);
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/Makefile
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/Makefile
new file mode 100644
index 0000000000000..4f79c0a900c3a
--- /dev/null
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/Makefile
@@ -0,0 +1,4 @@
+CXX_SOURCES := main.cpp
+CXXFLAGS_EXTRAS := -std=c++20
+
+include Makefile.rules
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
new file mode 100644
index 0000000000000..aa0b08249030a
--- /dev/null
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
@@ -0,0 +1,42 @@
+"""
+Test std::*_ordering summary.
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class StdOrderingTestCase(TestBase):
+    def do_test(self):
+        lldbutil.run_to_source_breakpoint(
+            self, "// break here", lldb.SBFileSpec("main.cpp")
+        )
+
+        self.expect(
+            "frame variable",
+            substrs=[
+                "(std::partial_ordering) po_less = less",
+                "(std::partial_ordering) po_equivalent = equivalent",
+                "(std::partial_ordering) po_greater = greater",
+                "(std::partial_ordering) po_unordered = unordered",
+                "(std::weak_ordering) wo_less = less",
+                "(std::weak_ordering) wo_equivalent = equivalent",
+                "(std::weak_ordering) wo_greater = greater",
+                "(std::strong_ordering) so_less = less",
+                "(std::strong_ordering) so_equal = equal",
+                "(std::strong_ordering) so_equivalent = equal",
+                "(std::strong_ordering) so_greater = greater",
+            ],
+        )
+
+    @add_test_categories(["libc++"])
+    def test_libcxx(self):
+        self.build(dictionary={"USE_LIBCPP": 1})
+        self.do_test()
+
+    @add_test_categories(["libstdcxx"])
+    def test_libstdcxx(self):
+        self.build(dictionary={"USE_LIBSTDCPP": 1})
+        self.do_test()
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/main.cpp
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/main.cpp
new file mode 100644
index 0000000000000..2135d5558c1e7
--- /dev/null
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/main.cpp
@@ -0,0 +1,16 @@
+#include <compare>
+
+int main() {
+  auto po_less = std::partial_ordering::less;
+  auto po_equivalent = std::partial_ordering::equivalent;
+  auto po_greater = std::partial_ordering::greater;
+  auto po_unordered = std::partial_ordering::unordered;
+  auto wo_less = std::weak_ordering::less;
+  auto wo_equivalent = std::weak_ordering::equivalent;
+  auto wo_greater = std::weak_ordering::greater;
+  auto so_less = std::strong_ordering::less;
+  auto so_equal = std::strong_ordering::equal;
+  auto so_equivalent = std::strong_ordering::equivalent;
+  auto so_greater = std::strong_ordering::greater;
+  return 0; // break here
+}

>From 5c15ce380dc6c51ad3a8681f352f712ce6835f27 Mon Sep 17 00:00:00 2001
From: Sergei Druzhkov <[email protected]>
Date: Fri, 2 Jan 2026 19:26:31 +0300
Subject: [PATCH 2/3] Fix review comments

---
 .../source/Plugins/Language/CPlusPlus/LibStdcpp.cpp |  9 +++------
 .../ordering/TestDataFormatterStdOrdering.py        | 13 +++++++++++++
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
index c1e06850be9b3..4fb95a885741c 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
@@ -444,8 +444,7 @@ bool 
lldb_private::formatters::LibStdcppPartialOrderingSummaryProvider(
     stream << "unordered";
     break;
   default:
-    stream << "Invalid partial ordering value";
-    break;
+    return false;
   }
   return true;
 }
@@ -468,8 +467,7 @@ bool 
lldb_private::formatters::LibStdcppWeakOrderingSummaryProvider(
     stream << "greater";
     break;
   default:
-    stream << "Invalid weak ordering value";
-    break;
+    return false;
   }
   return true;
 }
@@ -492,8 +490,7 @@ bool 
lldb_private::formatters::LibStdcppStrongOrderingSummaryProvider(
     stream << "greater";
     break;
   default:
-    stream << "Invalid strong ordering value";
-    break;
+    return false;
   }
   return true;
 }
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
index aa0b08249030a..78a1946885985 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
@@ -31,6 +31,19 @@ def do_test(self):
             ],
         )
 
+        frame = self.frame()
+        self.assertEqual(frame.FindVariable("po_less").summary, "less")
+        self.assertEqual(frame.FindVariable("po_equivalent").summary, 
"equivalent")
+        self.assertEqual(frame.FindVariable("po_greater").summary, "greater")
+        self.assertEqual(frame.FindVariable("po_unordered").summary, 
"unordered")
+        self.assertEqual(frame.FindVariable("wo_less").summary, "less")
+        self.assertEqual(frame.FindVariable("wo_equivalent").summary, 
"equivalent")
+        self.assertEqual(frame.FindVariable("wo_greater").summary, "greater")
+        self.assertEqual(frame.FindVariable("so_less").summary, "less")
+        self.assertEqual(frame.FindVariable("so_equal").summary, "equal")
+        self.assertEqual(frame.FindVariable("so_equivalent").summary, "equal")
+        self.assertEqual(frame.FindVariable("so_greater").summary, "greater")
+
     @add_test_categories(["libc++"])
     def test_libcxx(self):
         self.build(dictionary={"USE_LIBCPP": 1})

>From a101bc1ee099ed77a475e7499e147ac883f2fac3 Mon Sep 17 00:00:00 2001
From: Sergei Druzhkov <[email protected]>
Date: Fri, 2 Jan 2026 19:29:46 +0300
Subject: [PATCH 3/3] Remove libc++ changes

---
 .../Language/CPlusPlus/CPlusPlusLanguage.cpp  |  16 ---
 .../Plugins/Language/CPlusPlus/LibCxx.cpp     | 100 ++----------------
 .../Plugins/Language/CPlusPlus/LibCxx.h       |  12 ---
 .../ordering/TestDataFormatterStdOrdering.py  |   5 -
 4 files changed, 7 insertions(+), 126 deletions(-)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 3c1464485bbe0..d685e14fa0492 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -1286,22 +1286,6 @@ static void 
LoadLibCxxFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
       TypeSummaryImplSP(new StringSummaryFormat(
           eTypeOptionHideChildren | eTypeOptionHideValue,
           "${var.__y_} ${var.__m_} ${var.__wdl_}")));
-
-  AddCXXSummary(cpp_category_sp,
-                lldb_private::formatters::LibcxxPartialOrderingSummaryProvider,
-                "libc++ std::partial_ordering summary provider",
-                "^std::__[[:alnum:]]+::partial_ordering$",
-                eTypeOptionHideChildren | eTypeOptionHideValue, true);
-  AddCXXSummary(cpp_category_sp,
-                lldb_private::formatters::LibcxxWeakOrderingSummaryProvider,
-                "libc++ std::weak_ordering summary provider",
-                "^std::__[[:alnum:]]+::weak_ordering$",
-                eTypeOptionHideChildren | eTypeOptionHideValue, true);
-  AddCXXSummary(cpp_category_sp,
-                lldb_private::formatters::LibcxxStrongOrderingSummaryProvider,
-                "libc++ std::strong_ordering summary provider",
-                "^std::__[[:alnum:]]+::strong_ordering$",
-                eTypeOptionHideChildren | eTypeOptionHideValue, true);
 }
 
 static void RegisterStdStringSummaryProvider(
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
index 914abd9590c95..141c5c9a2caf9 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
@@ -256,92 +256,6 @@ bool 
lldb_private::formatters::LibcxxUniquePointerSummaryProvider(
   return true;
 }
 
-static std::optional<int64_t> LibcxxExtractOrderingValue(ValueObject &valobj) {
-  lldb::ValueObjectSP value_sp = valobj.GetChildMemberWithName("__value_");
-  if (!value_sp)
-    return std::nullopt;
-  bool success;
-  int64_t value = value_sp->GetValueAsSigned(0, &success);
-  if (!success)
-    return std::nullopt;
-  return value;
-}
-
-bool lldb_private::formatters::LibcxxPartialOrderingSummaryProvider(
-    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
-  std::optional<int64_t> value = LibcxxExtractOrderingValue(valobj);
-  if (!value) {
-    stream << "Summary Unavailable";
-    return true;
-  }
-  switch (*value) {
-  case -1:
-    stream << "less";
-    break;
-  case 0:
-    stream << "equivalent";
-    break;
-  case 1:
-    stream << "greater";
-    break;
-  case -127:
-    stream << "unordered";
-    break;
-  default:
-    stream << "Invalid partial ordering value";
-    break;
-  }
-  return true;
-}
-
-bool lldb_private::formatters::LibcxxWeakOrderingSummaryProvider(
-    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
-  std::optional<int64_t> value = LibcxxExtractOrderingValue(valobj);
-  if (!value) {
-    stream << "Summary Unavailable";
-    return true;
-  }
-  switch (*value) {
-  case -1:
-    stream << "less";
-    break;
-  case 0:
-    stream << "equivalent";
-    break;
-  case 1:
-    stream << "greater";
-    break;
-  default:
-    stream << "Invalid weak ordering value";
-    break;
-  }
-  return true;
-}
-
-bool lldb_private::formatters::LibcxxStrongOrderingSummaryProvider(
-    ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
-  std::optional<int64_t> value = LibcxxExtractOrderingValue(valobj);
-  if (!value) {
-    stream << "Summary Unavailable";
-    return true;
-  }
-  switch (*value) {
-  case -1:
-    stream << "less";
-    break;
-  case 0:
-    stream << "equal";
-    break;
-  case 1:
-    stream << "greater";
-    break;
-  default:
-    stream << "Invalid strong ordering value";
-    break;
-  }
-  return true;
-}
-
 /*
  (lldb) fr var ibeg --raw --ptr-depth 1 -T
  (std::__1::__wrap_iter<int *>) ibeg = {
@@ -581,8 +495,8 @@ ExtractLibcxxStringInfo(ValueObject &valobj) {
   StringLayout layout =
       *index_or_err == 0 ? StringLayout::DSC : StringLayout::CSD;
 
-  bool short_mode = false;    // this means the string is in short-mode and the
-                              // data is stored inline
+  bool short_mode = false; // this means the string is in short-mode and the
+                           // data is stored inline
   bool using_bitmasks = true; // Whether the class uses bitmasks for the mode
                               // flag (pre-D123580).
   uint64_t size;
@@ -725,23 +639,23 @@ bool 
lldb_private::formatters::LibcxxStringSummaryProviderUTF32(
 }
 
 static std::tuple<bool, ValueObjectSP, size_t>
-LibcxxExtractStringViewData(ValueObject &valobj) {
+LibcxxExtractStringViewData(ValueObject& valobj) {
   auto dataobj = GetChildMemberWithName(
       valobj, {ConstString("__data_"), ConstString("__data")});
   auto sizeobj = GetChildMemberWithName(
       valobj, {ConstString("__size_"), ConstString("__size")});
   if (!dataobj || !sizeobj)
-    return std::make_tuple<bool, ValueObjectSP, size_t>(false, {}, {});
+    return std::make_tuple<bool,ValueObjectSP,size_t>(false, {}, {});
 
   if (!dataobj->GetError().Success() || !sizeobj->GetError().Success())
-    return std::make_tuple<bool, ValueObjectSP, size_t>(false, {}, {});
+    return std::make_tuple<bool,ValueObjectSP,size_t>(false, {}, {});
 
   bool success{false};
   uint64_t size = sizeobj->GetValueAsUnsigned(0, &success);
   if (!success)
-    return std::make_tuple<bool, ValueObjectSP, size_t>(false, {}, {});
+    return std::make_tuple<bool,ValueObjectSP,size_t>(false, {}, {});
 
-  return std::make_tuple(true, dataobj, size);
+  return std::make_tuple(true,dataobj,size);
 }
 
 template <StringPrinter::StringElementType element_type>
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h 
b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
index 69cca8ee621d9..8fd29288da35f 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
@@ -92,18 +92,6 @@ bool LibcxxFunctionSummaryProvider(
     ValueObject &valobj, Stream &stream,
     const TypeSummaryOptions &options); // libc++ std::function<>
 
-bool LibcxxPartialOrderingSummaryProvider(
-    ValueObject &valobj, Stream &stream,
-    const TypeSummaryOptions &options); // libc++ std::partial_ordering
-
-bool LibcxxWeakOrderingSummaryProvider(
-    ValueObject &valobj, Stream &stream,
-    const TypeSummaryOptions &options); // libc++ std::weak_ordering
-
-bool LibcxxStrongOrderingSummaryProvider(
-    ValueObject &valobj, Stream &stream,
-    const TypeSummaryOptions &options); // libc++ std::strong_ordering
-
 SyntheticChildrenFrontEnd *
 LibcxxVectorBoolSyntheticFrontEndCreator(CXXSyntheticChildren *,
                                          lldb::ValueObjectSP);
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
index 78a1946885985..deaa76459cc8e 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/ordering/TestDataFormatterStdOrdering.py
@@ -44,11 +44,6 @@ def do_test(self):
         self.assertEqual(frame.FindVariable("so_equivalent").summary, "equal")
         self.assertEqual(frame.FindVariable("so_greater").summary, "greater")
 
-    @add_test_categories(["libc++"])
-    def test_libcxx(self):
-        self.build(dictionary={"USE_LIBCPP": 1})
-        self.do_test()
-
     @add_test_categories(["libstdcxx"])
     def test_libstdcxx(self):
         self.build(dictionary={"USE_LIBSTDCPP": 1})

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to