48#ifndef LLVM_TRANSFORMS_IPO_FUNCTIONSPECIALIZATION_H
49#define LLVM_TRANSFORMS_IPO_FUNCTIONSPECIALIZATION_H
74 for (
size_t I = 0;
I <
Args.size(); ++
I)
140 : Solver(Solver), M(M),
FAM(
FAM), GetTLI(GetTLI), GetTTI(GetTTI),
160 void promoteConstantStackValues();
163 void removeDeadFunctions();
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
FunctionAnalysisManager FAM
an instruction to allocate memory on the stack
A container for analyses that lazily runs them and caches their results.
This class represents an incoming formal argument to a Function.
A cache of @llvm.assume calls within a function.
This class represents a function call, abstracting a target machine's calling convention.
This is an important base class in LLVM.
bool run()
Attempt to specialize functions in the module to enable constant propagation across function boundari...
FunctionSpecializer(SCCPSolver &Solver, Module &M, FunctionAnalysisManager *FAM, std::function< const TargetLibraryInfo &(Function &)> GetTLI, std::function< TargetTransformInfo &(Function &)> GetTTI, std::function< AssumptionCache &(Function &)> GetAC)
bool isClonedFunction(Function *F)
A Module instance is used to store all the information related to an LLVM module.
SCCPSolver - This interface class is a general purpose solver for Sparse Conditional Constant Propaga...
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Provides information about what library functions are available for the current target.
LLVM Value Representation.
An opaque object representing a hash code.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
hash_code hash_combine(const Ts &...args)
Combine values into a single hash_code.
hash_code hash_combine_range(InputIteratorT first, InputIteratorT last)
Compute a hash_code for a sequence of values.
Utility to calculate the size and a few similar metrics for a set of basic blocks.
SmallVector< ArgInfo, 4 > Args
bool operator==(const SpecSig &Other) const
friend hash_code hash_value(const SpecSig &S)
Spec(Function *F, const SpecSig &S, InstructionCost G)
SmallVector< CallBase * > CallSites
Spec(Function *F, const SpecSig &&S, InstructionCost G)