mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-09 10:55:03 +00:00
LTO: When creating a local cache, create the cache directory if it does not already exist.
Differential Revision: https://reviews.llvm.org/D30519 llvm-svn: 296726
This commit is contained in:
parent
2f75ad4e51
commit
ab76a19afb
@ -150,10 +150,10 @@ std::vector<InputFile *> BitcodeCompiler::compile() {
|
||||
// specified, configure LTO to use it as the cache directory.
|
||||
lto::NativeObjectCache Cache;
|
||||
if (!Config->ThinLTOCacheDir.empty())
|
||||
Cache = lto::localCache(Config->ThinLTOCacheDir,
|
||||
[&](size_t Task, StringRef Path) {
|
||||
Files[Task] = check(MemoryBuffer::getFile(Path));
|
||||
});
|
||||
Cache = check(lto::localCache(
|
||||
Config->ThinLTOCacheDir, [&](size_t Task, StringRef Path) {
|
||||
Files[Task] = check(MemoryBuffer::getFile(Path));
|
||||
}));
|
||||
|
||||
checkError(LTOObj->run(
|
||||
[&](size_t Task) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
; RUN: opt -module-hash -module-summary %s -o %t.o
|
||||
; RUN: opt -module-hash -module-summary %p/Inputs/cache.ll -o %t2.o
|
||||
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: ld.lld --thinlto-cache-dir=%t.cache -o %t3.o %t2.o %t.o
|
||||
|
||||
; RUN: ls %t.cache | count 2
|
||||
|
@ -28,8 +28,10 @@ namespace lto {
|
||||
typedef std::function<void(unsigned Task, StringRef Path)> AddFileFn;
|
||||
|
||||
/// Create a local file system cache which uses the given cache directory and
|
||||
/// file callback.
|
||||
NativeObjectCache localCache(StringRef CacheDirectoryPath, AddFileFn AddFile);
|
||||
/// file callback. This function also creates the cache directory if it does not
|
||||
/// already exist.
|
||||
Expected<NativeObjectCache> localCache(StringRef CacheDirectoryPath,
|
||||
AddFileFn AddFile);
|
||||
|
||||
} // namespace lto
|
||||
} // namespace llvm
|
||||
|
@ -46,8 +46,11 @@ static void commitEntry(StringRef TempFilename, StringRef EntryPath) {
|
||||
}
|
||||
}
|
||||
|
||||
NativeObjectCache lto::localCache(StringRef CacheDirectoryPath,
|
||||
AddFileFn AddFile) {
|
||||
Expected<NativeObjectCache> lto::localCache(StringRef CacheDirectoryPath,
|
||||
AddFileFn AddFile) {
|
||||
if (std::error_code EC = sys::fs::create_directories(CacheDirectoryPath))
|
||||
return errorCodeToError(EC);
|
||||
|
||||
return [=](unsigned Task, StringRef Key) -> AddStreamFn {
|
||||
// First, see if we have a cache hit.
|
||||
SmallString<64> EntryPath;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: rm -rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -rf %t.cache
|
||||
; RUN: opt -module-hash -module-summary %s -o %t.bc
|
||||
|
||||
; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx
|
||||
|
@ -10,7 +10,7 @@
|
||||
; RUN: ls %t.cache | count 1
|
||||
|
||||
; Verify that enabling caching is ignoring module without hash with llvm-lto2
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \
|
||||
; RUN: -r=%t2.bc,_main,plx \
|
||||
; RUN: -r=%t2.bc,_globalfunc,lx \
|
||||
@ -30,7 +30,7 @@
|
||||
; RUN: ls %t.cache | count 3
|
||||
|
||||
; Verify that enabling caching is working with llvm-lto2
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \
|
||||
; RUN: -r=%t2.bc,_main,plx \
|
||||
; RUN: -r=%t2.bc,_globalfunc,lx \
|
||||
|
@ -8,7 +8,7 @@
|
||||
; RUN: ls %t.cache | count 3
|
||||
|
||||
; Verify that enabling caching is working with llvm-lto2
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \
|
||||
; RUN: -r=%t2.bc,_main,plx
|
||||
; RUN: ls %t.cache | count 2
|
||||
@ -25,7 +25,7 @@
|
||||
; RUN: ls %t.cache | count 1
|
||||
|
||||
; Verify that caching is disabled for module without hash, with llvm-lto2
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \
|
||||
; RUN: -r=%t2.bc,_main,plx
|
||||
; RUN: ls %t.cache | count 0
|
||||
|
@ -2,7 +2,7 @@
|
||||
; RUN: opt -module-summary %s -o %t.o
|
||||
; RUN: opt -module-summary %p/Inputs/cache.ll -o %t2.o
|
||||
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold.so \
|
||||
; RUN: --plugin-opt=thinlto \
|
||||
; RUN: --plugin-opt=cache-dir=%t.cache \
|
||||
@ -16,7 +16,7 @@
|
||||
; RUN: opt -module-hash -module-summary %s -o %t.o
|
||||
; RUN: opt -module-hash -module-summary %p/Inputs/cache.ll -o %t2.o
|
||||
|
||||
; RUN: rm -Rf %t.cache && mkdir %t.cache
|
||||
; RUN: rm -Rf %t.cache
|
||||
; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold.so \
|
||||
; RUN: --plugin-opt=thinlto \
|
||||
; RUN: --plugin-opt=cache-dir=%t.cache \
|
||||
|
@ -835,7 +835,7 @@ static ld_plugin_status allSymbolsReadHook() {
|
||||
|
||||
NativeObjectCache Cache;
|
||||
if (!options::cache_dir.empty())
|
||||
Cache = localCache(options::cache_dir, AddFile);
|
||||
Cache = check(localCache(options::cache_dir, AddFile));
|
||||
|
||||
check(Lto->run(AddStream, Cache));
|
||||
|
||||
|
@ -284,7 +284,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
NativeObjectCache Cache;
|
||||
if (!CacheDir.empty())
|
||||
Cache = localCache(CacheDir, AddFile);
|
||||
Cache = check(localCache(CacheDir, AddFile), "failed to create cache");
|
||||
|
||||
check(Lto.run(AddStream, Cache), "LTO::run failed");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user