[DWARF5] Only fallback to manual index if no entry was found

If we succeed at gathering global variables for a compile
unit, there is no need to fallback to generating a manual index.

Reviewed By: jankratochvil

Differential Revision: https://reviews.llvm.org/D106355
This commit is contained in:
Kim-Anh Tran 2021-07-29 15:30:25 +02:00 committed by Jan Kratochvil
parent 416f3ff803
commit 2e9853e0e9
1 changed files with 6 additions and 2 deletions

View File

@ -125,6 +125,7 @@ void DebugNamesDWARFIndex::GetGlobalVariables(
void DebugNamesDWARFIndex::GetGlobalVariables(
const DWARFUnit &cu, llvm::function_ref<bool(DWARFDIE die)> callback) {
uint64_t cu_offset = cu.GetOffset();
bool found_entry_for_cu = false;
for (const DebugNames::NameIndex &ni: *m_debug_names_up) {
for (DebugNames::NameTableEntry nte: ni) {
uint64_t entry_offset = nte.getEntryOffset();
@ -135,6 +136,7 @@ void DebugNamesDWARFIndex::GetGlobalVariables(
if (entry_or->getCUOffset() != cu_offset)
continue;
found_entry_for_cu = true;
if (!ProcessEntry(*entry_or, callback,
llvm::StringRef(nte.getString())))
return;
@ -142,8 +144,10 @@ void DebugNamesDWARFIndex::GetGlobalVariables(
MaybeLogLookupError(entry_or.takeError(), ni, nte.getString());
}
}
m_fallback.GetGlobalVariables(cu, callback);
// If no name index for that particular CU was found, fallback to
// creating the manual index.
if (!found_entry_for_cu)
m_fallback.GetGlobalVariables(cu, callback);
}
void DebugNamesDWARFIndex::GetCompleteObjCClass(