================
@@ -1235,6 +1243,39 @@ void 
ModulesBuilder::ModulesBuilderImpl::getPrebuiltModuleFile(
   }
 }
 
+bool ModulesBuilder::ModulesBuilderImpl::hasNewerDependency(
+    StringRef ModuleName, PathRef PublishedModuleFilePath,
+    PathRef RequiredSource, PathRef ModuleUnitFileName,
+    CachingProjectModules &MDB) {
+  std::vector<std::string> Deps = MDB.getRequiredModules(ModuleUnitFileName);
+  if (Deps.empty())
+    return false;
+
+  llvm::sys::fs::file_status Status;
+  // Without a published module file there is nothing to compare against, so
+  // treat any cached copy as stale.
+  if (llvm::sys::fs::status(PublishedModuleFilePath, Status))
+    return true;
+  const auto ModuleTime = Status.getLastModificationTime();
+
+  return llvm::any_of(Deps, [&](const std::string &Dep) {
+    std::string DepSource = MDB.getSourceForModuleName(Dep, RequiredSource);
----------------
ArcsinX wrote:

Why do we use `RequiredSource` here? `Dep` is required by `ModuleUnitFileName`, 
so I expect `ModuleUnitFileName`, but no `RequiredSource` (which doesn't import 
`Dep`)

https://github.com/llvm/llvm-project/pull/234181
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to