clang 20.0.0git
|
Per-function PGO state. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CodeGenPGO.h"
Public Member Functions | |
CodeGenPGO (CodeGenModule &CGModule) | |
bool | haveRegionCounts () const |
Whether or not we have PGO region data for the current function. | |
uint64_t | getCurrentRegionCount () const |
Return the counter value of the current region. | |
void | setCurrentRegionCount (uint64_t Count) |
Set the counter value for the current region. | |
std::optional< uint64_t > | getStmtCount (const Stmt *S) const |
Check if an execution count is known for a given statement. | |
void | setCurrentStmt (const Stmt *S) |
If the execution count for the current statement is known, record that as the current count. | |
void | assignRegionCounters (GlobalDecl GD, llvm::Function *Fn) |
Assign counters to regions and configure them for PGO of a given function. | |
void | emitEmptyCounterMapping (const Decl *D, StringRef FuncName, llvm::GlobalValue::LinkageTypes Linkage) |
Emit a coverage mapping range with a counter zero for an unused declaration. | |
void | valueProfile (CGBuilderTy &Builder, uint32_t ValueKind, llvm::Instruction *ValueSite, llvm::Value *ValuePtr) |
void | setValueProfilingFlag (llvm::Module &M) |
void | setProfileVersion (llvm::Module &M) |
void | emitCounterSetOrIncrement (CGBuilderTy &Builder, const Stmt *S, llvm::Value *StepV) |
void | emitMCDCTestVectorBitmapUpdate (CGBuilderTy &Builder, const Expr *S, Address MCDCCondBitmapAddr, CodeGenFunction &CGF) |
void | emitMCDCParameters (CGBuilderTy &Builder) |
void | emitMCDCCondBitmapReset (CGBuilderTy &Builder, const Expr *S, Address MCDCCondBitmapAddr) |
void | emitMCDCCondBitmapUpdate (CGBuilderTy &Builder, const Expr *S, Address MCDCCondBitmapAddr, llvm::Value *Val, CodeGenFunction &CGF) |
uint64_t | getRegionCount (const Stmt *S) |
Return the region count for the counter at the given index. | |
Per-function PGO state.
Definition at line 29 of file CodeGenPGO.h.
|
inline |
Definition at line 46 of file CodeGenPGO.h.
void CodeGenPGO::assignRegionCounters | ( | GlobalDecl | GD, |
llvm::Function * | Fn | ||
) |
Assign counters to regions and configure them for PGO of a given function.
Does nothing if instrumentation is not enabled and either generates global variables or associates PGO data with each of the counters depending on whether we are generating or using instrumentation.
Definition at line 1013 of file CodeGenPGO.cpp.
References clang::CodeGen::CodeGenModule::ClearUnusedCoverageMapping(), clang::Ctor_Base, D, clang::Dtor_Base, clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getContext(), clang::GlobalDecl::getCtorType(), clang::TargetInfo::getCXXABI(), clang::GlobalDecl::getDecl(), clang::GlobalDecl::getDtorType(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::Decl::getLocation(), clang::CodeGen::CodeGenModule::getPGOReader(), clang::ASTContext::getSourceManager(), clang::CodeGen::CodeGenModule::getTarget(), clang::Decl::hasAttr(), clang::Decl::hasBody(), clang::TargetCXXABI::hasConstructorVariants(), clang::CodeGenOptions::hasProfileClangInstr(), clang::CodeGen::CodeGenFunction::IsConstructorDelegationValid(), clang::Decl::isImplicit(), SM, and llvm::coverage::SystemHeadersCoverage.
void CodeGenPGO::emitCounterSetOrIncrement | ( | CGBuilderTy & | Builder, |
const Stmt * | S, | ||
llvm::Value * | StepV | ||
) |
Definition at line 1191 of file CodeGenPGO.cpp.
References llvm::EnableSingleByteCoverage, and clang::CodeGen::CodeGenModule::getIntrinsic().
void CodeGenPGO::emitEmptyCounterMapping | ( | const Decl * | D, |
StringRef | FuncName, | ||
llvm::GlobalValue::LinkageTypes | Linkage | ||
) |
Emit a coverage mapping range with a counter zero for an unused declaration.
Definition at line 1147 of file CodeGenPGO.cpp.
References clang::CodeGen::CoverageMappingModuleGen::addFunctionMappingRecord(), D, clang::CodeGen::CoverageMappingGen::emitEmptyMapping(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getCoverageMapping(), clang::CodeGen::CodeGenModule::getLangOpts(), and clang::ASTContext::getSourceManager().
Referenced by clang::CodeGen::CodeGenModule::EmitDeferredUnusedCoverageMappings().
void CodeGenPGO::emitMCDCCondBitmapReset | ( | CGBuilderTy & | Builder, |
const Expr * | S, | ||
Address | MCDCCondBitmapAddr | ||
) |
Definition at line 1272 of file CodeGenPGO.cpp.
void CodeGenPGO::emitMCDCCondBitmapUpdate | ( | CGBuilderTy & | Builder, |
const Expr * | S, | ||
Address | MCDCCondBitmapAddr, | ||
llvm::Value * | Val, | ||
CodeGenFunction & | CGF | ||
) |
Definition at line 1286 of file CodeGenPGO.cpp.
References clang::CodeGen::CodeGenFunction::stripCond().
void CodeGenPGO::emitMCDCParameters | ( | CGBuilderTy & | Builder | ) |
Definition at line 1221 of file CodeGenPGO.cpp.
References clang::CodeGen::CodeGenModule::getIntrinsic(), and clang::CodeGen::CodeGenModule::getLLVMContext().
void CodeGenPGO::emitMCDCTestVectorBitmapUpdate | ( | CGBuilderTy & | Builder, |
const Expr * | S, | ||
Address | MCDCCondBitmapAddr, | ||
CodeGenFunction & | CGF | ||
) |
Definition at line 1237 of file CodeGenPGO.cpp.
References clang::CodeGen::Address::emitRawPointer(), clang::CodeGen::CodeGenModule::getIntrinsic(), and clang::CodeGen::CodeGenModule::getLLVMContext().
|
inline |
Return the counter value of the current region.
Definition at line 56 of file CodeGenPGO.h.
|
inline |
Return the region count for the counter at the given index.
Definition at line 126 of file CodeGenPGO.h.
References haveRegionCounts().
|
inline |
Check if an execution count is known for a given statement.
If so, return true and put the value in Count; else return false.
Definition at line 65 of file CodeGenPGO.h.
Referenced by setCurrentStmt().
|
inline |
Whether or not we have PGO region data for the current function.
This is false both when we have no data at all and when our data has been discarded.
Definition at line 53 of file CodeGenPGO.h.
Referenced by getRegionCount(), and valueProfile().
|
inline |
Set the counter value for the current region.
This is used to keep track of changes to the most recent counter from control flow and non-local exits.
Definition at line 61 of file CodeGenPGO.h.
Referenced by setCurrentStmt().
|
inline |
If the execution count for the current statement is known, record that as the current count.
Definition at line 76 of file CodeGenPGO.h.
References getStmtCount(), and setCurrentRegionCount().
void CodeGenPGO::setProfileVersion | ( | llvm::Module & | M | ) |
Definition at line 1333 of file CodeGenPGO.cpp.
References llvm::EnableSingleByteCoverage, clang::CodeGen::CodeGenModule::getCodeGenOpts(), and clang::CodeGenOptions::hasProfileClangInstr().
Referenced by clang::CodeGen::CodeGenModule::Release().
void CodeGenPGO::setValueProfilingFlag | ( | llvm::Module & | M | ) |
Definition at line 1327 of file CodeGenPGO.cpp.
References EnableValueProfiling(), clang::CodeGen::CodeGenModule::getCodeGenOpts(), and clang::CodeGenOptions::hasProfileClangInstr().
Referenced by clang::CodeGen::CodeGenModule::Release().
void CodeGenPGO::valueProfile | ( | CGBuilderTy & | Builder, |
uint32_t | ValueKind, | ||
llvm::Instruction * | ValueSite, | ||
llvm::Value * | ValuePtr | ||
) |
Definition at line 1359 of file CodeGenPGO.cpp.
References EnableValueProfiling(), clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getIntrinsic(), clang::CodeGen::CodeGenModule::getModule(), clang::CodeGen::CodeGenModule::getPGOReader(), clang::CodeGenOptions::hasProfileClangInstr(), and haveRegionCounts().