14 #ifndef LLVM_TRANSFORMS_INSTRPROFILING_H 15 #define LLVM_TRANSFORMS_INSTRPROFILING_H 30 class TargetLibraryInfo;
49 struct PerFunctionProfileData {
50 uint32_t NumValueSites[IPVK_Last + 1];
54 PerFunctionProfileData() {
59 std::vector<GlobalValue *> UsedVars;
60 std::vector<GlobalVariable *> ReferencedNames;
65 std::vector<LoadStorePair> PromotionCandidates;
68 int64_t MemOPSizeRangeStart;
70 int64_t MemOPSizeRangeLast;
72 int64_t TotalCountersPromoted = 0;
79 void promoteCounterLoadStores(
Function *F);
82 bool isCounterPromotionEnabled()
const;
109 void emitRegistration();
113 bool emitRuntimeHook();
120 void emitInitialization();
125 #endif // LLVM_TRANSFORMS_INSTRPROFILING_H This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
std::pair< Instruction *, Instruction * > LoadStorePair
Instrumentation based profiling lowering pass.
A CRTP mix-in to automatically provide informational APIs needed for passes.
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
A set of analyses that are preserved following a run of a transformation pass.
Triple - Helper class for working with autoconf configuration names.
Provides information about what library functions are available for the current target.
Options for the frontend instrumentation based profiling pass.
This represents the llvm.instrprof_increment intrinsic.
A container for analyses that lazily runs them and caches their results.
This header defines various interfaces for pass management in LLVM.
This represents the llvm.instrprof_value_profile intrinsic.
InstrProfiling(const InstrProfOptions &Options)