mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
cef2ce70e8
The NativeObjectOutput class has a design problem: it mixes up the caching policy with the interface for output streams, which makes the client-side code hard to follow and would for example make it harder to replace the cache implementation in an arbitrary client. This change separates the two aspects by moving the caching policy to a separate field in Config, replacing NativeObjectOutput with a NativeObjectStream class which only deals with streams and does not need to be overridden by most clients and introducing an AddFile callback for adding files (e.g. from the cache) to the link. Differential Revision: https://reviews.llvm.org/D24622 llvm-svn: 282299
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
//===- Caching.h - LLVM Link Time Optimizer Configuration -----------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines the localCache function, which allows clients to add a
|
|
// filesystem cache to ThinLTO.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LTO_CACHING_H
|
|
#define LLVM_LTO_CACHING_H
|
|
|
|
#include "llvm/LTO/LTO.h"
|
|
#include <string>
|
|
|
|
namespace llvm {
|
|
namespace lto {
|
|
|
|
/// This type defines the callback to add a pre-existing native object file
|
|
/// (e.g. in a cache).
|
|
///
|
|
/// File callbacks must be thread safe.
|
|
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(std::string CacheDirectoryPath, AddFileFn AddFile);
|
|
|
|
} // namespace lto
|
|
} // namespace llvm
|
|
|
|
#endif
|