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.
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.
SmallVector< IndexPair, 4 > ParamLocs
SmallVector< ParamLocs, 8 > ParamLocsVecTy
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.