[PATCH] D51992: [ThinLTO]Expose cache entry expiration time option in llvm-lto and fix a test

James Henderson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 12 09:07:35 PDT 2018


jhenderson created this revision.
jhenderson added reviewers: pcc, rnk, inglorion.
Herald added subscribers: dexonsmith, steven_wu, eraman, mehdi_amini.

Whilst working in the area, I noticed that two cases in a ThinLTO test were passing for the wrong reasons, since https://reviews.llvm.org/rL340374. The tests were supposed to be testing that files were being pruned due to the cache size, but they were in fact being pruned because they were older than the default expiration period of 1 week.

This change fixes the tests by explicitly setting the expiration time to the maximum value. This required the option to be exposed in llvm-lto.

Assigning all files in the cache a similar time, it is possible to see that the newest files are still being kept, and that we aren't passing for the wrong reason again. In the event that the entry expiration were to expire for them, then the test would start failing, because these files would be removed too.


Repository:
  rL LLVM

https://reviews.llvm.org/D51992

Files:
  test/ThinLTO/X86/cache.ll
  tools/llvm-lto/llvm-lto.cpp


Index: tools/llvm-lto/llvm-lto.cpp
===================================================================
--- tools/llvm-lto/llvm-lto.cpp
+++ tools/llvm-lto/llvm-lto.cpp
@@ -166,6 +166,10 @@
     ThinLTOCacheMaxSizeFiles("thinlto-cache-max-size-files", cl::init(1000000),
     cl::desc("Set ThinLTO cache pruning directory maximum number of files."));
 
+static cl::opt<unsigned>
+    ThinLTOCacheEntryExpiration("thinlto-cache-entry-expiration", cl::init(604800) /* 1w */,
+    cl::desc("Set ThinLTO cache entry expiration time."));
+
 static cl::opt<std::string> ThinLTOSaveTempsPrefix(
     "thinlto-save-temps",
     cl::desc("Save ThinLTO temp files using filenames created by adding "
@@ -481,6 +485,7 @@
     ThinGenerator.setTargetOptions(Options);
     ThinGenerator.setCacheDir(ThinLTOCacheDir);
     ThinGenerator.setCachePruningInterval(ThinLTOCachePruningInterval);
+    ThinGenerator.setCacheEntryExpiration(ThinLTOCacheEntryExpiration);
     ThinGenerator.setCacheMaxSizeFiles(ThinLTOCacheMaxSizeFiles);
     ThinGenerator.setCacheMaxSizeBytes(ThinLTOCacheMaxSizeBytes);
     ThinGenerator.setFreestanding(EnableFreestanding);
Index: test/ThinLTO/X86/cache.ll
===================================================================
--- test/ThinLTO/X86/cache.ll
+++ test/ThinLTO/X86/cache.ll
@@ -113,8 +113,10 @@
 ; RUN: %python -c "with open(r'%t.cache/llvmcache-foo-77k', 'w') as file: file.truncate(78848)"
 ; RUN: touch -t 198002031200 %t.cache/llvmcache-foo-77k
 ; RUN: %python -c "with open(r'%t.cache/llvmcache-foo-8', 'w') as file: file.truncate(8)"
+; RUN: touch -t 198002041200 %t.cache/llvmcache-foo-8
 ; RUN: %python -c "with open(r'%t.cache/llvmcache-foo-76', 'w') as file: file.truncate(76)"
-; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-max-size-bytes 78847
+; RUN: touch -t 198002051200 %t.cache/llvmcache-foo-76
+; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-max-size-bytes 78847 --thinlto-cache-entry-expiration 4294967295
 ; RUN: ls %t.cache/llvmcache-foo-8
 ; RUN: ls %t.cache/llvmcache-foo-76
 ; RUN: not ls %t.cache/llvmcache-foo-16
@@ -133,8 +135,10 @@
 ; RUN: %python -c "print(' ' * 7)" > %t.cache/llvmcache-foo-7
 ; RUN: touch -t 198002031200 %t.cache/llvmcache-foo-7
 ; RUN: %python -c "print(' ' * 75)" > %t.cache/llvmcache-foo-75
+; RUN: touch -t 198002041200 %t.cache/llvmcache-foo-75
 ; RUN: %python -c "print(' ' * 76)" > %t.cache/llvmcache-foo-76
-; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-max-size-files 4
+; RUN: touch -t 198002051200 %t.cache/llvmcache-foo-76
+; RUN: llvm-lto -thinlto-action=run -exported-symbol=globalfunc %t2.bc %t.bc -thinlto-cache-dir %t.cache --thinlto-cache-max-size-files 4 --thinlto-cache-entry-expiration 4294967295
 ; RUN: ls %t.cache/llvmcache-foo-75
 ; RUN: ls %t.cache/llvmcache-foo-76
 ; RUN: not ls %t.cache/llvmcache-foo-15


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51992.165097.patch
Type: text/x-patch
Size: 3032 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180912/7d0bf0b4/attachment.bin>


More information about the llvm-commits mailing list