From e031ada154ba94e13af104a1e32be0f94754ba12 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 18 Jun 2019 18:26:27 +0200 Subject: Clang: Watch only PCH sources We watched all sources but we do not want to watch the sources of the project part because they are not used to build a PCH. Change-Id: I700cd6077fc54230c9be94d620043cf3f10cf9ea Reviewed-by: Tim Jenssen --- .../clangpchmanagerbackend/source/builddependenciesstorage.h | 11 ++++++----- .../source/builddependenciesstorageinterface.h | 2 +- src/tools/clangpchmanagerbackend/source/pchcreator.cpp | 9 ++++----- src/tools/clangpchmanagerbackend/source/usedmacrofilter.h | 5 ++++- src/tools/clangrefactoringbackend/source/symbolindexer.cpp | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) (limited to 'src/tools') diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h index 8c8c51a6cd..187a27cf89 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h @@ -66,10 +66,9 @@ public: } } - FilePathIds fetchSources(ProjectPartId projectPartId) const override + FilePathIds fetchPchSources(ProjectPartId projectPartId) const override { - return fetchProjectPartsFilesStatement.template values(1024, - projectPartId.projectPathId); + return fetchPchSourcesStatement.template values(1024, projectPartId.projectPathId); } void insertOrUpdateFileStatuses(const FileStatuses &fileStatuses) override @@ -252,8 +251,10 @@ public: "CONFLICT(sourceId, projectPartId) DO UPDATE SET sourceType = ?003, " "hasMissingIncludes = ?004", database}; - mutable ReadStatement fetchProjectPartsFilesStatement{ - "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? ORDER BY sourceId", database}; + mutable ReadStatement fetchPchSourcesStatement{ + "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? AND sourceType IN (0, 1, " + "3, 4) ORDER BY sourceId", + database}; mutable ReadStatement fetchSourceDependenciesStatement{ "WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION " "SELECT dependencySourceId FROM sourceDependencies, " diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h index 1166564b32..a1c20811aa 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h @@ -56,7 +56,7 @@ public: virtual UsedMacros fetchUsedMacros(FilePathId sourceId) const = 0; virtual ProjectPartId fetchProjectPartId(Utils::SmallStringView projectPartName) = 0; virtual void updatePchCreationTimeStamp(long long pchCreationTimeStamp, ProjectPartId projectPartId) = 0; - virtual FilePathIds fetchSources(ProjectPartId projectPartId) const = 0; + virtual FilePathIds fetchPchSources(ProjectPartId projectPartId) const = 0; protected: ~BuildDependenciesStorageInterface() = default; diff --git a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp index cd7b492868..15c9a19547 100644 --- a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp @@ -114,7 +114,7 @@ void PchCreator::generatePch(PchTask &&pchTask) { m_projectPartPch.projectPartId = pchTask.projectPartId(); m_projectPartPch.lastModified = QDateTime::currentSecsSinceEpoch(); - + m_sources = std::move(pchTask.sources); if (pchTask.includes.empty()) return; @@ -127,10 +127,9 @@ void PchCreator::generatePch(PchTask &&pchTask) m_clangTool.addFile(std::move(headerFilePath), content.clone(), std::move(commandLine)); bool success = generatePch(NativeFilePath{headerFilePath}, content); - if (success) { - m_sources = pchTask.sources; - m_projectPartPch.pchPath = std::move(pchOutputPath); - } + + if (success) + m_projectPartPch.pchPath = std::move(pchOutputPath); } const ProjectPartPch &PchCreator::projectPartPch() diff --git a/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h b/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h index 9db3c683b9..2d16b484a1 100644 --- a/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h +++ b/src/tools/clangpchmanagerbackend/source/usedmacrofilter.h @@ -128,23 +128,26 @@ private: case SourceType::TopSystemInclude: topSystemIncludes.emplace_back(source.sourceId); systemIncludes.emplace_back(source.sourceId); + sources.emplace_back(source.sourceId); break; case SourceType::SystemInclude: systemIncludes.emplace_back(source.sourceId); + sources.emplace_back(source.sourceId); break; case SourceType::TopProjectInclude: topProjectIncludes.emplace_back(source.sourceId); projectIncludes.emplace_back(source.sourceId); + sources.emplace_back(source.sourceId); break; case SourceType::ProjectInclude: projectIncludes.emplace_back(source.sourceId); + sources.emplace_back(source.sourceId); break; case SourceType::UserInclude: case SourceType::Source: break; } - sources.emplace_back(source.sourceId); } static Utils::SmallStringVector filterUsedMarcos(const UsedMacros &usedMacros, diff --git a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp index 299088aa4b..4f3a6f172f 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp @@ -145,7 +145,7 @@ void SymbolIndexer::updateProjectPart(ProjectPartContainer &&projectPart) } m_pathWatcher.updateIdPaths( - {{projectPartId, m_buildDependencyStorage.fetchSources(projectPartId)}}); + {{projectPartId, m_buildDependencyStorage.fetchPchSources(projectPartId)}}); m_symbolIndexerTaskQueue.addOrUpdateTasks(std::move(symbolIndexerTask)); m_symbolIndexerTaskQueue.processEntries(); } -- cgit v1.2.3