[lldb/IRExecutionUnit] Stop searching based on demangled names

Summary:
This was causing problems on linux, where we'd end up calling the
deleting destructor instead of a regular one (because they have the same
demangled name), making a lot of mischief in the process.

The only place where this was necessary (according to the test suite, at
least) was to call a base structor instead of a complete one, but this
is now handled in a more targeted fashion.

TestCallOverriddenMethod is now re-enabled as it now passes reliably.

Reviewers: teemperor, JDevlieghere

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D70722
This commit is contained in:
Pavel Labath 2019-11-26 16:41:26 +01:00
parent 6e1f3170e0
commit 0d2472ff6f
2 changed files with 0 additions and 3 deletions

View File

@ -63,7 +63,6 @@ class ExprCommandCallOverriddenMethod(TestBase):
# a vtable entry that does not exist in the compiled program).
self.expect("expr d.foo()", substrs=["2"])
@skipIfLinux # Calling constructor causes SIGABRT
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr43707")
def test_call_on_temporary(self):
"""Test calls to overridden methods in derived classes."""

View File

@ -728,8 +728,6 @@ void IRExecutionUnit::CollectCandidateCPlusPlusNames(
if (best_alternate_mangled_name) {
CPP_specs.push_back(best_alternate_mangled_name);
}
CPP_specs.push_back(SearchSpec(demangled, lldb::eFunctionNameTypeFull));
}
}