LLVM  14.0.0git
Classes | Namespaces | Typedefs | Functions
LTO.h File Reference
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/Bitcode/BitcodeReader.h"
#include "llvm/IR/ModuleSummaryIndex.h"
#include "llvm/LTO/Config.h"
#include "llvm/Object/IRSymtab.h"
#include "llvm/Support/Caching.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/thread.h"
#include "llvm/Transforms/IPO/FunctionAttrs.h"
#include "llvm/Transforms/IPO/FunctionImport.h"
Include dependency graph for LTO.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


class  llvm::lto::InputFile
 An input file. More...
class  llvm::lto::InputFile::Symbol
 The purpose of this class is to only expose the symbol information that an LTO client should need in order to do symbol resolution. More...
class  llvm::lto::LTO
 This class implements a resolution-based interface to LLVM's LTO functionality. More...
struct  llvm::lto::LTO::RegularLTOState::CommonResolution
struct  llvm::lto::LTO::RegularLTOState::AddedModule
struct  llvm::lto::SymbolResolution
 The resolution for a symbol. More...


 This file implements support for optimizing divisions by a constant.


using llvm::lto::ThinBackend = std::function< std::unique_ptr< ThinBackendProc >(const Config &C, ModuleSummaryIndex &CombinedIndex, StringMap< GVSummaryMapTy > &ModuleToDefinedGVSummaries, AddStreamFn AddStream, NativeObjectCache Cache)>
 A ThinBackend defines what happens after the thin-link phase during ThinLTO. More...
using llvm::lto::IndexWriteCallback = std::function< void(const std::string &)>
 This ThinBackend writes individual module indexes to files, instead of running the individual backend jobs. More...


void llvm::thinLTOResolvePrevailingInIndex (const lto::Config &C, ModuleSummaryIndex &Index, function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)> isPrevailing, function_ref< void(StringRef, GlobalValue::GUID, GlobalValue::LinkageTypes)> recordNewLinkage, const DenseSet< GlobalValue::GUID > &GUIDPreservedSymbols)
 Resolve linkage for prevailing symbols in the Index. More...
void llvm::thinLTOInternalizeAndPromoteInIndex (ModuleSummaryIndex &Index, function_ref< bool(StringRef, ValueInfo)> isExported, function_ref< bool(GlobalValue::GUID, const GlobalValueSummary *)> isPrevailing)
 Update the linkages in the given Index to mark exported values as external and non-exported values as internal. More...
void llvm::computeLTOCacheKey (SmallString< 40 > &Key, const lto::Config &Conf, const ModuleSummaryIndex &Index, StringRef ModuleID, const FunctionImporter::ImportMapTy &ImportList, const FunctionImporter::ExportSetTy &ExportList, const std::map< GlobalValue::GUID, GlobalValue::LinkageTypes > &ResolvedODR, const GVSummaryMapTy &DefinedGlobals, const std::set< GlobalValue::GUID > &CfiFunctionDefs={}, const std::set< GlobalValue::GUID > &CfiFunctionDecls={})
 Computes a unique hash for the Module considering the current list of export/import and other global analysis results. More...
std::string llvm::lto::getThinLTOOutputFile (const std::string &Path, const std::string &OldPrefix, const std::string &NewPrefix)
 Given the original Path to an output file, replace any path prefix matching OldPrefix with NewPrefix. More...
Expected< std::unique_ptr< ToolOutputFile > > llvm::lto::setupLLVMOptimizationRemarks (LLVMContext &Context, StringRef RemarksFilename, StringRef RemarksPasses, StringRef RemarksFormat, bool RemarksWithHotness, Optional< uint64_t > RemarksHotnessThreshold=0, int Count=-1)
 Setup optimization remarks. More...
Expected< std::unique_ptr< ToolOutputFile > > llvm::lto::setupStatsFile (StringRef StatsFilename)
 Setups the output file for saving statistics. More...
std::vector< intllvm::lto::generateModulesOrdering (ArrayRef< BitcodeModule * > R)
 Produces a container ordering for optimal multi-threaded processing. More...
ThinBackend llvm::lto::createInProcessThinBackend (ThreadPoolStrategy Parallelism)
 This ThinBackend runs the individual backend jobs in-process. More...
ThinBackend llvm::lto::createWriteIndexesThinBackend (std::string OldPrefix, std::string NewPrefix, bool ShouldEmitImportsFiles, raw_fd_ostream *LinkedObjectsFile, IndexWriteCallback OnWrite)