LLVM  4.0.0
Classes | Namespaces | Macros | Functions
PassSupport.h File Reference
#include "Pass.h"
#include "llvm/InitializePasses.h"
#include "llvm/PassInfo.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/Atomic.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
 Compute iterated dominance frontiers using a linear time algorithm.
 

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 ()
 
template<typename PassName >
Passllvm::callTargetMachineCtor (TargetMachine *TM)
 

Macro Definition Documentation

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

Definition at line 54 of file PassSupport.h.

#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; \
} \
LLVM_DEFINE_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
void call_once(once_flag &flag, Function &&F, Args &&...ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:91
* if(!EatIfPresent(lltok::kw_thread_local)) return false
ParseOptionalThreadLocal := /*empty.
demanded Demanded bits analysis
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
initialize - Initialize the set of available library functions based on the specified target triple...
#define LLVM_DEFINE_ONCE_FLAG(flag)
This macro is the only way you should define your once flag for LLVM's call_once. ...
Definition: Threading.h:65
static const char * name

Definition at line 162 of file PassSupport.h.

#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);
* if(!EatIfPresent(lltok::kw_thread_local)) return false
ParseOptionalThreadLocal := /*empty.
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
initialize - Initialize the set of available library functions based on the specified target triple...

Definition at line 182 of file PassSupport.h.

#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; \
} \
LLVM_DEFINE_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
void call_once(once_flag &flag, Function &&F, Args &&...ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:91
demanded Demanded bits analysis
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
initialize - Initialize the set of available library functions based on the specified target triple...
#define LLVM_DEFINE_ONCE_FLAG(flag)
This macro is the only way you should define your once flag for LLVM's call_once. ...
Definition: Threading.h:65

Definition at line 187 of file PassSupport.h.

#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; \
} \
LLVM_DEFINE_ONCE_FLAG(Initialize##agName##AnalysisGroupFlag); \
void llvm::initialize##agName##AnalysisGroup(PassRegistry &Registry) { \
llvm::call_once(Initialize##agName##AnalysisGroupFlag, \
initialize##agName##AnalysisGroupOnce, \
std::ref(Registry)); \
}
aarch64 AArch64 CCMP Pass
void call_once(once_flag &flag, Function &&F, Args &&...ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:91
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
initialize - Initialize the set of available library functions based on the specified target triple...
#define LLVM_DEFINE_ONCE_FLAG(flag)
This macro is the only way you should define your once flag for LLVM's call_once. ...
Definition: Threading.h:65
static const char * name

Definition at line 148 of file PassSupport.h.

#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; \
} \
LLVM_DEFINE_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
void call_once(once_flag &flag, Function &&F, Args &&...ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:91
demanded Demanded bits analysis
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
initialize - Initialize the set of available library functions based on the specified target triple...
#define LLVM_DEFINE_ONCE_FLAG(flag)
This macro is the only way you should define your once flag for LLVM's call_once. ...
Definition: Threading.h:65
static const char * name

Definition at line 36 of file PassSupport.h.

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

Definition at line 50 of file PassSupport.h.

#define INITIALIZE_PASS_DEPENDENCY (   depName)    initialize##depName##Pass(Registry);
#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; \
} \
LLVM_DEFINE_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
void call_once(once_flag &flag, Function &&F, Args &&...ArgList)
Execute the function specified as a parameter once.
Definition: Threading.h:91
demanded Demanded bits analysis
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringRef > StandardNames)
initialize - Initialize the set of available library functions based on the specified target triple...
#define LLVM_DEFINE_ONCE_FLAG(flag)
This macro is the only way you should define your once flag for LLVM's call_once. ...
Definition: Threading.h:65
static const char * name

Definition at line 57 of file PassSupport.h.

#define INITIALIZE_PASS_WITH_OPTIONS (   PassName,
  Arg,
  Name,
  Cfg,
  Analysis 
)
Value:
INITIALIZE_PASS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \
PassName::registerOptions(); \
INITIALIZE_PASS_END(PassName, Arg, Name, Cfg, Analysis)
#define INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:57
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:50
block Block Frequency Analysis

Definition at line 70 of file PassSupport.h.

#define INITIALIZE_PASS_WITH_OPTIONS_BEGIN (   PassName,
  Arg,
  Name,
  Cfg,
  Analysis 
)
Value:
INITIALIZE_PASS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \
PassName::registerOptions();
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis)
Definition: PassSupport.h:50
block Block Frequency Analysis

Definition at line 75 of file PassSupport.h.