81#ifndef LLVM_TRANSFORMS_IPO_FUNCTIONSPECIALIZATION_H 
   82#define LLVM_TRANSFORMS_IPO_FUNCTIONSPECIALIZATION_H 
  177      : GetBFI(GetBFI), F(F), DL(DL), TTI(TTI), Solver(Solver) {}
 
 
  180    return Solver.isBlockExecutable(BB) && !DeadBlocks.contains(BB);
 
 
  216  bool discoverTransitivelyIncomingValues(
Constant *Const, 
PHINode *Root,
 
 
  252  unsigned NGlobals = 0;
 
  261      : Solver(Solver), M(M), FAM(FAM), GetBFI(GetBFI), GetTLI(GetTLI),
 
  262        GetTTI(GetTTI), GetAC(GetAC) {}
 
 
  269    auto &
TTI = GetTTI(*
F);
 
 
  285  void promoteConstantStackValues(
Function *
F);
 
  288  void removeDeadFunctions();
 
  299  bool findSpecializations(
Function *
F, 
unsigned FuncSize,
 
 
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
 
an instruction to allocate memory on the stack
 
This class represents an incoming formal argument to a Function.
 
A cache of @llvm.assume calls within a function.
 
LLVM Basic Block Representation.
 
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequen...
 
Conditional or Unconditional Branch instruction.
 
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
 
This class represents a function call, abstracting a target machine's calling convention.
 
This is the base class for all instructions that perform data casts.
 
This class is the base class for the comparison instructions.
 
This is an important base class in LLVM.
 
A parsed version of the target data layout string in and methods for querying it.
 
DenseMapIterator< KeyT, ValueT, KeyInfoT, BucketT > iterator
 
Implements a dense probed hash-table based set.
 
This class represents a freeze function that returns random concrete value if an operand is either a ...
 
LLVM_ABI ~FunctionSpecializer()
 
LLVM_ABI 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< BlockFrequencyInfo &(Function &)> GetBFI, std::function< const TargetLibraryInfo &(Function &)> GetTLI, std::function< TargetTransformInfo &(Function &)> GetTTI, std::function< AssumptionCache &(Function &)> GetAC)
 
InstCostVisitor getInstCostVisitorFor(Function *F)
 
bool isDeadFunction(Function *F)
 
an instruction for type-safe pointer arithmetic to access elements of arrays and structs
 
LLVM_ABI Cost getLatencySavingsForKnownConstants()
Compute the latency savings from replacing all arguments with constants for a specialization candidat...
 
LLVM_ABI Cost getCodeSizeSavingsForArg(Argument *A, Constant *C)
Compute the codesize savings for replacing argument A with constant C.
 
LLVM_ABI Cost getCodeSizeSavingsFromPendingPHIs()
 
InstCostVisitor(std::function< BlockFrequencyInfo &(Function &)> GetBFI, Function *F, const DataLayout &DL, TargetTransformInfo &TTI, SCCPSolver &Solver)
 
bool isBlockExecutable(BasicBlock *BB) const
 
Base class for instruction visitors.
 
An instruction for reading from memory.
 
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...
 
This class represents the LLVM 'select' instruction.
 
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.
 
A Use represents the edge between a Value definition and its users.
 
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.
 
DenseMap< Value *, Constant * > ConstMap
 
DenseMap< Function *, std::pair< unsigned, unsigned > > SpecMap
 
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
 
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.
 
SmallVector< ArgInfo, 4 > Args
 
bool operator==(const SpecSig &Other) const
 
friend hash_code hash_value(const SpecSig &S)
 
Spec(Function *F, const SpecSig &&S, unsigned Score, unsigned CodeSize)
 
SmallVector< CallBase * > CallSites
 
Spec(Function *F, const SpecSig &S, unsigned Score, unsigned CodeSize)