https://github.com/why-does-ie-still-exist created https://github.com/llvm/llvm-project/pull/212700
The --background-index-priority CLI option was not wired correctly, leading to it being always 'low' even when otherwise specified. >From 2f12b4c95e0387019c49265084cad825cedd266c Mon Sep 17 00:00:00 2001 From: Michael <[email protected]> Date: Wed, 29 Jul 2026 00:34:06 -0700 Subject: [PATCH] [clangd] Respect background index priority The --background-index-priority CLI option was not wired correctly, leading to it being always 'low' even when otherwise specified. --- clang-tools-extra/clangd/ClangdServer.cpp | 14 ++++++++++---- clang-tools-extra/clangd/ClangdServer.h | 1 + clang-tools-extra/clangd/unittests/ClangdTests.cpp | 10 ++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp index 37eb82116f3a9..a176d8b2022e1 100644 --- a/clang-tools-extra/clangd/ClangdServer.cpp +++ b/clang-tools-extra/clangd/ClangdServer.cpp @@ -211,6 +211,15 @@ ClangdServer::Options::operator TUScheduler::Options() const { return Opts; } +ClangdServer::Options::operator BackgroundIndex::Options() const { + BackgroundIndex::Options Opts; + Opts.ThreadPoolSize = std::max(AsyncThreadsCount, 1u); + Opts.IndexingPriority = BackgroundIndexPriority; + Opts.ContextProvider = ContextProvider; + Opts.SupportContainedRefs = EnableOutgoingCalls; + return Opts; +} + ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB, const ThreadsafeFS &TFS, const Options &Opts, Callbacks *Callbacks) @@ -253,14 +262,11 @@ ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB, if (Opts.StaticIndex) AddIndex(Opts.StaticIndex); if (Opts.BackgroundIndex) { - BackgroundIndex::Options BGOpts; - BGOpts.ThreadPoolSize = std::max(Opts.AsyncThreadsCount, 1u); + BackgroundIndex::Options BGOpts(Opts); BGOpts.OnProgress = [Callbacks](BackgroundQueue::Stats S) { if (Callbacks) Callbacks->onBackgroundIndexProgress(S); }; - BGOpts.ContextProvider = Opts.ContextProvider; - BGOpts.SupportContainedRefs = Opts.EnableOutgoingCalls; BackgroundIdx = std::make_unique<BackgroundIndex>( TFS, CDB, BackgroundIndexStorage::createDiskBackedStorageFactory( diff --git a/clang-tools-extra/clangd/ClangdServer.h b/clang-tools-extra/clangd/ClangdServer.h index 264ab7437c248..125aa761619bb 100644 --- a/clang-tools-extra/clangd/ClangdServer.h +++ b/clang-tools-extra/clangd/ClangdServer.h @@ -203,6 +203,7 @@ class ClangdServer { bool PublishInactiveRegions = false; explicit operator TUScheduler::Options() const; + explicit operator BackgroundIndex::Options() const; }; // Sensible default options for use in tests. // Features like indexing must be enabled if desired. diff --git a/clang-tools-extra/clangd/unittests/ClangdTests.cpp b/clang-tools-extra/clangd/unittests/ClangdTests.cpp index 9ea7c3e02411d..6e99d7f2583b6 100644 --- a/clang-tools-extra/clangd/unittests/ClangdTests.cpp +++ b/clang-tools-extra/clangd/unittests/ClangdTests.cpp @@ -1361,6 +1361,16 @@ int endPreamble; Source.range("inactive3"), Source.range("inactive4")))); } +TEST(ClangdServer, BackgroundIndexPriorityPropagatesToIndexingThreads) { + auto Opts = ClangdServer::optsForTest(); + for (auto Priority : + {llvm::ThreadPriority::Background, llvm::ThreadPriority::Low, + llvm::ThreadPriority::Default}) { + Opts.BackgroundIndexPriority = Priority; + EXPECT_EQ(BackgroundIndex::Options(Opts).IndexingPriority, Priority); + } +} + } // namespace } // namespace clangd } // namespace clang _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
