Author: Michael Buch Date: 2023-02-10T03:28:28Z New Revision: 181d6e24ca3c09bfd6ec7c3b20affde3e5ea9b40
URL: https://github.com/llvm/llvm-project/commit/181d6e24ca3c09bfd6ec7c3b20affde3e5ea9b40 DIFF: https://github.com/llvm/llvm-project/commit/181d6e24ca3c09bfd6ec7c3b20affde3e5ea9b40.diff LOG: Revert "[lldb][DWARFASTParserClang] Correctly resolve imported namespaces during expression evaluation" This reverts commit 1ba6ec0ba906472661506ef7bd2f0bf4efe4657e. Fails on linux buildbots. Differential Revision: https://reviews.llvm.org/D143398 Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h Removed: lldb/test/API/commands/expression/namespace-alias/Makefile lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py lldb/test/API/commands/expression/namespace-alias/main.cpp ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 717456698eb23..4429b4fcae2a0 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -3304,11 +3304,6 @@ DWARFASTParserClang::GetClangDeclContextForDIE(const DWARFDIE &die) { try_parsing_type = false; break; - case DW_TAG_imported_declaration: - decl_ctx = ResolveImportedDeclarationDIE(die); - try_parsing_type = false; - break; - case DW_TAG_lexical_block: decl_ctx = GetDeclContextForBlock(die); try_parsing_type = false; @@ -3470,42 +3465,6 @@ DWARFASTParserClang::ResolveNamespaceDIE(const DWARFDIE &die) { return nullptr; } -clang::NamespaceDecl * -DWARFASTParserClang::ResolveImportedDeclarationDIE(const DWARFDIE &die) { - assert(die && die.Tag() == DW_TAG_imported_declaration); - - // See if we cached a NamespaceDecl for this imported declaration - // already - auto it = m_die_to_decl_ctx.find(die.GetDIE()); - if (it != m_die_to_decl_ctx.end()) - return static_cast<clang::NamespaceDecl *>(it->getSecond()); - - clang::NamespaceDecl *namespace_decl = nullptr; - - const DWARFDIE imported_uid = - die.GetAttributeValueAsReferenceDIE(DW_AT_import); - if (!imported_uid) - return nullptr; - - switch (imported_uid.Tag()) { - case DW_TAG_imported_declaration: - namespace_decl = ResolveImportedDeclarationDIE(imported_uid); - break; - case DW_TAG_namespace: - namespace_decl = ResolveNamespaceDIE(imported_uid); - break; - default: - return nullptr; - } - - if (!namespace_decl) - return nullptr; - - LinkDeclContextToDIE(namespace_decl, die); - - return namespace_decl; -} - clang::DeclContext *DWARFASTParserClang::GetClangDeclContextContainingDIE( const DWARFDIE &die, DWARFDIE *decl_ctx_die_copy) { SymbolFileDWARF *dwarf = die.GetDWARF(); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h index a4613afafd54f..0733d22a0069b 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h @@ -132,17 +132,6 @@ class DWARFASTParserClang : public DWARFASTParser { clang::NamespaceDecl *ResolveNamespaceDIE(const DWARFDIE &die); - /// Returns the namespace decl that a DW_TAG_imported_declaration imports. - /// - /// \param[in] die The import declaration to resolve. If the DIE is not a - /// DW_TAG_imported_declaration the behaviour is undefined. - /// - /// \returns The decl corresponding to the namespace that the specified - /// 'die' imports. If the imported entity is not a namespace - /// or another import declaration, returns nullptr. If an error - /// occurs, returns nullptr. - clang::NamespaceDecl *ResolveImportedDeclarationDIE(const DWARFDIE &die); - bool ParseTemplateDIE(const DWARFDIE &die, lldb_private::TypeSystemClang::TemplateParameterInfos &template_param_infos); diff --git a/lldb/test/API/commands/expression/namespace-alias/Makefile b/lldb/test/API/commands/expression/namespace-alias/Makefile deleted file mode 100644 index 99998b20bcb05..0000000000000 --- a/lldb/test/API/commands/expression/namespace-alias/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -CXX_SOURCES := main.cpp - -include Makefile.rules diff --git a/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py b/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py deleted file mode 100644 index 9d014dac02648..0000000000000 --- a/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -Test that we correctly handle namespace -expression evaluation through namespace -aliases. -""" - -import lldb - -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -class TestInlineNamespace(TestBase): - def test(self): - self.build() - - lldbutil.run_to_source_breakpoint(self, - "return A::B::C::a", lldb.SBFileSpec("main.cpp")) - - self.expect_expr("A::C::a", result_type="int", result_value="-1") - self.expect_expr("A::D::a", result_type="int", result_value="-1") - - self.expect_expr("A::C::func()", result_type="int", result_value="0") - self.expect_expr("A::D::func()", result_type="int", result_value="0") - - self.expect_expr("E::C::a", result_type="int", result_value="-1") - self.expect_expr("E::D::a", result_type="int", result_value="-1") - self.expect_expr("F::a", result_type="int", result_value="-1") - self.expect_expr("G::a", result_type="int", result_value="-1") diff --git a/lldb/test/API/commands/expression/namespace-alias/main.cpp b/lldb/test/API/commands/expression/namespace-alias/main.cpp deleted file mode 100644 index b35efda11c8cf..0000000000000 --- a/lldb/test/API/commands/expression/namespace-alias/main.cpp +++ /dev/null @@ -1,21 +0,0 @@ -namespace A { -inline namespace _A { -namespace B { -namespace C { -int a = -1; - -int func() { return 0; } -} // namespace C -} // namespace B - -namespace C = B::C; -namespace D = B::C; - -} // namespace _A -} // namespace A - -namespace E = A; -namespace F = E::C; -namespace G = F; - -int main(int argc, char **argv) { return A::B::C::a; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits