aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/CompilerInstance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Frontend/CompilerInstance.cpp')
-rw-r--r--lib/Frontend/CompilerInstance.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp
index 32455c9d57..f14c2e30bc 100644
--- a/lib/Frontend/CompilerInstance.cpp
+++ b/lib/Frontend/CompilerInstance.cpp
@@ -880,10 +880,13 @@ void LockFileManager::waitForUnlock() {
if (getState() != LFS_Shared)
return;
+#if LLVM_ON_WIN32
+ unsigned long Interval = 1;
+#else
struct timespec Interval;
Interval.tv_sec = 0;
Interval.tv_nsec = 1000000;
-
+#endif
// Don't wait more than an hour for the file to appear.
const unsigned MaxSeconds = 3600;
do {
@@ -902,13 +905,23 @@ void LockFileManager::waitForUnlock() {
return;
// Exponentially increase the time we wait for the lock to be removed.
+#if LLVM_ON_WIN32
+ Interval *= 2;
+#else
Interval.tv_sec *= 2;
Interval.tv_nsec *= 2;
if (Interval.tv_nsec >= 1000000000) {
++Interval.tv_sec;
Interval.tv_nsec -= 1000000000;
}
- } while (Interval.tv_sec < MaxSeconds);
+#endif
+ } while (
+#if LLVM_ON_WIN32
+ Interval < MaxSeconds * 1000
+#else
+ Interval.tv_sec < MaxSeconds
+#endif
+ );
// Give up.
}