[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