Skip to content

[clang][modules][deps] Optimize in-process timestamping of PCMs #137363

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 7, 2025

Conversation

jansvoboda11
Copy link
Contributor

In the past, timestamps used for -fmodules-validate-once-per-build-session were found to be a source of contention in the dependency scanner (D149802, #112452). This PR is yet another attempt to optimize these. We now make use of the new ModuleCache interface to implement the in-process version in terms of atomic std::time_t variables rather the mtime attribute on .timestamp files.

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:modules C++20 modules and Clang Header Modules labels Apr 25, 2025
@jansvoboda11
Copy link
Contributor Author

CC @artemcm

@llvmbot
Copy link
Member

llvmbot commented Apr 25, 2025

@llvm/pr-subscribers-clang-modules

@llvm/pr-subscribers-clang

Author: Jan Svoboda (jansvoboda11)

Changes

In the past, timestamps used for -fmodules-validate-once-per-build-session were found to be a source of contention in the dependency scanner (D149802, #112452). This PR is yet another attempt to optimize these. We now make use of the new ModuleCache interface to implement the in-process version in terms of atomic std::time_t variables rather the mtime attribute on .timestamp files.


Full diff: https://github.com/llvm/llvm-project/pull/137363.diff

12 Files Affected:

  • (modified) clang/include/clang/Serialization/ModuleCache.h (+15-1)
  • (modified) clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h (+11-4)
  • (modified) clang/include/clang/Tooling/DependencyScanning/InProcessModuleCache.h (+8-3)
  • (modified) clang/lib/Serialization/ASTCommon.cpp (-12)
  • (modified) clang/lib/Serialization/ASTCommon.h (-2)
  • (modified) clang/lib/Serialization/ASTReader.cpp (+2-1)
  • (modified) clang/lib/Serialization/ASTWriter.cpp (+1-1)
  • (modified) clang/lib/Serialization/ModuleCache.cpp (+23)
  • (modified) clang/lib/Serialization/ModuleManager.cpp (+3-9)
  • (modified) clang/lib/Tooling/DependencyScanning/DependencyScanningService.cpp (+4-2)
  • (modified) clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp (+5-1)
  • (modified) clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp (+39-11)
diff --git a/clang/include/clang/Serialization/ModuleCache.h b/clang/include/clang/Serialization/ModuleCache.h
index a7ba26bc4daae..3117d954a09cc 100644
--- a/clang/include/clang/Serialization/ModuleCache.h
+++ b/clang/include/clang/Serialization/ModuleCache.h
@@ -12,6 +12,8 @@
 #include "clang/Basic/LLVM.h"
 #include "llvm/ADT/IntrusiveRefCntPtr.h"
 
+#include <ctime>
+
 namespace llvm {
 class AdvisoryLock;
 } // namespace llvm
@@ -31,11 +33,23 @@ class ModuleCache : public RefCountedBase<ModuleCache> {
   virtual std::unique_ptr<llvm::AdvisoryLock>
   getLock(StringRef ModuleFilename) = 0;
 
+  // TODO: Abstract away timestamps with isUpToDate() and markUpToDate().
+  // TODO: Consider exposing a "validation lock" API to prevent multiple clients
+  // concurrently noticing an out-of-date module file and validating its inputs.
+
+  /// Returns the timestamp denoting the last time inputs of the module file
+  /// were validated.
+  virtual std::time_t getModuleTimestamp(StringRef ModuleFilename) = 0;
+
+  /// Updates the timestamp denoting the last time inputs of the module file
+  /// were validated.
+  virtual void updateModuleTimestamp(StringRef ModuleFilename) = 0;
+
   /// Returns this process's view of the module cache.
   virtual InMemoryModuleCache &getInMemoryModuleCache() = 0;
   virtual const InMemoryModuleCache &getInMemoryModuleCache() const = 0;
 
-  // TODO: Virtualize writing/reading PCM files, timestamping, pruning, etc.
+  // TODO: Virtualize writing/reading PCM files, pruning, etc.
 
   virtual ~ModuleCache() = default;
 };
diff --git a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
index 5e8b37e791383..4e97c7bc9f36e 100644
--- a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
+++ b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h
@@ -12,6 +12,7 @@
 #include "clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h"
 #include "clang/Tooling/DependencyScanning/InProcessModuleCache.h"
 #include "llvm/ADT/BitmaskEnum.h"
+#include "llvm/Support/Chrono.h"
 
 namespace clang {
 namespace tooling {
@@ -84,7 +85,9 @@ class DependencyScanningService {
   DependencyScanningService(
       ScanningMode Mode, ScanningOutputFormat Format,
       ScanningOptimizations OptimizeArgs = ScanningOptimizations::Default,
-      bool EagerLoadModules = false, bool TraceVFS = false);
+      bool EagerLoadModules = false, bool TraceVFS = false,
+      std::time_t BuildSessionTimestamp =
+          llvm::sys::toTimeT(std::chrono::system_clock::now()));
 
   ScanningMode getMode() const { return Mode; }
 
@@ -100,7 +103,9 @@ class DependencyScanningService {
     return SharedCache;
   }
 
-  ModuleCacheMutexes &getModuleCacheMutexes() { return ModCacheMutexes; }
+  ModuleCacheEntries &getModuleCacheEntries() { return ModCacheEntries; }
+
+  std::time_t getBuildSessionTimestamp() const { return BuildSessionTimestamp; }
 
 private:
   const ScanningMode Mode;
@@ -113,8 +118,10 @@ class DependencyScanningService {
   const bool TraceVFS;
   /// The global file system cache.
   DependencyScanningFilesystemSharedCache SharedCache;
-  /// The global module cache mutexes.
-  ModuleCacheMutexes ModCacheMutexes;
+  /// The global module cache entries.
+  ModuleCacheEntries ModCacheEntries;
+  /// The build session timestamp.
+  std::time_t BuildSessionTimestamp;
 };
 
 } // end namespace dependencies
diff --git a/clang/include/clang/Tooling/DependencyScanning/InProcessModuleCache.h b/clang/include/clang/Tooling/DependencyScanning/InProcessModuleCache.h
index ba0454380b665..213e60b39c199 100644
--- a/clang/include/clang/Tooling/DependencyScanning/InProcessModuleCache.h
+++ b/clang/include/clang/Tooling/DependencyScanning/InProcessModuleCache.h
@@ -18,13 +18,18 @@
 namespace clang {
 namespace tooling {
 namespace dependencies {
-struct ModuleCacheMutexes {
+struct ModuleCacheEntry {
+  std::shared_mutex CompilationMutex;
+  std::atomic<std::time_t> Timestamp = 0;
+};
+
+struct ModuleCacheEntries {
   std::mutex Mutex;
-  llvm::StringMap<std::unique_ptr<std::shared_mutex>> Map;
+  llvm::StringMap<std::unique_ptr<ModuleCacheEntry>> Map;
 };
 
 IntrusiveRefCntPtr<ModuleCache>
-makeInProcessModuleCache(ModuleCacheMutexes &Mutexes);
+makeInProcessModuleCache(ModuleCacheEntries &Entries);
 } // namespace dependencies
 } // namespace tooling
 } // namespace clang
diff --git a/clang/lib/Serialization/ASTCommon.cpp b/clang/lib/Serialization/ASTCommon.cpp
index 320ee0e65dbea..ad277f19711ff 100644
--- a/clang/lib/Serialization/ASTCommon.cpp
+++ b/clang/lib/Serialization/ASTCommon.cpp
@@ -510,15 +510,3 @@ bool serialization::needsAnonymousDeclarationNumber(const NamedDecl *D) {
     return false;
   return isa<TagDecl, FieldDecl>(D);
 }
-
-void serialization::updateModuleTimestamp(StringRef ModuleFilename) {
-  // Overwrite the timestamp file contents so that file's mtime changes.
-  std::error_code EC;
-  llvm::raw_fd_ostream OS(ModuleFile::getTimestampFilename(ModuleFilename), EC,
-                          llvm::sys::fs::OF_TextWithCRLF);
-  if (EC)
-    return;
-  OS << "Timestamp file\n";
-  OS.close();
-  OS.clear_error(); // Avoid triggering a fatal error.
-}
diff --git a/clang/lib/Serialization/ASTCommon.h b/clang/lib/Serialization/ASTCommon.h
index 7c9ec884ea049..2bc8cc26707bf 100644
--- a/clang/lib/Serialization/ASTCommon.h
+++ b/clang/lib/Serialization/ASTCommon.h
@@ -100,8 +100,6 @@ inline bool isPartOfPerModuleInitializer(const Decl *D) {
   return false;
 }
 
-void updateModuleTimestamp(StringRef ModuleFilename);
-
 } // namespace serialization
 
 } // namespace clang
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index f13a173ec933e..d3711160412d0 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -4934,7 +4934,8 @@ ASTReader::ASTReadResult ASTReader::ReadAST(StringRef FileName, ModuleKind Type,
       ImportedModule &M = Loaded[I];
       if (M.Mod->Kind == MK_ImplicitModule &&
           M.Mod->InputFilesValidationTimestamp < HSOpts.BuildSessionTimestamp)
-        updateModuleTimestamp(M.Mod->FileName);
+        getModuleManager().getModuleCache().updateModuleTimestamp(
+            M.Mod->FileName);
     }
   }
 
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index bea8fd5055358..5707e2b685868 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -5394,7 +5394,7 @@ ASTWriter::WriteAST(llvm::PointerUnion<Sema *, Preprocessor *> Subject,
   if (WritingModule && PPRef.getHeaderSearchInfo()
                            .getHeaderSearchOpts()
                            .ModulesValidateOncePerBuildSession)
-    updateModuleTimestamp(OutputFile);
+    ModCache.updateModuleTimestamp(OutputFile);
 
   if (ShouldCacheASTInMemory) {
     // Construct MemoryBuffer and update buffer manager.
diff --git a/clang/lib/Serialization/ModuleCache.cpp b/clang/lib/Serialization/ModuleCache.cpp
index 955e5f322bcc3..3ffd16fd3f7d0 100644
--- a/clang/lib/Serialization/ModuleCache.cpp
+++ b/clang/lib/Serialization/ModuleCache.cpp
@@ -9,6 +9,7 @@
 #include "clang/Serialization/ModuleCache.h"
 
 #include "clang/Serialization/InMemoryModuleCache.h"
+#include "clang/Serialization/ModuleFile.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/LockFileManager.h"
 #include "llvm/Support/Path.h"
@@ -32,6 +33,28 @@ class CrossProcessModuleCache : public ModuleCache {
     return std::make_unique<llvm::LockFileManager>(ModuleFilename);
   }
 
+  std::time_t getModuleTimestamp(StringRef ModuleFilename) override {
+    std::string TimestampFilename =
+        serialization::ModuleFile::getTimestampFilename(ModuleFilename);
+    llvm::sys::fs::file_status Status;
+    if (llvm::sys::fs::status(ModuleFilename, Status) != std::error_code{})
+      return {};
+    return llvm::sys::toTimeT(Status.getLastModificationTime());
+  }
+
+  void updateModuleTimestamp(StringRef ModuleFilename) override {
+    // Overwrite the timestamp file contents so that file's mtime changes.
+    std::error_code EC;
+    llvm::raw_fd_ostream OS(
+        serialization::ModuleFile::getTimestampFilename(ModuleFilename), EC,
+        llvm::sys::fs::OF_TextWithCRLF);
+    if (EC)
+      return;
+    OS << "Timestamp file\n";
+    OS.close();
+    OS.clear_error(); // Avoid triggering a fatal error.
+  }
+
   InMemoryModuleCache &getInMemoryModuleCache() override { return InMemory; }
   const InMemoryModuleCache &getInMemoryModuleCache() const override {
     return InMemory;
diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp
index d466ea06301a6..e3d7ff4fd82a7 100644
--- a/clang/lib/Serialization/ModuleManager.cpp
+++ b/clang/lib/Serialization/ModuleManager.cpp
@@ -174,15 +174,9 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type,
   NewModule->ImportLoc = ImportLoc;
   NewModule->InputFilesValidationTimestamp = 0;
 
-  if (NewModule->Kind == MK_ImplicitModule) {
-    std::string TimestampFilename =
-        ModuleFile::getTimestampFilename(NewModule->FileName);
-    llvm::vfs::Status Status;
-    // A cached stat value would be fine as well.
-    if (!FileMgr.getNoncachedStatValue(TimestampFilename, Status))
-      NewModule->InputFilesValidationTimestamp =
-          llvm::sys::toTimeT(Status.getLastModificationTime());
-  }
+  if (NewModule->Kind == MK_ImplicitModule)
+    NewModule->InputFilesValidationTimestamp =
+        ModCache->getModuleTimestamp(NewModule->FileName);
 
   // Load the contents of the module
   if (std::unique_ptr<llvm::MemoryBuffer> Buffer = lookupBuffer(FileName)) {
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningService.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningService.cpp
index 96fe40c079c65..7f40c99f07287 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningService.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningService.cpp
@@ -14,6 +14,8 @@ using namespace dependencies;
 
 DependencyScanningService::DependencyScanningService(
     ScanningMode Mode, ScanningOutputFormat Format,
-    ScanningOptimizations OptimizeArgs, bool EagerLoadModules, bool TraceVFS)
+    ScanningOptimizations OptimizeArgs, bool EagerLoadModules, bool TraceVFS,
+    std::time_t BuildSessionTimestamp)
     : Mode(Mode), Format(Format), OptimizeArgs(OptimizeArgs),
-      EagerLoadModules(EagerLoadModules), TraceVFS(TraceVFS) {}
+      EagerLoadModules(EagerLoadModules), TraceVFS(TraceVFS),
+      BuildSessionTimestamp(BuildSessionTimestamp) {}
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
index 8e05a678fcdbc..95bd17a74be25 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
@@ -411,7 +411,7 @@ class DependencyScanningAction : public tooling::ToolAction {
     Scanned = true;
 
     // Create a compiler instance to handle the actual work.
-    auto ModCache = makeInProcessModuleCache(Service.getModuleCacheMutexes());
+    auto ModCache = makeInProcessModuleCache(Service.getModuleCacheEntries());
     ScanInstanceStorage.emplace(std::move(PCHContainerOps), ModCache.get());
     CompilerInstance &ScanInstance = *ScanInstanceStorage;
     ScanInstance.setInvocation(std::move(Invocation));
@@ -428,6 +428,10 @@ class DependencyScanningAction : public tooling::ToolAction {
     ScanInstance.getPreprocessorOpts().AllowPCHWithDifferentModulesCachePath =
         true;
 
+    if (ScanInstance.getHeaderSearchOpts().ModulesValidateOncePerBuildSession)
+      ScanInstance.getHeaderSearchOpts().BuildSessionTimestamp =
+          Service.getBuildSessionTimestamp();
+
     ScanInstance.getFrontendOpts().GenerateGlobalModuleIndex = false;
     ScanInstance.getFrontendOpts().UseGlobalModuleIndex = false;
     // This will prevent us compiling individual modules asynchronously since
diff --git a/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp b/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
index 71ce4d098932b..f65d0ec6aad68 100644
--- a/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
+++ b/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
@@ -10,6 +10,7 @@
 
 #include "clang/Serialization/InMemoryModuleCache.h"
 #include "llvm/Support/AdvisoryLock.h"
+#include "llvm/Support/Chrono.h"
 
 #include <mutex>
 
@@ -50,7 +51,7 @@ class ReaderWriterLock : public llvm::AdvisoryLock {
 };
 
 class InProcessModuleCache : public ModuleCache {
-  ModuleCacheMutexes &Mutexes;
+  ModuleCacheEntries &Entries;
 
   // TODO: If we changed the InMemoryModuleCache API and relied on strict
   // context hash, we could probably create more efficient thread-safe
@@ -59,19 +60,46 @@ class InProcessModuleCache : public ModuleCache {
   InMemoryModuleCache InMemory;
 
 public:
-  InProcessModuleCache(ModuleCacheMutexes &Mutexes) : Mutexes(Mutexes) {}
+  InProcessModuleCache(ModuleCacheEntries &Entries) : Entries(Entries) {}
 
   void prepareForGetLock(StringRef Filename) override {}
 
   std::unique_ptr<llvm::AdvisoryLock> getLock(StringRef Filename) override {
-    auto &Mtx = [&]() -> std::shared_mutex & {
-      std::lock_guard<std::mutex> Lock(Mutexes.Mutex);
-      auto &Mutex = Mutexes.Map[Filename];
-      if (!Mutex)
-        Mutex = std::make_unique<std::shared_mutex>();
-      return *Mutex;
+    auto &CompilationMutex = [&]() -> std::shared_mutex & {
+      std::lock_guard Lock(Entries.Mutex);
+      auto &Entry = Entries.Map[Filename];
+      if (!Entry)
+        Entry = std::make_unique<ModuleCacheEntry>();
+      return Entry->CompilationMutex;
     }();
-    return std::make_unique<ReaderWriterLock>(Mtx);
+    return std::make_unique<ReaderWriterLock>(CompilationMutex);
+  }
+
+  std::time_t getModuleTimestamp(StringRef Filename) override {
+    auto &Timestamp = [&]() -> std::atomic<std::time_t> & {
+      std::lock_guard Lock(Entries.Mutex);
+      auto &Entry = Entries.Map[Filename];
+      if (!Entry)
+        Entry = std::make_unique<ModuleCacheEntry>();
+      return Entry->Timestamp;
+    }();
+
+    return Timestamp.load();
+  }
+
+  void updateModuleTimestamp(StringRef Filename) override {
+    // Note: This essentially replaces FS contention with mutex contention.
+    auto &Timestamp = [&]() -> std::atomic<std::time_t> & {
+      std::lock_guard Lock(Entries.Mutex);
+      auto &Entry = Entries.Map[Filename];
+      if (!Entry)
+        Entry = std::make_unique<ModuleCacheEntry>();
+      return Entry->Timestamp;
+    }();
+
+    std::time_t Expected = 0;
+    std::time_t Now = llvm::sys::toTimeT(std::chrono::system_clock::now());
+    Timestamp.compare_exchange_weak(Expected, Now);
   }
 
   InMemoryModuleCache &getInMemoryModuleCache() override { return InMemory; }
@@ -82,6 +110,6 @@ class InProcessModuleCache : public ModuleCache {
 } // namespace
 
 IntrusiveRefCntPtr<ModuleCache>
-dependencies::makeInProcessModuleCache(ModuleCacheMutexes &Mutexes) {
-  return llvm::makeIntrusiveRefCnt<InProcessModuleCache>(Mutexes);
+dependencies::makeInProcessModuleCache(ModuleCacheEntries &Entries) {
+  return llvm::makeIntrusiveRefCnt<InProcessModuleCache>(Entries);
 }

@jansvoboda11 jansvoboda11 requested a review from Bigcheese April 29, 2025 16:11
Copy link
Contributor

@Bigcheese Bigcheese left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@jansvoboda11 jansvoboda11 force-pushed the in-process-timestamps branch from fea2196 to ac45c17 Compare May 1, 2025 14:39
@jansvoboda11 jansvoboda11 merged commit 1698beb into llvm:main May 7, 2025
11 checks passed
@jansvoboda11 jansvoboda11 deleted the in-process-timestamps branch May 7, 2025 21:02
@kazutakahirata
Copy link
Contributor

I've 90d8e4d landed to fix warnings from this PR. Thanks!

@llvm-ci
Copy link
Collaborator

llvm-ci commented May 7, 2025

LLVM Buildbot has detected a new failure on builder sanitizer-x86_64-linux running on sanitizer-buildbot1 while building clang at step 2 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/66/builds/13630

Here is the relevant piece of the build log for the reference
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
[5007/5530] Building CXX object lib/DWARFLinker/Parallel/CMakeFiles/LLVMDWARFLinkerParallel.dir/DWARFLinkerImpl.cpp.o
[5008/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexHigh.cpp.o
[5009/5530] Linking CXX static library lib/libLLVMDWARFLinkerParallel.a
[5010/5530] Building CXX object lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Readers/LVDWARFReader.cpp.o
[5011/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/DebugSupport.cpp.o
[5012/5530] Building CXX object tools/clang/lib/Tooling/CMakeFiles/obj.clangTooling.dir/Tooling.cpp.o
[5013/5530] Building CXX object tools/clang/lib/ExtractAPI/CMakeFiles/obj.clangExtractAPI.dir/ExtractAPIConsumer.cpp.o
[5014/5530] Linking CXX static library lib/libclangExtractAPI.a
[5015/5530] Linking CXX static library lib/libclangFrontendTool.a
[5016/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o
FAILED: tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /home/b/sanitizer-x86_64-linux/build/llvm_build0/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/include -I/home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -MF tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o.d -o tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -c /home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:69:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   69 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:80:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   80 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:93:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   93 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
3 errors generated.
[5017/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXCursor.cpp.o
[5018/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/DependencyScanningService.cpp.o
[5019/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXType.cpp.o
[5020/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/SimplifyConstraints.cpp.o
[5021/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/AdornedCFG.cpp.o
[5022/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/TokenBufferTokenManager.cpp.o
[5023/5530] Linking CXX executable bin/clang-21
[5024/5530] Building CXX object tools/clang/lib/IndexSerialization/CMakeFiles/obj.clangIndexSerialization.dir/SerializablePathCollection.cpp.o
[5025/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/ComputeReplacements.cpp.o
[5026/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/DependencyScanningFilesystem.cpp.o
[5027/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/Mutations.cpp.o
[5028/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXIndexDataConsumer.cpp.o
[5029/5530] Building CXX object tools/clang/lib/Tooling/Inclusions/Stdlib/CMakeFiles/obj.clangToolingInclusionsStdlib.dir/StandardLibrary.cpp.o
[5030/5530] Building CXX object lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Readers/LVCodeViewReader.cpp.o
[5031/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/Synthesis.cpp.o
[5032/5530] Building CXX object tools/bugpoint/CMakeFiles/bugpoint.dir/CrashDebugger.cpp.o
[5033/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/Logger.cpp.o
[5034/5530] Building CXX object lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Readers/LVCodeViewVisitor.cpp.o
Step 8 (build compiler-rt symbolizer) failure: build compiler-rt symbolizer (failure)
...
[5007/5530] Building CXX object lib/DWARFLinker/Parallel/CMakeFiles/LLVMDWARFLinkerParallel.dir/DWARFLinkerImpl.cpp.o
[5008/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CIndexHigh.cpp.o
[5009/5530] Linking CXX static library lib/libLLVMDWARFLinkerParallel.a
[5010/5530] Building CXX object lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Readers/LVDWARFReader.cpp.o
[5011/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/DebugSupport.cpp.o
[5012/5530] Building CXX object tools/clang/lib/Tooling/CMakeFiles/obj.clangTooling.dir/Tooling.cpp.o
[5013/5530] Building CXX object tools/clang/lib/ExtractAPI/CMakeFiles/obj.clangExtractAPI.dir/ExtractAPIConsumer.cpp.o
[5014/5530] Linking CXX static library lib/libclangExtractAPI.a
[5015/5530] Linking CXX static library lib/libclangFrontendTool.a
[5016/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o
FAILED: tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /home/b/sanitizer-x86_64-linux/build/llvm_build0/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/include -I/home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -MF tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o.d -o tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -c /home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:69:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   69 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:80:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   80 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:93:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   93 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
3 errors generated.
[5017/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXCursor.cpp.o
[5018/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/DependencyScanningService.cpp.o
[5019/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXType.cpp.o
[5020/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/SimplifyConstraints.cpp.o
[5021/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/AdornedCFG.cpp.o
[5022/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/TokenBufferTokenManager.cpp.o
[5023/5530] Linking CXX executable bin/clang-21
[5024/5530] Building CXX object tools/clang/lib/IndexSerialization/CMakeFiles/obj.clangIndexSerialization.dir/SerializablePathCollection.cpp.o
[5025/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/ComputeReplacements.cpp.o
[5026/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/DependencyScanningFilesystem.cpp.o
[5027/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/Mutations.cpp.o
[5028/5530] Building CXX object tools/clang/tools/libclang/CMakeFiles/libclang.dir/CXIndexDataConsumer.cpp.o
[5029/5530] Building CXX object tools/clang/lib/Tooling/Inclusions/Stdlib/CMakeFiles/obj.clangToolingInclusionsStdlib.dir/StandardLibrary.cpp.o
[5030/5530] Building CXX object lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Readers/LVCodeViewReader.cpp.o
[5031/5530] Building CXX object tools/clang/lib/Tooling/Syntax/CMakeFiles/obj.clangToolingSyntax.dir/Synthesis.cpp.o
[5032/5530] Building CXX object tools/bugpoint/CMakeFiles/bugpoint.dir/CrashDebugger.cpp.o
[5033/5530] Building CXX object tools/clang/lib/Analysis/FlowSensitive/CMakeFiles/obj.clangAnalysisFlowSensitive.dir/Logger.cpp.o
[5034/5530] Building CXX object lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Readers/LVCodeViewVisitor.cpp.o
Step 9 (test compiler-rt symbolizer) failure: test compiler-rt symbolizer (failure)
...
+ for F in $CC $CXX $TBLGEN $LINK $OPT $AR
+ [[ ! -x /home/b/sanitizer-x86_64-linux/build/build_default/bin/clang++ ]]
+ for F in $CC $CXX $TBLGEN $LINK $OPT $AR
+ [[ ! -x /home/b/sanitizer-x86_64-linux/build/build_default/bin/llvm-tblgen ]]
+ for F in $CC $CXX $TBLGEN $LINK $OPT $AR
+ [[ ! -x /home/b/sanitizer-x86_64-linux/build/build_default/bin/llvm-link ]]
+ echo 'Missing /home/b/sanitizer-x86_64-linux/build/build_default/bin/llvm-link'
+ exit 1
Missing /home/b/sanitizer-x86_64-linux/build/build_default/bin/llvm-link
[43/3197] Building CXX object compiler-rt/lib/interception/CMakeFiles/RTInterception.x86_64.dir/interception_type_test.cpp.o
FAILED: compiler-rt/lib/sanitizer_common/symbolizer/RTSanitizerCommonSymbolizerInternal.x86_64.o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/sanitizer_common/symbolizer/RTSanitizerCommonSymbolizerInternal.x86_64.o 
cd /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/sanitizer_common/symbolizer/RTSanitizerCommonSymbolizerInternal.x86_64 && FLAGS=-m64 CLANG=/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/sanitizer_common/symbolizer/RTSanitizerCommonSymbolizerInternal.x86_64.o
[45/3197] Copying msan_ignorelist.txt...
[46/3197] Clobbering bootstrap build directories
[47/3197] Clobbering bootstrap build directories
[48/3197] Generating RTSanitizerCommonSymbolizerInternal.i386
[49/3197] Clobbering bootstrap build directories
[50/3197] Building CXX object compiler-rt/lib/interception/CMakeFiles/RTInterception.x86_64.dir/interception_linux.cpp.o
[51/3197] Building CXX object libunwind/src/CMakeFiles/unwind_shared_objects.dir/Unwind-EHABI.cpp.o
[52/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_tls_get_addr.cpp.o
[53/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_procmaps_linux.cpp.o
[54/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_errno.cpp.o
[55/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_mac.cpp.o
[56/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonCoverage.x86_64.dir/sancov_flags.cpp.o
[57/3197] Building C object libunwind/src/CMakeFiles/unwind_shared_objects.dir/Unwind-sjlj.c.o
[58/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_range.cpp.o
[59/3197] Building C object libunwind/src/CMakeFiles/unwind_shared_objects.dir/Unwind-wasm.c.o
[60/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_platform_limits_freebsd.cpp.o
[61/3197] Building CXX object libunwind/src/CMakeFiles/unwind_shared_objects.dir/Unwind-seh.cpp.o
[62/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_haiku.cpp.o
[63/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonSymbolizer.x86_64.dir/sanitizer_stacktrace.cpp.o
[64/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_linux_s390.cpp.o
[65/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_fuchsia.cpp.o
[66/3197] Building ASM object libunwind/src/CMakeFiles/unwind_shared_objects.dir/UnwindRegistersSave.S.o
[67/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_netbsd.cpp.o
[68/3197] Building CXX object compiler-rt/lib/msan/CMakeFiles/clang_rt.msan-x86_64.dir/msan_chained_origin_depot.cpp.o
[69/3197] Building CXX object compiler-rt/lib/msan/CMakeFiles/clang_rt.msan-x86_64.dir/msan_dl.cpp.o
[70/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_platform_limits_posix.cpp.o
[71/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_flag_parser.cpp.o
[72/3197] Building ASM object libunwind/src/CMakeFiles/unwind_shared_objects.dir/UnwindRegistersRestore.S.o
[73/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_platform_limits_linux.cpp.o
[74/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.x86_64.dir/sanitizer_libignore.cpp.o
[75/3197] Building CXX object compiler-rt/lib/ubsan/CMakeFiles/RTUbsan.x86_64.dir/ubsan_flags.cpp.o
[76/3197] Building CXX object compiler-rt/lib/ubsan/CMakeFiles/RTUbsan.x86_64.dir/ubsan_init.cpp.o
[77/3197] Building CXX object compiler-rt/lib/ubsan/CMakeFiles/RTUbsan.x86_64.dir/ubsan_value.cpp.o
[78/3197] Building C object libunwind/src/CMakeFiles/unwind_shared_objects.dir/UnwindLevel1-gcc-ext.c.o
[79/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonSymbolizer.x86_64.dir/sanitizer_unwind_linux_libcdep.cpp.o
[80/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonSymbolizer.x86_64.dir/sanitizer_allocator_report.cpp.o
[81/3197] Building CXX object compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonSymbolizer.x86_64.dir/sanitizer_symbolizer_libbacktrace.cpp.o
Step 10 (build compiler-rt debug) failure: build compiler-rt debug (failure)
...
[4559/5530] Linking CXX static library lib/libclangInstallAPI.a
[4560/5530] Linking CXX static library lib/libLLVMAArch64AsmParser.a
[4561/5530] Linking CXX static library lib/libclangFrontend.a
[4562/5530] Building AMDGPUGenSubtargetInfo.inc...
[4563/5530] Linking CXX static library lib/libLLVMAArch64CodeGen.a
[4564/5530] Linking CXX static library lib/libLLVMARMDisassembler.a
[4565/5530] Linking CXX static library lib/libLLVMARMAsmParser.a
[4566/5530] Linking CXX static library lib/libclangIndex.a
[4567/5530] Linking CXX static library lib/libLLVMARMCodeGen.a
[4568/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o
FAILED: tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /home/b/sanitizer-x86_64-linux/build/llvm_build0/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/include -I/home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -MF tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o.d -o tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -c /home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:69:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   69 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:80:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   80 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:93:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   93 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
3 errors generated.
[4569/5530] Linking CXX static library lib/libLLVMAVRCodeGen.a
[4570/5530] Linking CXX static library lib/libLLVMAVRAsmParser.a
[4571/5530] Linking CXX static library lib/libclangCrossTU.a
[4572/5530] Linking CXX static library lib/libLLVMBPFAsmParser.a
[4573/5530] Linking CXX static library lib/libLLVMBPFCodeGen.a
[4574/5530] Building CXX object tools/llvm-pdbutil/CMakeFiles/llvm-pdbutil.dir/PrettyVariableDumper.cpp.o
[4575/5530] Building CXX object tools/clang/tools/diagtool/CMakeFiles/diagtool.dir/TreeView.cpp.o
[4576/5530] Building X86GenDAGISel.inc...
[4577/5530] Building CXX object tools/clang/tools/offload-arch/CMakeFiles/offload-arch.dir/NVPTXArch.cpp.o
[4578/5530] Building CXX object tools/clang/tools/offload-arch/CMakeFiles/offload-arch.dir/OffloadArch.cpp.o
[4579/5530] Building CXX object tools/clang/tools/offload-arch/CMakeFiles/offload-arch.dir/AMDGPUArchByHIP.cpp.o
[4580/5530] Building X86GenGlobalISel.inc...
[4581/5530] Building CXX object tools/clang/tools/diagtool/CMakeFiles/diagtool.dir/FindDiagnosticID.cpp.o
[4582/5530] Building CXX object tools/clang/tools/diagtool/CMakeFiles/diagtool.dir/ListWarnings.cpp.o
[4583/5530] Building CXX object tools/llvm-pdbutil/CMakeFiles/llvm-pdbutil.dir/PrettyBuiltinDumper.cpp.o
[4584/5530] Building CXX object tools/llvm-pdbutil/CMakeFiles/llvm-pdbutil.dir/StreamUtil.cpp.o
[4585/5530] Building CXX object tools/clang/tools/apinotes-test/CMakeFiles/apinotes-test.dir/APINotesTest.cpp.o
[4586/5530] Building CXX object tools/llvm-pdbutil/CMakeFiles/llvm-pdbutil.dir/TypeReferenceTracker.cpp.o
Step 11 (test compiler-rt debug) failure: test compiler-rt debug (failure)
...
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:248: warning: COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=ON, but this test suite does not support testing the just-built runtime libraries when the test compiler is configured to use different runtime libraries. Either modify this test suite to support this test configuration, or set COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=OFF to test the runtime libraries included in the compiler instead.
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:259: note: Testing using libraries in "/home/b/sanitizer-x86_64-linux/build/build_default/./lib/../lib/clang/21/lib/i386-unknown-linux-gnu"
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:237: warning: Compiler lib dir != compiler-rt lib dir
Compiler libdir:     "/home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/i386-unknown-linux-gnu"
compiler-rt libdir:  "/home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu"
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:248: warning: COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=ON, but this test suite does not support testing the just-built runtime libraries when the test compiler is configured to use different runtime libraries. Either modify this test suite to support this test configuration, or set COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=OFF to test the runtime libraries included in the compiler instead.
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:259: note: Testing using libraries in "/home/b/sanitizer-x86_64-linux/build/build_default/./lib/../lib/clang/21/lib/x86_64-unknown-linux-gnu"
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/utils/lit/lit/main.py:72: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 4955 of 10827 tests, 88 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70
FAIL: TypeSanitizer-x86_64 :: anon-struct.c (3654 of 4955)
******************** TEST 'TypeSanitizer-x86_64 :: anon-struct.c' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang  -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/anon-struct.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp &&  /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp >/home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp.out 2>&1 # RUN: at line 1
+ /home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/anon-struct.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp
ld: error: cannot open /home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see invocation)

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70
FAIL: TypeSanitizer-x86_64 :: basic.c (3656 of 4955)
******************** TEST 'TypeSanitizer-x86_64 :: basic.c' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang  -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/basic.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/basic.c.tmp &&  /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/basic.c.tmp 10 >/home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/basic.c.tmp.out.0 2>&1 # RUN: at line 1
+ /home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/basic.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/basic.c.tmp
ld: error: cannot open /home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see invocation)

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70
FAIL: TypeSanitizer-x86_64 :: anon-same-struct.c (3659 of 4955)
******************** TEST 'TypeSanitizer-x86_64 :: anon-same-struct.c' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang  -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/anon-same-struct.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-same-struct.c.tmp &&  /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-same-struct.c.tmp >/home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-same-struct.c.tmp.out 2>&1 # RUN: at line 1
+ /home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/anon-same-struct.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-same-struct.c.tmp
ld: error: cannot open /home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory
Step 12 (build compiler-rt tsan_debug) failure: build compiler-rt tsan_debug (failure)
...
[4552/5511] Linking CXX executable bin/llvm-dis
[4553/5511] Linking CXX executable bin/llvm-diff
[4554/5511] Building AMDGPUGenMCPseudoLowering.inc...
[4555/5511] Building AMDGPUGenPostLegalizeGICombiner.inc...
[4556/5511] Building AMDGPUGenPreLegalizeGICombiner.inc...
[4557/5511] Building RISCVGenSubtargetInfo.inc...
[4558/5511] Building AMDGPUGenSearchableTables.inc...
[4559/5511] Building AMDGPUGenDisassemblerTables.inc...
[4560/5511] Building X86GenFastISel.inc...
[4561/5511] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o
FAILED: tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /home/b/sanitizer-x86_64-linux/build/llvm_build0/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/include -I/home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -MF tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o.d -o tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -c /home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:69:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   69 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:80:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   80 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:93:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   93 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
3 errors generated.
[4562/5511] Building CXX object lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/AsmParser.cpp.o
[4563/5511] Building X86GenGlobalISel.inc...
[4564/5511] Building CXX object tools/llvm-strings/CMakeFiles/llvm-strings.dir/llvm-strings.cpp.o
[4565/5511] Building X86GenDAGISel.inc...
[4566/5511] Building AMDGPUGenSubtargetInfo.inc...
[4567/5511] Building CXX object tools/llvm-readtapi/CMakeFiles/llvm-readtapi.dir/DiffEngine.cpp.o
[4568/5511] Building X86GenSubtargetInfo.inc...
[4569/5511] Building CXX object tools/llvm-stress/CMakeFiles/llvm-stress.dir/llvm-stress.cpp.o
[4570/5511] Building CXX object tools/llvm-sim/CMakeFiles/llvm-sim.dir/llvm-sim.cpp.o
[4571/5511] Building CXX object tools/verify-uselistorder/CMakeFiles/verify-uselistorder.dir/verify-uselistorder.cpp.o
[4572/5511] Building AMDGPUGenAsmMatcher.inc...
[4573/5511] Building CXX object tools/llvm-tli-checker/CMakeFiles/llvm-tli-checker.dir/llvm-tli-checker.cpp.o
[4574/5511] Building AMDGPUGenAsmWriter.inc...
[4575/5511] Building AMDGPUGenCallingConv.inc...
[4576/5511] Building CXX object tools/yaml2obj/CMakeFiles/yaml2obj.dir/yaml2obj.cpp.o
[4577/5511] Building AMDGPUGenDAGISel.inc...
[4578/5511] Building AMDGPUGenGlobalISel.inc...
[4579/5511] Building X86GenInstrInfo.inc...
Step 13 (build compiler-rt default) failure: build compiler-rt default (failure)
...
[4758/5530] Linking CXX static library lib/libclangRewriteFrontend.a
[4759/5530] Linking CXX static library lib/libclangTooling.a
[4760/5530] Linking CXX executable bin/llvm-extract
[4761/5530] Linking CXX static library lib/libclangIndex.a
[4762/5530] Linking CXX static library lib/libclangCrossTU.a
[4763/5530] Linking CXX static library lib/libclangExtractAPI.a
[4764/5530] Linking CXX static library lib/libclangCodeGen.a
[4765/5530] Linking CXX static library lib/libclangToolingRefactoring.a
[4766/5530] Linking CXX static library lib/libclangStaticAnalyzerCore.a
[4767/5530] Building CXX object tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o
FAILED: tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /home/b/sanitizer-x86_64-linux/build/llvm_build0/bin/clang++ -DCLANG_EXPORTS -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning -I/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/tools/clang/include -I/home/b/sanitizer-x86_64-linux/build/build_default/include -I/home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -MF tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o.d -o tools/clang/lib/Tooling/DependencyScanning/CMakeFiles/obj.clangDependencyScanning.dir/InProcessModuleCache.cpp.o -c /home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:69:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   69 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:80:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   80 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
/home/b/sanitizer-x86_64-linux/build/llvm-project/clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp:93:7: error: 'std::lock_guard' may not intend to support class template argument deduction [-Werror,-Wctad-maybe-unsupported]
   93 |       std::lock_guard Lock(Entries.Mutex);
      |       ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include/c++/14/bits/std_mutex.h:243:11: note: add a deduction guide to suppress this warning
  243 |     class lock_guard
      |           ^
3 errors generated.
[4768/5530] Linking CXX static library lib/libclangTransformer.a
[4769/5530] Linking CXX static library lib/libclangStaticAnalyzerCheckers.a
[4770/5530] Building AMDGPUGenSubtargetInfo.inc...
[4771/5530] Linking CXX executable bin/diagtool
[4772/5530] Linking CXX executable bin/clang-installapi
[4773/5530] Linking CXX executable bin/clang-diff
[4774/5530] Linking CXX executable bin/clang-refactor
[4775/5530] Building AMDGPUGenRegBankGICombiner.inc...
[4776/5530] Linking CXX executable bin/clang-import-test
[4777/5530] Building X86GenDAGISel.inc...
[4778/5530] Building X86GenSubtargetInfo.inc...
[4779/5530] Building AMDGPUGenPreLegalizeGICombiner.inc...
[4780/5530] Building AMDGPUGenDisassemblerTables.inc...
[4781/5530] Building AMDGPUGenPostLegalizeGICombiner.inc...
[4782/5530] Building AMDGPUGenSearchableTables.inc...
[4783/5530] Building AMDGPUGenMCCodeEmitter.inc...
[4784/5530] Building AMDGPUGenCallingConv.inc...
[4785/5530] Building X86GenInstrInfo.inc...
Step 14 (test compiler-rt default) failure: test compiler-rt default (failure)
...
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:248: warning: COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=ON, but this test suite does not support testing the just-built runtime libraries when the test compiler is configured to use different runtime libraries. Either modify this test suite to support this test configuration, or set COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=OFF to test the runtime libraries included in the compiler instead.
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:259: note: Testing using libraries in "/home/b/sanitizer-x86_64-linux/build/build_default/./lib/../lib/clang/21/lib/i386-unknown-linux-gnu"
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:237: warning: Compiler lib dir != compiler-rt lib dir
Compiler libdir:     "/home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/i386-unknown-linux-gnu"
compiler-rt libdir:  "/home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu"
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:248: warning: COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=ON, but this test suite does not support testing the just-built runtime libraries when the test compiler is configured to use different runtime libraries. Either modify this test suite to support this test configuration, or set COMPILER_RT_TEST_STANDALONE_BUILD_LIBS=OFF to test the runtime libraries included in the compiler instead.
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/lit.common.cfg.py:259: note: Testing using libraries in "/home/b/sanitizer-x86_64-linux/build/build_default/./lib/../lib/clang/21/lib/x86_64-unknown-linux-gnu"
llvm-lit: /home/b/sanitizer-x86_64-linux/build/llvm-project/llvm/utils/lit/lit/main.py:72: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 10844 tests, 88 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70..
FAIL: TypeSanitizer-x86_64 :: anon-struct.c (8544 of 10844)
******************** TEST 'TypeSanitizer-x86_64 :: anon-struct.c' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang  -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/anon-struct.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp &&  /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp >/home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp.out 2>&1 # RUN: at line 1
+ /home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/anon-struct.c -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/anon-struct.c.tmp
ld: error: cannot open /home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see invocation)

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70..
FAIL: TypeSanitizer-x86_64 :: constexpr-subobject.cpp (8548 of 10844)
******************** TEST 'TypeSanitizer-x86_64 :: constexpr-subobject.cpp' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang  -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/constexpr-subobject.cpp -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/constexpr-subobject.cpp.tmp &&  /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/constexpr-subobject.cpp.tmp >/home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/constexpr-subobject.cpp.tmp.out 2>&1 # RUN: at line 1
+ /home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -O0 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/constexpr-subobject.cpp -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/constexpr-subobject.cpp.tmp
ld: error: cannot open /home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see invocation)

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70..
FAIL: TypeSanitizer-x86_64 :: derrived_default_constructor.cpp (8549 of 10844)
******************** TEST 'TypeSanitizer-x86_64 :: derrived_default_constructor.cpp' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang  --driver-mode=g++ -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/derrived_default_constructor.cpp -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/derrived_default_constructor.cpp.tmp &&  /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/derrived_default_constructor.cpp.tmp 2>&1 | FileCheck --implicit-check-not ERROR /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/derrived_default_constructor.cpp # RUN: at line 1
+ /home/b/sanitizer-x86_64-linux/build/build_default/./bin/clang --driver-mode=g++ -fsanitize=type -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 /home/b/sanitizer-x86_64-linux/build/llvm-project/compiler-rt/test/tysan/derrived_default_constructor.cpp -o /home/b/sanitizer-x86_64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tysan/X86_64Config/Output/derrived_default_constructor.cpp.tmp
ld: error: cannot open /home/b/sanitizer-x86_64-linux/build/build_default/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.tysan.a: No such file or directory

@jansvoboda11
Copy link
Contributor Author

(Just adding a note here for my records that this speeds up from-scratch scans by 1.4% and incremental null scans by 67% on my benchmark.)

petrhosek pushed a commit to petrhosek/llvm-project that referenced this pull request May 8, 2025
…#137363)

In the past, timestamps used for
`-fmodules-validate-once-per-build-session` were found to be a source of
contention in the dependency scanner
([D149802](https://reviews.llvm.org/D149802),
llvm#112452). This PR is yet
another attempt to optimize these. We now make use of the new
`ModuleCache` interface to implement the in-process version in terms of
atomic `std::time_t` variables rather the mtime attribute on
`.timestamp` files.
jansvoboda11 added a commit to swiftlang/llvm-project that referenced this pull request May 8, 2025
…#137363)

In the past, timestamps used for
`-fmodules-validate-once-per-build-session` were found to be a source of
contention in the dependency scanner
([D149802](https://reviews.llvm.org/D149802),
llvm#112452). This PR is yet
another attempt to optimize these. We now make use of the new
`ModuleCache` interface to implement the in-process version in terms of
atomic `std::time_t` variables rather the mtime attribute on
`.timestamp` files.
cyndyishida pushed a commit to swiftlang/llvm-project that referenced this pull request May 12, 2025
…#137363)

In the past, timestamps used for
`-fmodules-validate-once-per-build-session` were found to be a source of
contention in the dependency scanner
([D149802](https://reviews.llvm.org/D149802),
llvm#112452). This PR is yet
another attempt to optimize these. We now make use of the new
`ModuleCache` interface to implement the in-process version in terms of
atomic `std::time_t` variables rather the mtime attribute on
`.timestamp` files.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:modules C++20 modules and Clang Header Modules clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants