From: Jan Svoboda Date: Sat, 12 Mar 2022 10:42:04 +0000 (+0100) Subject: [clang][deps] Remove '-fmodules-cache-path=' arguments X-Git-Tag: upstream/15.0.7~13856 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cf4a31fc0f9745dabbd7d9cba56a6a9045a026d0;p=platform%2Fupstream%2Fllvm.git [clang][deps] Remove '-fmodules-cache-path=' arguments With explicit modules build, the '-fmodules-cache-path=' argument is unused. This patch removes the argument to avoid warnings or errors (with '-Werror') stemming from that. Depends on D118915. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D120474 --- diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp index 06d39c2..55d2c48 100644 --- a/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp +++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp @@ -31,7 +31,13 @@ FullDependencies::getCommandLineWithoutModulePaths() const { getAdditionalArgsWithoutModulePaths(); Args.insert(Args.end(), AdditionalArgs.begin(), AdditionalArgs.end()); - // TODO: Filter out implicit modules leftovers (e.g. "-fmodules-cache-path="). + // This argument is unused in explicit compiles. + llvm::erase_if(Args, [](const std::string &Arg) { + return Arg.find("-fmodules-cache-path=") == 0; + }); + + // TODO: Filter out the remaining implicit modules leftovers + // (e.g. "-fmodules-prune-interval=" or "-fmodules-prune-after="). return Args; } diff --git a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp index ed18a11..4d70b0c 100644 --- a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp +++ b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp @@ -51,6 +51,7 @@ CompilerInvocation ModuleDepCollector::makeInvocationForModuleBuildWithoutPaths( CI.getLangOpts()->ImplicitModules = false; CI.getHeaderSearchOpts().ImplicitModuleMaps = false; + CI.getHeaderSearchOpts().ModuleCachePath.clear(); // Report the prebuilt modules this module uses. for (const auto &PrebuiltModule : Deps.PrebuiltModuleDeps) diff --git a/clang/test/ClangScanDeps/modules-inferred-explicit-build.m b/clang/test/ClangScanDeps/modules-inferred-explicit-build.m index 09101ff..5321a13 100644 --- a/clang/test/ClangScanDeps/modules-inferred-explicit-build.m +++ b/clang/test/ClangScanDeps/modules-inferred-explicit-build.m @@ -12,7 +12,7 @@ // RUN: %python %S/../../utils/module-deps-to-rsp.py %t.db --tu-index=0 > %t.tu.rsp // RUN: %clang @%t.inferred.cc1.rsp -pedantic -Werror // RUN: %clang @%t.system.cc1.rsp -pedantic -Werror -// RUN: %clang @%t.tu.rsp -pedantic -Werror -Wno-unused-command-line-argument +// RUN: %clang @%t.tu.rsp -pedantic -Werror #include #include diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp index 8d70808..8b6697f 100644 --- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp +++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp @@ -374,11 +374,11 @@ private: const ModuleDeps &MD = MDIt->second; StringRef Filename = llvm::sys::path::filename(MD.ImplicitModulePCMPath); + StringRef ModuleCachePath = llvm::sys::path::parent_path( + llvm::sys::path::parent_path(MD.ImplicitModulePCMPath)); - SmallString<256> ExplicitPCMPath( - !ModuleFilesDir.empty() - ? ModuleFilesDir - : MD.BuildInvocation.getHeaderSearchOpts().ModuleCachePath); + SmallString<256> ExplicitPCMPath(!ModuleFilesDir.empty() ? ModuleFilesDir + : ModuleCachePath); llvm::sys::path::append(ExplicitPCMPath, MD.ID.ContextHash, Filename); return std::string(ExplicitPCMPath); }