[lldb][NFC] Early-exit in SetupDeclVendor

Also removed the unnecessary element-by-element copy of the std::vector
hand_imported_modules to modules_for_macros.
This commit is contained in:
Raphael Isemann
2020-05-13 15:56:51 +02:00
parent 53cc90f789
commit 5f7a5e3bdb

View File

@@ -348,37 +348,37 @@ bool ClangUserExpression::SetupPersistentState(DiagnosticManager &diagnostic_man
}
static void SetupDeclVendor(ExecutionContext &exe_ctx, Target *target) {
if (ClangModulesDeclVendor *decl_vendor =
target->GetClangModulesDeclVendor()) {
auto *persistent_state = llvm::cast<ClangPersistentVariables>(
target->GetPersistentExpressionStateForLanguage(lldb::eLanguageTypeC));
if (!persistent_state)
return;
const ClangModulesDeclVendor::ModuleVector &hand_imported_modules =
persistent_state->GetHandLoadedClangModules();
ClangModulesDeclVendor::ModuleVector modules_for_macros;
ClangModulesDeclVendor *decl_vendor = target->GetClangModulesDeclVendor();
if (!decl_vendor)
return;
for (ClangModulesDeclVendor::ModuleID module : hand_imported_modules) {
modules_for_macros.push_back(module);
}
if (!target->GetEnableAutoImportClangModules())
return;
if (target->GetEnableAutoImportClangModules()) {
if (StackFrame *frame = exe_ctx.GetFramePtr()) {
if (Block *block = frame->GetFrameBlock()) {
SymbolContext sc;
auto *persistent_state = llvm::cast<ClangPersistentVariables>(
target->GetPersistentExpressionStateForLanguage(lldb::eLanguageTypeC));
if (!persistent_state)
return;
block->CalculateSymbolContext(&sc);
StackFrame *frame = exe_ctx.GetFramePtr();
if (!frame)
return;
if (sc.comp_unit) {
StreamString error_stream;
Block *block = frame->GetFrameBlock();
if (!block)
return;
SymbolContext sc;
decl_vendor->AddModulesForCompileUnit(
*sc.comp_unit, modules_for_macros, error_stream);
}
}
}
}
}
block->CalculateSymbolContext(&sc);
if (!sc.comp_unit)
return;
StreamString error_stream;
ClangModulesDeclVendor::ModuleVector modules_for_macros =
persistent_state->GetHandLoadedClangModules();
decl_vendor->AddModulesForCompileUnit(*sc.comp_unit, modules_for_macros,
error_stream);
}
void ClangUserExpression::UpdateLanguageForExpr() {