[llvm-branch-commits] [lldb] 0f85aa1 - Revert "[LLDB] Fix MS STL `variant` with non-trivial types (#171489)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Jan 14 15:23:25 PST 2026


Author: Jonas Devlieghere
Date: 2026-01-14T15:23:20-08:00
New Revision: 0f85aa14d16f4060a106cddaee11299f377bb0ff

URL: https://github.com/llvm/llvm-project/commit/0f85aa14d16f4060a106cddaee11299f377bb0ff
DIFF: https://github.com/llvm/llvm-project/commit/0f85aa14d16f4060a106cddaee11299f377bb0ff.diff

LOG: Revert "[LLDB] Fix MS STL `variant` with non-trivial types (#171489)"

This reverts commit 9a632fd684e1729b93f9f5272ad6b5798f38ba77.

Added: 
    

Modified: 
    lldb/source/Plugins/Language/CPlusPlus/MsvcStlVariant.cpp
    lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/TestDataFormatterStdVariant.py
    lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/main.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVariant.cpp b/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVariant.cpp
index 55e964256264f..3e7647be48bb0 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVariant.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVariant.cpp
@@ -67,18 +67,12 @@ std::optional<int64_t> GetIndexValue(ValueObject &valobj) {
 ValueObjectSP GetNthStorage(ValueObject &outer, int64_t index) {
   // We need to find the std::_Variant_storage base class.
 
-  // Navigate "down" to std::_Variant_base by finding the holder of "_Which".
-  // This might be down a few levels if a variant member isn't trivially
-  // destructible/copyable/etc.
-  ValueObjectSP which_sp = outer.GetChildMemberWithName("_Which");
-  if (!which_sp)
-    return nullptr;
-  ValueObject *parent = which_sp->GetParent();
-  if (!parent)
+  // -> std::_SMF_control (typedef to std::_Variant_base)
+  ValueObjectSP container_sp = outer.GetSP()->GetChildAtIndex(0);
+  if (!container_sp)
     return nullptr;
-
-  // Now go to std::_Variant_storage.
-  ValueObjectSP container_sp = parent->GetChildAtIndex(0);
+  // -> std::_Variant_storage
+  container_sp = container_sp->GetChildAtIndex(0);
   if (!container_sp)
     return nullptr;
 

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/TestDataFormatterStdVariant.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/TestDataFormatterStdVariant.py
index d5c4f5c34cfe0..1ae07a91dfe3d 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/TestDataFormatterStdVariant.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/TestDataFormatterStdVariant.py
@@ -50,14 +50,6 @@ def cleanup():
             ],
         )
 
-        self.expect_expr(
-            "v4",
-            result_summary=" Active Type = int ",
-            result_children=[
-                ValueCheck(name="Value", value="4"),
-            ],
-        )
-
         lldbutil.continue_to_breakpoint(self.process, bkpt)
 
         self.expect(
@@ -77,19 +69,6 @@ def cleanup():
             substrs=["v3 =  Active Type = char  {", "Value = 'A'", "}"],
         )
 
-        string_name = (
-            "std::basic_string<char, std::char_traits<char>, std::allocator<char>>"
-            if self.getDebugInfo() == "pdb"
-            else "std::basic_string<char>"
-        )
-        self.expect_expr(
-            "v4",
-            result_summary=f" Active Type = {string_name} ",
-            result_children=[
-                ValueCheck(name="Value", summary='"a string"'),
-            ],
-        )
-
         self.expect("frame variable v_valueless", substrs=["v_valueless =  No Value"])
 
         self.expect(

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/main.cpp b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/main.cpp
index 9983104ca9628..620b97b7306f9 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/main.cpp
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/variant/main.cpp
@@ -49,8 +49,6 @@ int main() {
       S>
       v_300_types_valueless;
 
-  std::variant<int, bool, std::string> v4 = 4;
-
   v_valueless = 5;
   v_300_types_valueless.emplace<0>(10);
 
@@ -72,9 +70,6 @@ int main() {
   // state when we change its value.
   v1 = 2.0;
   d = std::get<double>(v1);
-
-  v4 = "a string";
-
   printf("%f\n", d); // break here
 
   try {


        


More information about the llvm-branch-commits mailing list