LLVM 19.0.0git
Classes | Namespaces | Macros | Functions
PassSupport.h File Reference
#include "llvm/ADT/StringRef.h"
#include "llvm/PassInfo.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/Threading.h"
#include <functional>

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

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

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<class PassName , std::enable_if_t< std::is_default_constructible< PassName >{}, bool > = true>
Passllvm::callDefaultCtor ()
 

Macro Definition Documentation

◆ INITIALIZE_AG_DEPENDENCY

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

Definition at line 56 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)); \
}
aarch64 AArch64 CCMP Pass
module summary analysis
static const char * name
Definition: SMEABIPass.cpp:49
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringLiteral > StandardNames)
Initialize the set of available library functions based on the specified target triple.
The llvm::once_flag structure.
Definition: Threading.h:68

Definition at line 168 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);

Definition at line 188 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)); \
}

Definition at line 193 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)); \
}

Definition at line 154 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)); \
}

Definition at line 38 of file PassSupport.h.

◆ INITIALIZE_PASS_BEGIN

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

Definition at line 52 of file PassSupport.h.

◆ INITIALIZE_PASS_DEPENDENCY

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

Definition at line 55 of file PassSupport.h.

◆ 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)); \
}

Definition at line 59 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)
block Block Frequency Analysis
std::string Name
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:52
static const char PassName[]

Definition at line 72 of file PassSupport.h.

◆ INITIALIZE_PASS_WITH_OPTIONS_BEGIN

#define INITIALIZE_PASS_WITH_OPTIONS_BEGIN (   PassName,
  Arg,
  Name,
  Cfg,
  Analysis 
)
Value:
PassName::registerOptions();

Definition at line 77 of file PassSupport.h.