diff --git a/lld/test/COFF/lto-cache.ll b/lld/test/COFF/lto-cache.ll --- a/lld/test/COFF/lto-cache.ll +++ b/lld/test/COFF/lto-cache.ll @@ -7,8 +7,8 @@ ; RUN: rm -Rf %t.cache && mkdir %t.cache ; Create two files that would be removed by cache pruning due to age. -; We should only remove files matching the pattern "llvmcache-*". -; RUN: touch -t 197001011200 %t.cache/llvmcache-foo %t.cache/foo +; We should only remove files matching "llvmcache-*" or "Thin-*". +; RUN: touch -t 197001011200 %t.cache/llvmcache-foo %t.cache/Thin-123.tmp.o %t.cache/foo ; RUN: lld-link /lldltocache:%t.cache /lldltocachepolicy:prune_after=1h /out:%t3 /entry:main %t2.o %t.o ; Two cached objects, plus a timestamp file and "foo", minus the file we removed. diff --git a/llvm/lib/Support/CachePruning.cpp b/llvm/lib/Support/CachePruning.cpp --- a/llvm/lib/Support/CachePruning.cpp +++ b/llvm/lib/Support/CachePruning.cpp @@ -211,11 +211,12 @@ // Walk all of the files within this directory. for (sys::fs::directory_iterator File(CachePathNative, EC), FileEnd; File != FileEnd && !EC; File.increment(EC)) { - // Ignore any files not beginning with the string "llvmcache-". This + // Ignore filenames not beginning with "llvmcache-" or "Thin-". This // includes the timestamp file as well as any files created by the user. // This acts as a safeguard against data loss if the user specifies the // wrong directory as their cache directory. - if (!sys::path::filename(File->path()).startswith("llvmcache-")) + StringRef filename = sys::path::filename(File->path()); + if (!filename.startswith("llvmcache-") && !filename.startswith("Thin-")) continue; // Look at this file. If we can't stat it, there's nothing interesting