mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +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
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
//===-LTOBackend.h - LLVM Link Time Optimizer Backend ---------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the "backend" phase of LTO, i.e. it performs
|
|
// optimization and code generation on a loaded module. It is generally used
|
|
// internally by the LTO class but can also be used independently, for example
|
|
// to implement a standalone ThinLTO backend.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LTO_LTOBACKEND_H
|
|
#define LLVM_LTO_LTOBACKEND_H
|
|
|
|
#include "llvm/ADT/MapVector.h"
|
|
#include "llvm/IR/DiagnosticInfo.h"
|
|
#include "llvm/IR/ModuleSummaryIndex.h"
|
|
#include "llvm/LTO/LTO.h"
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
#include "llvm/Target/TargetOptions.h"
|
|
#include "llvm/Transforms/IPO/FunctionImport.h"
|
|
|
|
namespace llvm {
|
|
|
|
class Error;
|
|
class Module;
|
|
class Target;
|
|
|
|
namespace lto {
|
|
|
|
/// Runs a regular LTO backend.
|
|
Error backend(Config &C, AddStreamFn AddStream,
|
|
unsigned ParallelCodeGenParallelismLevel,
|
|
std::unique_ptr<Module> M);
|
|
|
|
/// Runs a ThinLTO backend.
|
|
Error thinBackend(Config &C, unsigned Task, AddStreamFn AddStream, Module &M,
|
|
ModuleSummaryIndex &CombinedIndex,
|
|
const FunctionImporter::ImportMapTy &ImportList,
|
|
const GVSummaryMapTy &DefinedGlobals,
|
|
MapVector<StringRef, MemoryBufferRef> &ModuleMap);
|
|
}
|
|
}
|
|
|
|
#endif
|