Skip to content

Commit

Permalink
[nfc] small maintainability IndirectCallPromotion changes
Browse files Browse the repository at this point in the history
- we can remove the `Module` field, it's obtainable from `F` and used in
  only one place
- a few fields can be `const`-ed, thus enforcing compile-time
  initialization checking (and we don't need to support `operator=`)

Differential Revision: https://reviews.llvm.org/D155212
  • Loading branch information
mtrofin committed Jul 20, 2023
1 parent 52807ba commit 96c973d
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,20 +109,19 @@ namespace {
class ICallPromotionFunc {
private:
Function &F;
Module *M;

// Symtab that maps indirect call profile values to function names and
// defines.
InstrProfSymtab *Symtab;
InstrProfSymtab *const Symtab;

bool SamplePGO;
const bool SamplePGO;

OptimizationRemarkEmitter &ORE;

// A struct that records the direct target and it's call count.
struct PromotionCandidate {
Function *TargetFunction;
uint64_t Count;
Function *const TargetFunction;
const uint64_t Count;

PromotionCandidate(Function *F, uint64_t C) : TargetFunction(F), Count(C) {}
};
Expand All @@ -143,9 +142,9 @@ class ICallPromotionFunc {
uint64_t &TotalCount);

public:
ICallPromotionFunc(Function &Func, Module *Modu, InstrProfSymtab *Symtab,
bool SamplePGO, OptimizationRemarkEmitter &ORE)
: F(Func), M(Modu), Symtab(Symtab), SamplePGO(SamplePGO), ORE(ORE) {}
ICallPromotionFunc(Function &Func, InstrProfSymtab *Symtab, bool SamplePGO,
OptimizationRemarkEmitter &ORE)
: F(Func), Symtab(Symtab), SamplePGO(SamplePGO), ORE(ORE) {}
ICallPromotionFunc(const ICallPromotionFunc &) = delete;
ICallPromotionFunc &operator=(const ICallPromotionFunc &) = delete;

Expand Down Expand Up @@ -319,8 +318,8 @@ bool ICallPromotionFunc::processFunction(ProfileSummaryInfo *PSI) {
if (TotalCount == 0 || NumPromoted == NumVals)
continue;
// Otherwise we need update with the un-promoted records back.
annotateValueSite(*M, *CB, ICallProfDataRef.slice(NumPromoted), TotalCount,
IPVK_IndirectCallTarget, NumCandidates);
annotateValueSite(*F.getParent(), *CB, ICallProfDataRef.slice(NumPromoted),
TotalCount, IPVK_IndirectCallTarget, NumCandidates);
}
return Changed;
}
Expand All @@ -345,7 +344,7 @@ static bool promoteIndirectCalls(Module &M, ProfileSummaryInfo *PSI, bool InLTO,
MAM.getResult<FunctionAnalysisManagerModuleProxy>(M).getManager();
auto &ORE = FAM.getResult<OptimizationRemarkEmitterAnalysis>(F);

ICallPromotionFunc ICallPromotion(F, &M, &Symtab, SamplePGO, ORE);
ICallPromotionFunc ICallPromotion(F, &Symtab, SamplePGO, ORE);
bool FuncChanged = ICallPromotion.processFunction(PSI);
if (ICPDUMPAFTER && FuncChanged) {
LLVM_DEBUG(dbgs() << "\n== IR Dump After =="; F.print(dbgs()));
Expand Down

0 comments on commit 96c973d

Please sign in to comment.