LLVM  15.0.0git
Macros | Functions | Variables
IndirectCallPromotion.cpp File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/IndirectCallPromotionAnalysis.h"
#include "llvm/Analysis/IndirectCallVisitor.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Value.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Instrumentation/PGOInstrumentation.h"
#include "llvm/Transforms/Utils/CallPromotionUtils.h"
#include <cassert>
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for IndirectCallPromotion.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "pgo-icall-prom"
 

Functions

 STATISTIC (NumOfPGOICallPromotion, "Number of indirect call promotions.")
 
 STATISTIC (NumOfPGOICallsites, "Number of indirect call candidate sites.")
 
static bool promoteIndirectCalls (Module &M, ProfileSummaryInfo *PSI, bool InLTO, bool SamplePGO, ModuleAnalysisManager *AM=nullptr)
 

Variables

static cl::opt< bool > DisableICP ("disable-icp", cl::init(false), cl::Hidden, cl::desc("Disable indirect call promotion"))
 
static cl::opt< unsigned > ICPCutOff ("icp-cutoff", cl::init(0), cl::Hidden, cl::desc("Max number of promotions for this compilation"))
 
static cl::opt< unsigned > ICPCSSkip ("icp-csskip", cl::init(0), cl::Hidden, cl::desc("Skip Callsite up to this number for this compilation"))
 
static cl::opt< bool > ICPLTOMode ("icp-lto", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion in LTO " "mode"))
 
static cl::opt< bool > ICPSamplePGOMode ("icp-samplepgo", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion in SamplePGO mode"))
 
static cl::opt< bool > ICPCallOnly ("icp-call-only", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion for call instructions " "only"))
 
static cl::opt< bool > ICPInvokeOnly ("icp-invoke-only", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion for " "invoke instruction only"))
 
static cl::opt< bool > ICPDUMPAFTER ("icp-dumpafter", cl::init(false), cl::Hidden, cl::desc("Dump IR after transformation happens"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "pgo-icall-prom"

Definition at line 48 of file IndirectCallPromotion.cpp.

Function Documentation

◆ promoteIndirectCalls()

static bool promoteIndirectCalls ( Module M,
ProfileSummaryInfo PSI,
bool  InLTO,
bool  SamplePGO,
ModuleAnalysisManager AM = nullptr 
)
static

◆ STATISTIC() [1/2]

STATISTIC ( NumOfPGOICallPromotion  ,
"Number of indirect call promotions."   
)

◆ STATISTIC() [2/2]

STATISTIC ( NumOfPGOICallsites  ,
"Number of indirect call candidate sites."   
)

Variable Documentation

◆ DisableICP

cl::opt<bool> DisableICP("disable-icp", cl::init(false), cl::Hidden, cl::desc("Disable indirect call promotion"))
static

Referenced by promoteIndirectCalls().

◆ ICPCallOnly

cl::opt<bool> ICPCallOnly("icp-call-only", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion for call instructions " "only"))
static

◆ ICPCSSkip

cl::opt<unsigned> ICPCSSkip("icp-csskip", cl::init(0), cl::Hidden, cl::desc("Skip Callsite up to this number for this compilation"))
static

◆ ICPCutOff

cl::opt<unsigned> ICPCutOff("icp-cutoff", cl::init(0), cl::Hidden, cl::desc("Max number of promotions for this compilation"))
static

Referenced by promoteIndirectCalls().

◆ ICPDUMPAFTER

cl::opt<bool> ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden, cl::desc("Dump IR after transformation happens"))
static

Referenced by promoteIndirectCalls().

◆ ICPInvokeOnly

cl::opt<bool> ICPInvokeOnly("icp-invoke-only", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion for " "invoke instruction only"))
static

◆ ICPLTOMode

cl::opt<bool> ICPLTOMode("icp-lto", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion in LTO " "mode"))
static

◆ ICPSamplePGOMode

cl::opt<bool> ICPSamplePGOMode("icp-samplepgo", cl::init(false), cl::Hidden, cl::desc("Run indirect-call promotion in SamplePGO mode"))
static