Author: Jan Svoboda Date: 2023-03-02T13:50:08-08:00 New Revision: 9679075a1ae6a20ed102597bf166b3f3adc95499
URL: https://github.com/llvm/llvm-project/commit/9679075a1ae6a20ed102597bf166b3f3adc95499 DIFF: https://github.com/llvm/llvm-project/commit/9679075a1ae6a20ed102597bf166b3f3adc95499.diff LOG: [clang][deps] NFC: Simplify worker loop This patch simplifies the loop inside each worker by extracting index retrieval into a lambda function. Reviewed By: benlangmuir Differential Revision: https://reviews.llvm.org/D145101 Added: Modified: clang/tools/clang-scan-deps/ClangScanDeps.cpp Removed: ################################################################################ diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp index f200c8d6d8b71..2f0c4858c4c97 100644 --- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp +++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp @@ -783,8 +783,15 @@ int main(int argc, const char **argv) { std::atomic<bool> HadErrors(false); std::optional<FullDeps> FD; P1689Deps PD; + std::mutex Lock; size_t Index = 0; + auto GetNextInputIndex = [&]() -> std::optional<size_t> { + std::unique_lock<std::mutex> LockGuard(Lock); + if (Index < Inputs.size()) + return Index++; + return {}; + }; if (Format == ScanningOutputFormat::Full) FD.emplace(ModuleName.empty() ? Inputs.size() : 0); @@ -794,24 +801,14 @@ int main(int argc, const char **argv) { << " files using " << Pool.getThreadCount() << " workers\n"; } for (unsigned I = 0; I < Pool.getThreadCount(); ++I) { - Pool.async([I, &Lock, &Index, &Inputs, &HadErrors, &FD, &PD, &WorkerTools, - &DependencyOS, &Errs]() { + Pool.async([&, I]() { llvm::StringSet<> AlreadySeenModules; - while (true) { - const tooling::CompileCommand *Input; - std::string Filename; - std::string CWD; - size_t LocalIndex; - // Take the next input. - { - std::unique_lock<std::mutex> LockGuard(Lock); - if (Index >= Inputs.size()) - return; - LocalIndex = Index; - Input = &Inputs[Index++]; - Filename = std::move(Input->Filename); - CWD = std::move(Input->Directory); - } + while (auto MaybeInputIndex = GetNextInputIndex()) { + size_t LocalIndex = *MaybeInputIndex; + const tooling::CompileCommand *Input = &Inputs[LocalIndex]; + std::string Filename = std::move(Input->Filename); + std::string CWD = std::move(Input->Directory); + std::optional<StringRef> MaybeModuleName; if (!ModuleName.empty()) MaybeModuleName = ModuleName; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits