]> granicus.if.org Git - llvm/commit
LTO: Try to open cache files before renaming them.
authorPeter Collingbourne <peter@pcc.me.uk>
Tue, 5 Sep 2017 19:51:38 +0000 (19:51 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Tue, 5 Sep 2017 19:51:38 +0000 (19:51 +0000)
commita3886c11ee55aa4cb683cbb34d9bf33e4de6fc63
tree33d94efa7fab41efb583fd1e1d2eab230b173183
parent8c5b337a87c209b26c559510827172073bf4bb8a
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
include/llvm/LTO/Caching.h
lib/LTO/Caching.cpp
tools/gold/gold-plugin.cpp
tools/llvm-lto2/llvm-lto2.cpp