Skip to content

Commit

Permalink
Revert "Fix pointer to reference type (llvm#113596)" (llvm#114831)
Browse files Browse the repository at this point in the history
This reverts commit 25909b8 due to
unresolved questions about the behavior of "frame var" and ValueObject
in the presence of references (see the original patch for discussion).
  • Loading branch information
labath authored and PhilippRados committed Nov 6, 2024
1 parent 32c6f89 commit e121cfb
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 32 deletions.
9 changes: 0 additions & 9 deletions lldb/source/ValueObject/ValueObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
)
2 changes: 0 additions & 2 deletions lldb/test/API/lang/cpp/dereferencing_references/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

0 comments on commit e121cfb

Please sign in to comment.