[PATCH] D66357: Fix GetDIEForDeclContext so it only returns entries matching the provided context
Pavel Labath via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 29 08:31:15 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL370374: Fix GetDIEForDeclContext so it only returns entries matching the provided… (authored by labath, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D66357?vs=216166&id=217891#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66357/new/
https://reviews.llvm.org/D66357
Files:
lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
lldb/trunk/unittests/SymbolFile/DWARF/CMakeLists.txt
lldb/trunk/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
Index: lldb/trunk/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
===================================================================
--- lldb/trunk/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
+++ lldb/trunk/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
@@ -0,0 +1,47 @@
+//===-- DWARFASTParserClangTests.cpp ----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "gtest/gtest.h"
+
+#include "Plugins/SymbolFile/DWARF/DWARFASTParserClang.h"
+#include "Plugins/SymbolFile/DWARF/DWARFDIE.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+namespace {
+class DWARFASTParserClangStub : public DWARFASTParserClang {
+public:
+ using DWARFASTParserClang::DWARFASTParserClang;
+ using DWARFASTParserClang::LinkDeclContextToDIE;
+};
+} // namespace
+
+// If your implementation needs to dereference the dummy pointers we are
+// defining here, causing this test to fail, feel free to delete it.
+TEST(DWARFASTParserClangTests,
+ TestGetDIEForDeclContextReturnsOnlyMatchingEntries) {
+ ClangASTContext ast_ctx;
+ DWARFASTParserClangStub ast_parser(ast_ctx);
+
+ DWARFUnit *unit = nullptr;
+ DWARFDIE die1(unit, (DWARFDebugInfoEntry *)1LL);
+ DWARFDIE die2(unit, (DWARFDebugInfoEntry *)2LL);
+ DWARFDIE die3(unit, (DWARFDebugInfoEntry *)3LL);
+ DWARFDIE die4(unit, (DWARFDebugInfoEntry *)4LL);
+ ast_parser.LinkDeclContextToDIE((clang::DeclContext *)1LL, die1);
+ ast_parser.LinkDeclContextToDIE((clang::DeclContext *)2LL, die2);
+ ast_parser.LinkDeclContextToDIE((clang::DeclContext *)2LL, die3);
+ ast_parser.LinkDeclContextToDIE((clang::DeclContext *)3LL, die4);
+
+ auto die_list = ast_parser.GetDIEForDeclContext(
+ CompilerDeclContext(nullptr, (clang::DeclContext *)2LL));
+ ASSERT_EQ(2u, die_list.size());
+ ASSERT_EQ(die2, die_list[0]);
+ ASSERT_EQ(die3, die_list[1]);
+}
Index: lldb/trunk/unittests/SymbolFile/DWARF/CMakeLists.txt
===================================================================
--- lldb/trunk/unittests/SymbolFile/DWARF/CMakeLists.txt
+++ lldb/trunk/unittests/SymbolFile/DWARF/CMakeLists.txt
@@ -1,4 +1,5 @@
add_lldb_unittest(SymbolFileDWARFTests
+ DWARFASTParserClangTests.cpp
SymbolFileDWARFTests.cpp
LINK_LIBS
Index: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
===================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -2186,9 +2186,10 @@
std::vector<DWARFDIE> DWARFASTParserClang::GetDIEForDeclContext(
lldb_private::CompilerDeclContext decl_context) {
std::vector<DWARFDIE> result;
- for (auto it = m_decl_ctx_to_die.find(
- (clang::DeclContext *)decl_context.GetOpaqueDeclContext());
- it != m_decl_ctx_to_die.end(); it++)
+ auto opaque_decl_ctx =
+ (clang::DeclContext *)decl_context.GetOpaqueDeclContext();
+ for (auto it = m_decl_ctx_to_die.find(opaque_decl_ctx);
+ it != m_decl_ctx_to_die.end() && it->first == opaque_decl_ctx; it++)
result.push_back(it->second);
return result;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66357.217891.patch
Type: text/x-patch
Size: 3409 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190829/1d6db485/attachment.bin>
More information about the llvm-commits
mailing list