[clang] Retry for Unique Path Creation (PR #132640)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 23 15:17:44 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Ayush Pareek (ayushpareek2003)
<details>
<summary>Changes</summary>
At line 754, added a FOR loop for retrying until we get a unique path
---
Full diff: https://github.com/llvm/llvm-project/pull/132640.diff
1 Files Affected:
- (modified) clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp (+19-3)
``````````diff
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
index ca15a088c308d..5527275575b26 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
@@ -750,9 +750,25 @@ bool DependencyScanningWorker::computeDependencies(
auto InMemoryFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
InMemoryFS->setCurrentWorkingDirectory(WorkingDirectory);
SmallString<128> FakeInputPath;
- // TODO: We should retry the creation if the path already exists.
- llvm::sys::fs::createUniquePath(ModuleName + "-%%%%%%%%.input", FakeInputPath,
- /*MakeAbsolute=*/false);
+
+ unsigned RetryCount = 5; // retries to create
+ bool UniquePathCreated = false;
+
+ for (unsigned i = 0; i < RetryCount; ++i) {
+ if (llvm::sys::fs::createUniquePath(ModuleName + "-%%%%%%%%.input", FakeInputPath,
+ /*MakeAbsolute=*/false)) {
+ if (!llvm::sys::fs::exists(FakeInputPath)) {
+ UniquePathCreated = true;
+ break; // Successfully created a unique path
+ }
+ }
+ }
+ if (!UniquePathCreated) {
+ llvm::errs() << "Error: Failed to create a unique input path after "
+ << RetryCount << " retries.\n";
+ return false; // Handle failure appropriately
+ }
+
InMemoryFS->addFile(FakeInputPath, 0, llvm::MemoryBuffer::getMemBuffer(""));
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> InMemoryOverlay = InMemoryFS;
``````````
</details>
https://github.com/llvm/llvm-project/pull/132640
More information about the cfe-commits
mailing list