LLVM  8.0.1
Classes | Namespaces | Macros | Functions
PassSupport.h File Reference
#include "llvm/ADT/StringRef.h"
#include "llvm/PassInfo.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/Threading.h"
#include <functional>
Include dependency graph for PassSupport.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::RegisterPass< passName >
 RegisterPass<t> template - This template class is used to notify the system that a Pass is available for use, and registers it into the internal database maintained by the PassManager. More...
 
class  llvm::RegisterAGBase
 RegisterAnalysisGroup - Register a Pass as a member of an analysis group. More...
 
struct  llvm::RegisterAnalysisGroup< Interface, Default >
 
struct  llvm::PassRegistrationListener
 PassRegistrationListener class - This class is meant to be derived from by clients that are interested in which passes get registered and unregistered at runtime (which can be because of the RegisterPass constructors being run as the program starts up, or may be because a shared object just got loaded). More...
 

Namespaces

 llvm
 This class represents lattice values for constants.
 

Macros

#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
 
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)   static void *initialize##passName##PassOnce(PassRegistry &Registry) {
 
#define INITIALIZE_PASS_DEPENDENCY(depName)   initialize##depName##Pass(Registry);
 
#define INITIALIZE_AG_DEPENDENCY(depName)   initialize##depName##AnalysisGroup(Registry);
 
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
 
#define INITIALIZE_PASS_WITH_OPTIONS(PassName, Arg, Name, Cfg, Analysis)
 
#define INITIALIZE_PASS_WITH_OPTIONS_BEGIN(PassName, Arg, Name, Cfg, Analysis)
 
#define INITIALIZE_ANALYSIS_GROUP(agName, name, defaultPass)
 
#define INITIALIZE_AG_PASS(passName, agName, arg, name, cfg, analysis, def)
 
#define INITIALIZE_AG_PASS_BEGIN(passName, agName, arg, n, cfg, analysis, def)
 
#define INITIALIZE_AG_PASS_END(passName, agName, arg, n, cfg, analysis, def)
 

Functions

template<typename PassName >
Passllvm::callDefaultCtor ()
 

Macro Definition Documentation

◆ INITIALIZE_AG_DEPENDENCY

#define INITIALIZE_AG_DEPENDENCY (   depName)    initialize##depName##AnalysisGroup(Registry);

Definition at line 52 of file PassSupport.h.

◆ INITIALIZE_AG_PASS

#define INITIALIZE_AG_PASS (   passName,
  agName,
  arg,
  name,
  cfg,
  analysis,
  def 
)
Value:
static void *initialize##passName##PassOnce(PassRegistry &Registry) { \
if (!def) \
initialize##agName##AnalysisGroup(Registry); \
PassInfo *PI = new PassInfo( \
name, arg, &passName::ID, \
PassInfo::NormalCtor_t(callDefaultCtor<passName>), cfg, analysis); \
Registry.registerPass(*PI, true); \
\
PassInfo *AI = new PassInfo(name, &agName::ID); \
Registry.registerAnalysisGroup(&agName::ID, &passName::ID, *AI, def, \
true); \
return AI; \
} \
static llvm::once_flag Initialize##passName##PassFlag; \
void llvm::initialize##passName##Pass(PassRegistry &Registry) { \
llvm::call_once(Initialize##passName##PassFlag, \
initialize##passName##PassOnce, std::ref(Registry)); \
}
void call_once(once_flag &flag, Function &&F, Args &&... ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:100
std::once_flag once_flag
Definition: Threading.h:70
demanded Demanded bits analysis
print lazy value Lazy Value Info Printer Pass
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
Initialize the set of available library functions based on the specified target triple.
static const char * name

Definition at line 150 of file PassSupport.h.

◆ INITIALIZE_AG_PASS_BEGIN

#define INITIALIZE_AG_PASS_BEGIN (   passName,
  agName,
  arg,
  n,
  cfg,
  analysis,
  def 
)
Value:
static void *initialize##passName##PassOnce(PassRegistry &Registry) { \
if (!def) \
initialize##agName##AnalysisGroup(Registry);
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
Initialize the set of available library functions based on the specified target triple.

Definition at line 170 of file PassSupport.h.

◆ INITIALIZE_AG_PASS_END

