diff options
author | Ekaterina Romanova <katya_romanova@playstation.sony.com> | 2018-02-15 23:29:21 +0000 |
---|---|---|
committer | Ekaterina Romanova <katya_romanova@playstation.sony.com> | 2018-02-15 23:29:21 +0000 |
commit | d345f7393914cb4a57b079836f0723002a06cc71 (patch) | |
tree | 5e534bb4c129bd2e7d63059a46e53f818151167d /llvm | |
parent | 17daedfd04bbcac5cb38dbc2adcfd467441865cc (diff) | |
download | bcm5719-llvm-d345f7393914cb4a57b079836f0723002a06cc71.tar.gz bcm5719-llvm-d345f7393914cb4a57b079836f0723002a06cc71.zip |
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.
llvm-svn: 325303
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm-c/lto.h | 2 | ||||
-rw-r--r-- | llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h | 8 | ||||
-rw-r--r-- | llvm/test/ThinLTO/X86/cache.ll | 21 | ||||
-rw-r--r-- | llvm/tools/llvm-lto/llvm-lto.cpp | 3 |
4 files changed, 28 insertions, 6 deletions
diff --git a/llvm/include/llvm-c/lto.h b/llvm/include/llvm-c/lto.h index 8ea24244034..4eee5f1f113 100644 --- a/llvm/include/llvm-c/lto.h +++ b/llvm/include/llvm-c/lto.h @@ -784,7 +784,7 @@ extern void thinlto_codegen_set_cache_dir(thinlto_code_gen_t cg, /** * 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 */ diff --git a/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h b/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h index 07e45d4c122..e47456445f0 100644 --- a/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h +++ b/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h @@ -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 diff --git a/llvm/test/ThinLTO/X86/cache.ll b/llvm/test/ThinLTO/X86/cache.ll index 75466442d78..985e741099a 100644 --- a/llvm/test/ThinLTO/X86/cache.ll +++ b/llvm/test/ThinLTO/X86/cache.ll @@ -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" diff --git a/llvm/tools/llvm-lto/llvm-lto.cpp b/llvm/tools/llvm-lto/llvm-lto.cpp index e7788f656cd..9e5458f4ad9 100644 --- a/llvm/tools/llvm-lto/llvm-lto.cpp +++ b/llvm/tools/llvm-lto/llvm-lto.cpp @@ -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", |