[Lldb-commits] [lldb] Revert "Fix pointer to reference type (#113596)" (PR #114831)

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 5 04:43:27 PST 2024


https://github.com/labath updated https://github.com/llvm/llvm-project/pull/114831

>From a98e1f6034479800f0c4ea053f9bee854151b04d Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Mon, 4 Nov 2024 17:56:06 +0100
Subject: [PATCH] Revert "Fix pointer to reference type (#113596)"

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 aca43175d12fac..4006f6e6fd0a5e 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 1374d4e1ec67ab..938fb1a6edf32c 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 4ddffd167ddeed..b64978a9029f81 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
 }



More information about the lldb-commits mailing list