#define INITIALIZE_AG_PASS_END (   passName,
  agName,
  arg,
  n,
  cfg,
  analysis,
  def 
)
Value:
PassInfo *PI = new PassInfo( \
n, arg, &passName::ID, \
PassInfo::NormalCtor_t(callDefaultCtor<passName>), cfg, analysis); \
Registry.registerPass(*PI, true); \
\
PassInfo *AI = new PassInfo(n, &agName::ID); \
Registry.registerAnalysisGroup(&agName::ID, &passName::ID, *AI, def, true); \
return AI; \
} \
static llvm::once_flag Initialize##passName##PassFlag; \
void llvm::initialize##passName##Pass(PassRegistry &Registry) { \
llvm::call_once(Initialize##passName##PassFlag, \
initialize##passName##PassOnce, std::ref(Registry)); \
}
void call_once(once_flag &flag, Function &&F, Args &&... ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:100
std::once_flag once_flag
Definition: Threading.h:70
demanded Demanded bits analysis
print lazy value Lazy Value Info Printer Pass
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
Initialize the set of available library functions based on the specified target triple.

Definition at line 175 of file PassSupport.h.

◆ INITIALIZE_ANALYSIS_GROUP

#define INITIALIZE_ANALYSIS_GROUP (   agName,
  name,
  defaultPass 
)
Value:
static void *initialize##agName##AnalysisGroupOnce(PassRegistry &Registry) { \
initialize##defaultPass##Pass(Registry); \
PassInfo *AI = new PassInfo(name, &agName::ID); \
Registry.registerAnalysisGroup(&agName::ID, 0, *AI, false, true); \
return AI; \
} \
static llvm::once_flag Initialize##agName##AnalysisGroupFlag; \
void llvm::initialize##agName##AnalysisGroup(PassRegistry &Registry) { \
llvm::call_once(Initialize##agName##AnalysisGroupFlag, \
initialize##agName##AnalysisGroupOnce, \
std::ref(Registry)); \
}
void call_once(once_flag &flag, Function &&F, Args &&... ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:100
std::once_flag once_flag
Definition: Threading.h:70
print lazy value Lazy Value Info Printer Pass
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
Initialize the set of available library functions based on the specified target triple.
static const char * name

Definition at line 136 of file PassSupport.h.

◆ INITIALIZE_PASS

#define INITIALIZE_PASS (   passName,
  arg,
  name,
  cfg,
  analysis 
)
Value:
static void *initialize##passName##PassOnce(PassRegistry &Registry) { \
PassInfo *PI = new PassInfo( \
name, arg, &passName::ID, \
PassInfo::NormalCtor_t(callDefaultCtor<passName>), cfg, analysis); \
Registry.registerPass(*PI, true); \
return PI; \
} \
static llvm::once_flag Initialize##passName##PassFlag; \
void llvm::initialize##passName##Pass(PassRegistry &Registry) { \
llvm::call_once(Initialize##passName##PassFlag, \
initialize##passName##PassOnce, std::ref(Registry)); \
}
void call_once(once_flag &flag, Function &&F, Args &&... ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:100
std::once_flag once_flag
Definition: Threading.h:70
demanded Demanded bits analysis
print lazy value Lazy Value Info Printer Pass
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
Initialize the set of available library functions based on the specified target triple.
static const char * name

Definition at line 34 of file PassSupport.h.

Referenced by llvm::AssumptionCacheTracker::AssumptionCacheTracker(), BlockData::BlockData(), llvm::createARMConstantIslandPass(), llvm::createBarrierNoopPass(), llvm::PhiValuesWrapperPass::getAnalysisUsage(), overridePass(), performCustomAdjustments(), llvm::TargetIRAnalysis::run(), llvm::CallGraphWrapperPass::runOnModule(), llvm::scavengeFrameVirtualRegs(), llvm::LoopPass::skipLoop(), llvm::CallGraphSCCPass::skipSCC(), splitGlobals(), llvm::TargetLibraryInfoWrapperPass::TargetLibraryInfoWrapperPass(), and llvm::TBAAVerifier::visitTBAAMetadata().

◆ INITIALIZE_PASS_BEGIN

#define INITIALIZE_PASS_BEGIN (   passName,
  arg,
  name,
  cfg,
  analysis 
)    static void *initialize##passName##PassOnce(PassRegistry &Registry) {

◆ INITIALIZE_PASS_DEPENDENCY

#define INITIALIZE_PASS_DEPENDENCY (   depName)    initialize##depName##Pass(Registry);

Definition at line 51 of file PassSupport.h.

