LLVM  14.0.0git
Classes | Namespaces | Enumerations | Functions
FunctionImport.h File Reference
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/ModuleSummaryIndex.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Support/Error.h"
#include <functional>
#include <map>
#include <memory>
#include <string>
#include <system_error>
#include <unordered_set>
#include <utility>
Include dependency graph for FunctionImport.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


class  llvm::FunctionImporter
 The function importer is automatically importing function from other modules based on the provided summary informations. More...
struct  llvm::FunctionImporter::ImportFailureInfo
 Information optionally tracked for candidates the importer decided not to import. More...
class  llvm::FunctionImportPass
 The function importing pass. More...


 ---------------------— PointerInfo ------------------------------------—


enum  llvm::PrevailingType { llvm::PrevailingType::Yes, llvm::PrevailingType::No, llvm::PrevailingType::Unknown }
 PrevailingType enum used as a return type of callback passed to computeDeadSymbolsAndUpdateIndirectCalls. More...


void llvm::ComputeCrossModuleImport (const ModuleSummaryIndex &Index, const StringMap< GVSummaryMapTy > &ModuleToDefinedGVSummaries, StringMap< FunctionImporter::ImportMapTy > &ImportLists, StringMap< FunctionImporter::ExportSetTy > &ExportLists)
 Compute all the imports and exports for every module in the Index. More...
void llvm::ComputeCrossModuleImportForModule (StringRef ModulePath, const ModuleSummaryIndex &Index, FunctionImporter::ImportMapTy &ImportList)
 Compute all the imports for the given module using the Index. More...
void llvm::ComputeCrossModuleImportForModuleFromIndex (StringRef ModulePath, const ModuleSummaryIndex &Index, FunctionImporter::ImportMapTy &ImportList)
 Mark all external summaries in Index for import into the given module. More...
void llvm::updateIndirectCalls (ModuleSummaryIndex &Index)
 Update call edges for indirect calls to local functions added from SamplePGO when needed. More...
void llvm::computeDeadSymbolsAndUpdateIndirectCalls (ModuleSummaryIndex &Index, const DenseSet< GlobalValue::GUID > &GUIDPreservedSymbols, function_ref< PrevailingType(GlobalValue::GUID)> isPrevailing)
 Compute all the symbols that are "dead": i.e these that can't be reached in the graph from any of the given symbols listed in GUIDPreservedSymbols. More...
void llvm::computeDeadSymbolsWithConstProp (ModuleSummaryIndex &Index, const DenseSet< GlobalValue::GUID > &GUIDPreservedSymbols, function_ref< PrevailingType(GlobalValue::GUID)> isPrevailing, bool ImportEnabled)
 Compute dead symbols and run constant propagation in combined index after that. More...
bool llvm::convertToDeclaration (GlobalValue &GV)
 Converts value GV to declaration, or replaces with a declaration if it is an alias. More...
void llvm::gatherImportedSummariesForModule (StringRef ModulePath, const StringMap< GVSummaryMapTy > &ModuleToDefinedGVSummaries, const FunctionImporter::ImportMapTy &ImportList, std::map< std::string, GVSummaryMapTy > &ModuleToSummariesForIndex)
 Compute the set of summaries needed for a ThinLTO backend compilation of ModulePath. More...
std::error_code llvm::EmitImportsFiles (StringRef ModulePath, StringRef OutputFilename, const std::map< std::string, GVSummaryMapTy > &ModuleToSummariesForIndex)
 Emit into OutputFilename the files module ModulePath will import from. More...
void llvm::thinLTOResolvePrevailingInModule (Module &TheModule, const GVSummaryMapTy &DefinedGlobals)
 Resolve prevailing symbol linkages and constrain visibility (1. More...
void llvm::thinLTOInternalizeModule (Module &TheModule, const GVSummaryMapTy &DefinedGlobals)
 Internalize TheModule based on the information recorded in the summaries during global summary-based analysis. More...