summaryrefslogtreecommitdiff
path: root/tools/llvm-lto2
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2017-09-05 19:51:38 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2017-09-05 19:51:38 +0000
commita3886c11ee55aa4cb683cbb34d9bf33e4de6fc63 (patch)
tree33d94efa7fab41efb583fd1e1d2eab230b173183 /tools/llvm-lto2
parent8c5b337a87c209b26c559510827172073bf4bb8a (diff)
LTO: Try to open cache files before renaming them.
It appears that a potential race between the cache client and the cache pruner that I thought was unlikely actually happened in practice [1]. Try to avoid the race condition by opening the temporary file before renaming it. Do this only on non-Windows platforms because we cannot rename open files on Windows using the sys::fs::rename function. [1] https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fchromium.memory%2FLinux_CFI%2F1610%2F%2B%2Frecipes%2Fsteps%2Fcompile%2F0%2Fstdout Differential Revision: https://reviews.llvm.org/D37410 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312567 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-lto2')
-rw-r--r--tools/llvm-lto2/llvm-lto2.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/llvm-lto2/llvm-lto2.cpp b/tools/llvm-lto2/llvm-lto2.cpp
index 1c7038e6a2e..bc22b509b65 100644
--- a/tools/llvm-lto2/llvm-lto2.cpp
+++ b/tools/llvm-lto2/llvm-lto2.cpp
@@ -296,7 +296,8 @@ static int run(int argc, char **argv) {
return llvm::make_unique<lto::NativeObjectStream>(std::move(S));
};
- auto AddBuffer = [&](size_t Task, std::unique_ptr<MemoryBuffer> MB) {
+ auto AddBuffer = [&](size_t Task, std::unique_ptr<MemoryBuffer> MB,
+ StringRef Path) {
*AddStream(Task)->OS << MB->getBuffer();
};