diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp --- a/clang-tools-extra/clangd/ClangdServer.cpp +++ b/clang-tools-extra/clangd/ClangdServer.cpp @@ -43,6 +43,7 @@ #include #include #include +#include namespace clang { namespace clangd { @@ -141,10 +142,19 @@ if (Opts.StaticIndex) AddIndex(Opts.StaticIndex); if (Opts.BackgroundIndex) { - BackgroundIdx = llvm::make_unique( - Context::current().clone(), FSProvider, CDB, - BackgroundIndexStorage::createDiskBackedStorageFactory( - [&CDB](llvm::StringRef File) { return CDB.getProjectInfo(File); })); + auto&& DBSF = BackgroundIndexStorage::createDiskBackedStorageFactory( + [&CDB](llvm::StringRef File) { return CDB.getProjectInfo(File); }); + + if (Opts.AsyncThreadsCount) { + BackgroundIdx = llvm::make_unique( + Context::current().clone(), FSProvider, CDB, + std::forward(DBSF), + Opts.AsyncThreadsCount ); + } else { + BackgroundIdx = llvm::make_unique( + Context::current().clone(), FSProvider, CDB, + std::forward( DBSF ) ); + } AddIndex(BackgroundIdx.get()); } if (DynamicIdx) diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp --- a/clang-tools-extra/clangd/tool/ClangdMain.cpp +++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp @@ -308,7 +308,7 @@ opt Sync{ "sync", cat(Misc), - desc("Parse on main thread. If set, -j is ignored"), + desc("Parse on main thread. If set, -j is only applied to background index"), init(false), Hidden, };