25#ifndef LLVM_CODEGEN_GLOBALMERGEFUNCTIONS_H
26#define LLVM_CODEGEN_GLOBALMERGEFUNCTIONS_H
53 std::unique_ptr<StableFunctionMap> LocalFunctionMap;
Module.h This file contains the declarations for the Module class.
This header defines various interfaces for pass management in LLVM.
A container for analyses that lazily runs them and caches their results.
GlobalMergeFunc is a ModulePass that implements a function merging mechanism using stable function ha...
void analyze(Module &M)
Analyze module to create stable function into LocalFunctionMap.
void initializeMergerMode(const Module &M)
bool merge(Module &M, const StableFunctionMap *FunctionMap)
Merge functions in the module using the given function map.
GlobalMergeFunc(const ModuleSummaryIndex *Index)
void emitFunctionMap(Module &M)
Emit LocalFunctionMap into __llvm_merge section.
static constexpr const char MergingInstanceSuffix[]
The suffix used to identify the merged function that parameterizes the constant values.
Class to hold module path string table and global value map, and encapsulate methods for operating on...
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This is an optimization pass for GlobalISel generic memory operations.
Global function merging pass for new pass manager.
GlobalMergeFuncPass(const ModuleSummaryIndex *ImportSummary)
PreservedAnalyses run(Module &M, AnalysisManager< Module > &)
const ModuleSummaryIndex * ImportSummary
GlobalMergeFuncPass()=default
A CRTP mix-in to automatically provide informational APIs needed for passes.