[llvm] r325303 - Allow 0 to be a valid value pruning interval in C LTO API. Value 0 will cause garbage collector to run. This matches the behavior in C++ LTO API.
Ekaterina Romanova via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 15 15:29:21 PST 2018
Author: kromanova
Date: Thu Feb 15 15:29:21 2018
New Revision: 325303
URL: http://llvm.org/viewvc/llvm-project?rev=325303&view=rev
Log:
Allow 0 to be a valid value pruning interval in C LTO API. Value 0 will cause garbage collector to run. This matches the behavior in C++ LTO API.
Modified:
llvm/trunk/include/llvm-c/lto.h
llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
llvm/trunk/test/ThinLTO/X86/cache.ll
llvm/trunk/tools/llvm-lto/llvm-lto.cpp
Modified: llvm/trunk/include/llvm-c/lto.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/lto.h?rev=325303&r1=325302&r2=325303&view=diff
==============================================================================
--- llvm/trunk/include/llvm-c/lto.h (original)
+++ llvm/trunk/include/llvm-c/lto.h Thu Feb 15 15:29:21 2018
@@ -784,7 +784,7 @@ extern void thinlto_codegen_set_cache_di
/**
* Sets the cache pruning interval (in seconds). A negative value disables the
* pruning. An unspecified default value will be applied, and a value of 0 will
- * be ignored.
+ * force prunning to occur.
*
* \since LTO_API_VERSION=18
*/
Modified: llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h?rev=325303&r1=325302&r2=325303&view=diff
==============================================================================
--- llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h (original)
+++ llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h Thu Feb 15 15:29:21 2018
@@ -131,7 +131,8 @@ public:
* To avoid filling the disk space, a few knobs are provided:
* - The pruning interval limit the frequency at which the garbage collector
* will try to scan the cache directory to prune it from expired entries.
- * Setting to -1 disable the pruning (default).
+ * Setting to -1 disable the pruning (default). Setting to 0 will force
+ * pruning to occur.
* - The pruning expiration time indicates to the garbage collector how old
* an entry needs to be to be removed.
* - Finally, the garbage collector can be instructed to prune the cache till
@@ -149,10 +150,9 @@ public:
void setCacheDir(std::string Path) { CacheOptions.Path = std::move(Path); }
/// Cache policy: interval (seconds) between two prunes of the cache. Set to a
- /// negative value to disable pruning. A value of 0 will be ignored.
+ /// negative value to disable pruning. A value of 0 will force pruning to
+ /// occur.
void setCachePruningInterval(int Interval) {
- if (Interval == 0)
- return;
if(Interval < 0)
CacheOptions.Policy.Interval.reset();
else
Modified: llvm/trunk/test/ThinLTO/X86/cache.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ThinLTO/X86/cache.ll?rev=325303&r1=325302&r2=325303&view=diff
==============================================================================
--- llvm/trunk/test/ThinLTO/X86/cache.ll (original)
+++ llvm/trunk/test/ThinLTO/X86/cache.ll Thu Feb 15 15:29:21 2018
@@ -59,6 +59,27 @@
; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-pruning-interval -1
; RUN: ls %t.cache/llvmcache-foo
+; Verify that the pruner doesn't run and a cache file is not deleted when:
+; default values for pruning interval and cache expiration are used,
+; llvmcache.timestamp is current,
+; cache file is older than default cache expiration value.
+; RUN: rm -Rf %t.cache && mkdir %t.cache
+; RUN: touch -t 197001011200 %t.cache/llvmcache-foo
+; RUN: touch %t.cache/llvmcache.timestamp
+; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache
+; RUN: ls %t.cache/llvmcache-foo
+
+; Verify that the pruner runs and a cache file is deleted when:
+; pruning interval has value 0 (i.e. run garbage collector now)
+; default value for cache expiration is used,
+; llvmcache.timestamp is current,
+; cache file is older than default cache expiration value.
+; RUN: rm -Rf %t.cache && mkdir %t.cache
+; RUN: touch -t 197001011200 %t.cache/llvmcache-foo
+; RUN: touch %t.cache/llvmcache.timestamp
+; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-pruning-interval 0
+; RUN: not ls %t.cache/llvmcache-foo
+
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0"
Modified: llvm/trunk/tools/llvm-lto/llvm-lto.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-lto/llvm-lto.cpp?rev=325303&r1=325302&r2=325303&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-lto/llvm-lto.cpp (original)
+++ llvm/trunk/tools/llvm-lto/llvm-lto.cpp Thu Feb 15 15:29:21 2018
@@ -157,7 +157,8 @@ static cl::opt<std::string>
ThinLTOCacheDir("thinlto-cache-dir", cl::desc("Enable ThinLTO caching."));
static cl::opt<int>
- ThinLTOCachePruningInterval("thinlto-cache-pruning-interval", cl::desc("Set ThinLTO cache pruning interval."));
+ ThinLTOCachePruningInterval("thinlto-cache-pruning-interval",
+ cl::init(1200), cl::desc("Set ThinLTO cache pruning interval."));
static cl::opt<std::string> ThinLTOSaveTempsPrefix(
"thinlto-save-temps",
More information about the llvm-commits
mailing list