Skip to content

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.)

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.
jansvoboda11 added a commit to jansvoboda11/llvm-project that referenced this pull request Oct 11, 2025
The llvm#137363 PR was supposed to be NFC, but accidentally passed the wrong path to `sys::fs::status`. Then, llvm#141358 removed the correct path that was flagged by the compiler as unused. None of our existing regression tests caught this. We only find out due to a SourceKit-LSP benchmark getting slower.

This PR re-implements the original behavior, add new remark to Clang for PCM input file validation, and uses it to create more reliable tests of the `-fmodules-validate-once-per-build-session` flag.
jansvoboda11 added a commit that referenced this pull request Oct 13, 2025
…2965)

#137363 was supposed to be NFC for the `CrossProcessModuleCache` (a.k.a
normal implicit module builds), but accidentally passed the wrong path
to `sys::fs::status`. Then, #141358 removed the correct path that
should've been passed instead. (The variable was flagged as unused.)
None of our existing tests caught this regression, we only found out due
to a SourceKit-LSP benchmark getting slower.

This PR re-implements the original behavior, adds new remark to Clang
for PCM input file validation, and uses it to create more reliable tests
of the `-fmodules-validate-once-per-build-session` flag.
jansvoboda11 added a commit to jansvoboda11/llvm-project that referenced this pull request Oct 13, 2025
…m#162965)

llvm#137363 was supposed to be NFC for the `CrossProcessModuleCache` (a.k.a
normal implicit module builds), but accidentally passed the wrong path
to `sys::fs::status`. Then, llvm#141358 removed the correct path that
should've been passed instead. (The variable was flagged as unused.)
None of our existing tests caught this regression, we only found out due
to a SourceKit-LSP benchmark getting slower.

This PR re-implements the original behavior, adds new remark to Clang
for PCM input file validation, and uses it to create more reliable tests
of the `-fmodules-validate-once-per-build-session` flag.

(cherry picked from commit ce8abef)
akadutta pushed a commit to akadutta/llvm-project that referenced this pull request Oct 14, 2025
…m#162965)

llvm#137363 was supposed to be NFC for the `CrossProcessModuleCache` (a.k.a
normal implicit module builds), but accidentally passed the wrong path
to `sys::fs::status`. Then, llvm#141358 removed the correct path that
should've been passed instead. (The variable was flagged as unused.)
None of our existing tests caught this regression, we only found out due
to a SourceKit-LSP benchmark getting slower.

This PR re-implements the original behavior, adds new remark to Clang
for PCM input file validation, and uses it to create more reliable tests
of the `-fmodules-validate-once-per-build-session` flag.
c-rhodes pushed a commit to jansvoboda11/llvm-project that referenced this pull request Oct 16, 2025
…m#162965)

llvm#137363 was supposed to be NFC for the `CrossProcessModuleCache` (a.k.a
normal implicit module builds), but accidentally passed the wrong path
to `sys::fs::status`. Then, llvm#141358 removed the correct path that
should've been passed instead. (The variable was flagged as unused.)
None of our existing tests caught this regression, we only found out due
to a SourceKit-LSP benchmark getting slower.

This PR re-implements the original behavior, adds new remark to Clang
for PCM input file validation, and uses it to create more reliable tests
of the `-fmodules-validate-once-per-build-session` flag.

(cherry picked from commit ce8abef)
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