15#ifndef LLVM_SUPPORT_CACHING_H
16#define LLVM_SUPPORT_CACHING_H
33 std::string OSPath =
"")
41 Twine(
"CacheStream already committed."));
48 std::unique_ptr<raw_pwrite_stream>
OS;
59using AddStreamFn = std::function<Expected<std::unique_ptr<CachedFileStream>>(
87 : CacheFunction(
std::
move(CacheFn)), CacheDirectoryPath(DirectoryPath) {}
96 return CacheDirectoryPath;
98 bool isValid()
const {
return static_cast<bool>(CacheFunction); }
102 std::string CacheDirectoryPath;
109 std::unique_ptr<MemoryBuffer> MB)>;
118 const Twine &CacheNameRef,
const Twine &TempFilePrefixRef,
119 const Twine &CacheDirectoryPathRef,
121 std::unique_ptr<MemoryBuffer> MB) {});
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This class wraps an output stream for a file.
CachedFileStream(std::unique_ptr< raw_pwrite_stream > OS, std::string OSPath="")
std::string ObjectPathName
virtual ~CachedFileStream()
std::unique_ptr< raw_pwrite_stream > OS
virtual Error commit()
Must be called exactly once after the writes to OS have been completed but before the CachedFileStrea...
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Tagged union holding either a T or a Error.
StringRef - Represent a constant reference to a string, i.e.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
This is an optimization pass for GlobalISel generic memory operations.
std::function< void(unsigned Task, const Twine &ModuleName, std::unique_ptr< MemoryBuffer > MB)> AddBufferFn
This type defines the callback to add a pre-existing file (e.g.
std::error_code make_error_code(BitcodeError E)
std::function< Expected< std::unique_ptr< CachedFileStream > >(unsigned Task, const Twine &ModuleName)> AddStreamFn
This type defines the callback to add a file that is generated on the fly.
Error createStringError(std::error_code EC, char const *Fmt, const Ts &... Vals)
Create formatted StringError object.
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
std::function< Expected< AddStreamFn >(unsigned Task, StringRef Key, const Twine &ModuleName)> FileCacheFunction
This is a callable that manages file caching operations.
LLVM_ABI Expected< FileCache > localCache(const Twine &CacheNameRef, const Twine &TempFilePrefixRef, const Twine &CacheDirectoryPathRef, AddBufferFn AddBuffer=[](size_t Task, const Twine &ModuleName, std::unique_ptr< MemoryBuffer > MB) {})
Create a local file system cache which uses the given cache name, temporary file prefix,...
Implement std::hash so that hash_code can be used in STL containers.
This type represents a file cache system that manages caching of files.
Expected< AddStreamFn > operator()(unsigned Task, StringRef Key, const Twine &ModuleName)
const std::string & getCacheDirectoryPath() const
FileCache(FileCacheFunction CacheFn, const std::string &DirectoryPath)