Referenced by llvm::AAResultsWrapperPass::AAResultsWrapperPass(), llvm::ARMBETargetMachine::ARMBETargetMachine(), llvm::BasicAAWrapperPass::BasicAAWrapperPass(), computeBranchTargetAndInversion(), createCallInst(), llvm::createEarlyCSEPass(), llvm::createFalkorMarkStridedAccessesPass(), llvm::createHexagonGenInsert(), llvm::createMemCpyOptPass(), llvm::createMergedLoadStoreMotionPass(), llvm::createPAEvalPass(), llvm::createPGOInstrumentationGenLegacyPass(), llvm::createPlaceSafepointsPass(), llvm::createPPCBranchCoalescingPass(), llvm::createPPCCTRLoops(), llvm::createRewriteStatepointsForGCLegacyPass(), llvm::createSafepointIRVerifierPass(), llvm::createSROAPass(), doCallSiteSplitting(), llvm::ICFLoopSafetyInfo::doesNotWriteMemoryBefore(), llvm::AAEvalLegacyPass::doFinalization(), llvm::CallGraphWrapperPass::dump(), llvm::AliasSetTracker::dump(), llvm::RegionInfoPass::dump(), eliminateTailRecursion(), llvm::LazyValueInfo::enableDT(), formLCSSAOnAllLoops(), llvm::gvn::GVNLegacyPass::getAnalysisUsage(), llvm::GCOVOptions::getDefault(), getMulHu(), llvm::X86TargetMachine::getTargetTransformInfo(), hasProfileData(), llvm::initializeLazyBFIPassPass(), llvm::initializeLazyBPIPassPass(), llvm::initializeLoopPassPass(), llvm::DenseMapInfo< VTableSlot >::isEqual(), moveLCSSAPhis(), optimizeDivRem(), packCmovGroup(), parseCHRFilterFiles(), parseCond(), patchAndReplaceAllUsesWith(), llvm::BlockFrequencyInfo::print(), llvm::AMDGPULibCalls::replaceCall(), replaceDevirtTrigger(), llvm::BoundsCheckingPass::run(), llvm::HotColdSplittingPass::run(), llvm::PartiallyInlineLibCallsPass::run(), llvm::SinkingPass::run(), llvm::PromotePass::run(), llvm::BDCEPass::run(), llvm::GuardWideningPass::run(), llvm::InferFunctionAttrsPass::run(), llvm::LoopRotatePass::run(), llvm::IndVarSimplifyPass::run(), llvm::LoopInstSimplifyPass::run(), llvm::GlobalOptPass::run(), llvm::LoopDeletionPass::run(), llvm::LoopSimplifyCFGPass::run(), llvm::AggressiveInstCombinePass::run(), llvm::ArgumentPromotionPass::run(), llvm::ThreadSanitizerPass::run(), llvm::LoopIdiomRecognizePass::run(), llvm::WarnMissedTransformationsPass::run(), llvm::DSEPass::run(), llvm::IPSCCPPass::run(), llvm::ADCEPass::run(), llvm::LoopStrengthReducePass::run(), llvm::AlwaysInlinerPass::run(), llvm::MemorySanitizerPass::run(), llvm::SCCPPass::run(), llvm::InstrProfiling::run(), llvm::LICMPass::run(), llvm::SCEVAA::run(), llvm::SimplifyCFGPass::run(), llvm::ModuleSummaryIndexAnalysis::run(), llvm::PostOrderFunctionAttrsPass::run(), llvm::SimpleLoopUnswitchPass::run(), llvm::BitcodeWriterPass::run(), llvm::GlobalsAA::run(), llvm::IVUsersAnalysis::run(), llvm::GVNHoistPass::run(), llvm::GVNSinkPass::run(), llvm::MemoryDependenceAnalysis::run(), llvm::DependenceAnalysis::run(), llvm::ScalarEvolutionPrinterPass::run(), runImpl(), llvm::InstructionCombiningPass::runOnFunction(), shouldInstrumentBlock(), llvm::simplifyLoop(), SortCallTargets(), tryToUnrollAndJamLoop(), and tryToUnrollLoop().

◆ INITIALIZE_PASS_END

#define INITIALIZE_PASS_END (   passName,
  arg,
  name,
  cfg,
  analysis 
)
Value:
PassInfo *PI = new PassInfo( \
name, arg, &passName::ID, \
PassInfo::NormalCtor_t(callDefaultCtor<passName>), cfg, analysis); \
Registry.registerPass(*PI, true); \
return PI; \
} \
static llvm::once_flag Initialize##passName##PassFlag; \
void llvm::initialize##passName##Pass(PassRegistry &Registry) { \
llvm::call_once(Initialize##passName##PassFlag, \
initialize##passName##PassOnce, std::ref(Registry)); \
}
void call_once(once_flag &flag, Function &&F, Args &&... ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:100
std::once_flag once_flag
Definition: Threading.h:70
demanded Demanded bits analysis
print lazy value Lazy Value Info Printer Pass
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
Initialize the set of available library functions based on the specified target triple.
static const char * name

Definition at line 55 of file PassSupport.h.

◆ INITIALIZE_PASS_WITH_OPTIONS

#define INITIALIZE_PASS_WITH_OPTIONS (   PassName,
  Arg,
  Name,
  Cfg,
  Analysis 
)
Value:
PassName::registerOptions(); \
INITIALIZE_PASS_END(PassName, Arg, Name, Cfg, Analysis)
amdgpu Simplify well known AMD library false Value Value const Twine & Name
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:48
amdgpu Simplify well known AMD library false Value Value * Arg
block Block Frequency Analysis

Definition at line 68 of file PassSupport.h.

◆ INITIALIZE_PASS_WITH_OPTIONS_BEGIN

#define INITIALIZE_PASS_WITH_OPTIONS_BEGIN (   PassName,
  Arg,
  Name,
  Cfg,
  Analysis 
)
Value:
PassName::registerOptions();
amdgpu Simplify well known AMD library false Value Value const Twine & Name
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:48
amdgpu Simplify well known AMD library false Value Value * Arg
block Block Frequency Analysis

Definition at line 73 of file PassSupport.h.