}
}
-namespace {
-// Wrapper prodiving a stream for the ThinLTO backend.
-class ThinLTOOutputWrapper : public lto::NativeObjectOutput {
- std::unique_ptr<raw_pwrite_stream> OS;
-
-public:
- ThinLTOOutputWrapper(std::unique_ptr<raw_pwrite_stream> OS)
- : OS(std::move(OS)) {}
- std::unique_ptr<raw_pwrite_stream> getStream() override {
- return std::move(OS);
- }
-};
-}
-
static void runThinLTOBackend(const CodeGenOptions &CGOpts, Module *M,
std::unique_ptr<raw_pwrite_stream> OS) {
// If we are performing a ThinLTO importing compile, load the function index
ModuleMap[I.first()] = (*MBOrErr)->getMemBufferRef();
OwnedImports.push_back(std::move(*MBOrErr));
}
- auto AddOutput = [&](size_t Task) {
- return llvm::make_unique<ThinLTOOutputWrapper>(std::move(OS));
+ auto AddStream = [&](size_t Task) {
+ return llvm::make_unique<lto::NativeObjectStream>(std::move(OS));
};
lto::Config Conf;
if (Error E = thinBackend(
- Conf, 0, AddOutput, *M, *CombinedIndex, ImportList,
+ Conf, 0, AddStream, *M, *CombinedIndex, ImportList,
ModuleToDefinedGVSummaries[M->getModuleIdentifier()], ModuleMap)) {
handleAllErrors(std::move(E), [&](ErrorInfoBase &EIB) {
errs() << "Error running ThinLTO backend: " << EIB.message() << '\n';