From e121cfb563d7aa7d65a67d31de677f426beb3139 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Tue, 5 Nov 2024 16:39:31 +0100 Subject: [PATCH] Revert "Fix pointer to reference type (#113596)" (#114831) This reverts commit 25909b811a7ddc983d042b15cb54ec271a673d63 due to unresolved questions about the behavior of "frame var" and ValueObject in the presence of references (see the original patch for discussion). --- lldb/source/ValueObject/ValueObject.cpp | 9 -------- .../TestCPPDereferencingReferences.py | 21 ------------------- .../cpp/dereferencing_references/main.cpp | 2 -- 3 files changed, 32 deletions(-) diff --git a/lldb/source/ValueObject/ValueObject.cpp b/lldb/source/ValueObject/ValueObject.cpp index aca43175d12fa..4006f6e6fd0a5 100644 --- a/lldb/source/ValueObject/ValueObject.cpp +++ b/lldb/source/ValueObject/ValueObject.cpp @@ -2907,15 +2907,6 @@ ValueObjectSP ValueObject::AddressOf(Status &error) { AddressType address_type = eAddressTypeInvalid; const bool scalar_is_load_address = false; - - // For reference type we need to get the address of the object that - // it refers to. - if (GetCompilerType().IsReferenceType()) { - ValueObjectSP deref_obj = Dereference(error); - if (error.Fail() || !deref_obj) - return ValueObjectSP(); - return deref_obj->AddressOf(error); - } addr_t addr = GetAddressOf(scalar_is_load_address, &address_type); error.Clear(); if (addr != LLDB_INVALID_ADDRESS && address_type != eAddressTypeHost) { diff --git a/lldb/test/API/lang/cpp/dereferencing_references/TestCPPDereferencingReferences.py b/lldb/test/API/lang/cpp/dereferencing_references/TestCPPDereferencingReferences.py index 1374d4e1ec67a..938fb1a6edf32 100644 --- a/lldb/test/API/lang/cpp/dereferencing_references/TestCPPDereferencingReferences.py +++ b/lldb/test/API/lang/cpp/dereferencing_references/TestCPPDereferencingReferences.py @@ -25,24 +25,3 @@ def test(self): # Typedef to a reference should dereference to the underlying type. td_val = self.expect_var_path("td_to_ref_type", type="td_int_ref") self.assertEqual(td_val.Dereference().GetType().GetName(), "int") - - def test_take_address_of_reference(self): - """Tests taking address of lvalue/rvalue references in lldb works correctly.""" - self.build() - lldbutil.run_to_source_breakpoint( - self, "// break here", lldb.SBFileSpec("main.cpp") - ) - - plref_val_from_code = self.expect_var_path("pl_ref", type="TTT *") - plref_val_from_expr_path = self.expect_var_path("&l_ref", type="TTT *") - self.assertEqual( - plref_val_from_code.GetValueAsAddress(), - plref_val_from_expr_path.GetValueAsAddress(), - ) - - prref_val_from_code = self.expect_var_path("pr_ref", type="TTT *") - prref_val_from_expr_path = self.expect_var_path("&r_ref", type="TTT *") - self.assertEqual( - prref_val_from_code.GetValueAsAddress(), - prref_val_from_expr_path.GetValueAsAddress(), - ) diff --git a/lldb/test/API/lang/cpp/dereferencing_references/main.cpp b/lldb/test/API/lang/cpp/dereferencing_references/main.cpp index 4ddffd167ddee..b64978a9029f8 100644 --- a/lldb/test/API/lang/cpp/dereferencing_references/main.cpp +++ b/lldb/test/API/lang/cpp/dereferencing_references/main.cpp @@ -9,7 +9,5 @@ int main() { // typedef of a reference td_int_ref td_to_ref_type = i; - TTT *pl_ref = &l_ref; - TTT *pr_ref = &r_ref; return l_ref; // break here }