LLVM API Documentation
#include "Pass.h"#include "llvm/InitializePasses.h"#include "llvm/PassInfo.h"#include "llvm/PassRegistry.h"#include "llvm/Support/Atomic.h"#include "llvm/Support/Valgrind.h"#include <vector>

Go to the source code of this file.
Classes | |
| struct | llvm::RegisterPass< passName > |
| class | llvm::RegisterAGBase |
| struct | llvm::RegisterAnalysisGroup< Interface, Default > |
| struct | llvm::PassRegistrationListener |
Namespaces | |
| namespace | llvm |
List of target independent CodeGen pass IDs. | |
Defines | |
| #define | CALL_ONCE_INITIALIZATION(function) |
| #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_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 > | |
| Pass * | llvm::callDefaultCtor () |
| template<typename PassName > | |
| Pass * | llvm::callTargetMachineCtor (TargetMachine *TM) |
| #define CALL_ONCE_INITIALIZATION | ( | function | ) |
static volatile sys::cas_flag initialized = 0; \ sys::cas_flag old_val = sys::CompareAndSwap(&initialized, 1, 0); \ if (old_val == 0) { \ function(Registry); \ sys::MemoryFence(); \ TsanIgnoreWritesBegin(); \ TsanHappensBefore(&initialized); \ initialized = 2; \ TsanIgnoreWritesEnd(); \ } else { \ sys::cas_flag tmp = initialized; \ sys::MemoryFence(); \ while (tmp != 2) { \ tmp = initialized; \ sys::MemoryFence(); \ } \ } \ TsanHappensAfter(&initialized);
Definition at line 36 of file PassSupport.h.
Referenced by llvm::initializeHexagonCFGOptimizerPass(), llvm::initializeHexagonDAGToDAGISelPass(), llvm::initializeHexagonExpandPredSpillCodePass(), llvm::initializeHexagonSplitTFRCondSetsPass(), and llvm::initializePPCDAGToDAGISelPass().
| #define INITIALIZE_AG_DEPENDENCY | ( | depName | ) | initialize##depName##AnalysisGroup(Registry); |
Definition at line 72 of file PassSupport.h.
| #define INITIALIZE_AG_PASS | ( | passName, | |
| agName, | |||
| arg, | |||
| name, | |||
| cfg, | |||
| analysis, | |||
| def | |||
| ) |
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; \ } \ void llvm::initialize##passName##Pass(PassRegistry &Registry) { \ CALL_ONCE_INITIALIZATION(initialize##passName##PassOnce) \ }
Definition at line 175 of file PassSupport.h.
| #define INITIALIZE_AG_PASS_BEGIN | ( | passName, | |
| agName, | |||
| arg, | |||
| n, | |||
| cfg, | |||
| analysis, | |||
| def | |||
| ) |
static void* initialize##passName##PassOnce(PassRegistry &Registry) { \ if (!def) initialize##agName##AnalysisGroup(Registry);
Definition at line 192 of file PassSupport.h.
| #define INITIALIZE_AG_PASS_END | ( | passName, | |
| agName, | |||
| arg, | |||
| n, | |||
| cfg, | |||
| analysis, | |||
| def | |||
| ) |
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; \ } \ void llvm::initialize##passName##Pass(PassRegistry &Registry) { \ CALL_ONCE_INITIALIZATION(initialize##passName##PassOnce) \ }
Definition at line 196 of file PassSupport.h.
| #define INITIALIZE_ANALYSIS_GROUP | ( | agName, | |
| name, | |||
| defaultPass | |||
| ) |
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; \ } \ void llvm::initialize##agName##AnalysisGroup(PassRegistry &Registry) { \ CALL_ONCE_INITIALIZATION(initialize##agName##AnalysisGroupOnce) \ }
Definition at line 163 of file PassSupport.h.
| #define INITIALIZE_PASS | ( | passName, | |
| arg, | |||
| name, | |||
| cfg, | |||
| analysis | |||
| ) |
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; \ } \ void llvm::initialize##passName##Pass(PassRegistry &Registry) { \ CALL_ONCE_INITIALIZATION(initialize##passName##PassOnce) \ }
Definition at line 56 of file PassSupport.h.
| #define INITIALIZE_PASS_BEGIN | ( | passName, | |
| arg, | |||
| name, | |||
| cfg, | |||
| analysis | |||
| ) | static void* initialize##passName##PassOnce(PassRegistry &Registry) { |
Definition at line 67 of file PassSupport.h.
| #define INITIALIZE_PASS_DEPENDENCY | ( | depName | ) | initialize##depName##Pass(Registry); |
Definition at line 70 of file PassSupport.h.
| #define INITIALIZE_PASS_END | ( | passName, | |
| arg, | |||
| name, | |||
| cfg, | |||
| analysis | |||
| ) |
PassInfo *PI = new PassInfo(name, arg, & passName ::ID, \ PassInfo::NormalCtor_t(callDefaultCtor< passName >), cfg, analysis); \ Registry.registerPass(*PI, true); \ return PI; \ } \ void llvm::initialize##passName##Pass(PassRegistry &Registry) { \ CALL_ONCE_INITIALIZATION(initialize##passName##PassOnce) \ }
Definition at line 75 of file PassSupport.h.