LLVM  3.7.0
Macros | Functions
PassBuilder.cpp File Reference

This file provides the implementation of the PassBuilder based on our static pass registry as well as related functionality. More...

#include "llvm/Passes/PassBuilder.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/CGSCCPassManager.h"
#include "llvm/Analysis/LazyCallGraph.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Support/Debug.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/InstCombine/InstCombine.h"
#include "llvm/Transforms/Scalar/EarlyCSE.h"
#include "llvm/Transforms/Scalar/LowerExpectIntrinsic.h"
#include "llvm/Transforms/Scalar/SimplifyCFG.h"
#include "PassRegistry.def"
Include dependency graph for PassBuilder.cpp:

Go to the source code of this file.

Macros

#define MODULE_ANALYSIS(NAME, CREATE_PASS)   MAM.registerPass(CREATE_PASS);
 
#define CGSCC_ANALYSIS(NAME, CREATE_PASS)   CGAM.registerPass(CREATE_PASS);
 
#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)   FAM.registerPass(CREATE_PASS);
 
#define MODULE_PASS(NAME, CREATE_PASS)   if (Name == NAME) return true;
 
#define MODULE_ANALYSIS(NAME, CREATE_PASS)
 
#define CGSCC_PASS(NAME, CREATE_PASS)   if (Name == NAME) return true;
 
#define CGSCC_ANALYSIS(NAME, CREATE_PASS)
 
#define FUNCTION_PASS(NAME, CREATE_PASS)   if (Name == NAME) return true;
 
#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
 
#define MODULE_PASS(NAME, CREATE_PASS)
 
#define MODULE_ANALYSIS(NAME, CREATE_PASS)
 
#define CGSCC_PASS(NAME, CREATE_PASS)
 
#define CGSCC_ANALYSIS(NAME, CREATE_PASS)
 
#define FUNCTION_PASS(NAME, CREATE_PASS)
 
#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
 

Functions

static bool isModulePassName (StringRef Name)
 
static bool isCGSCCPassName (StringRef Name)
 
static bool isFunctionPassName (StringRef Name)
 

Detailed Description

This file provides the implementation of the PassBuilder based on our static pass registry as well as related functionality.

It also provides helpers to aid in analyzing, debugging, and testing passes and pass pipelines.

Definition in file PassBuilder.cpp.

Macro Definition Documentation

#define CGSCC_ANALYSIS (   NAME,
  CREATE_PASS 
)    CGAM.registerPass(CREATE_PASS);
#define CGSCC_ANALYSIS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \
return true;
#define CGSCC_ANALYSIS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == "require<" NAME ">") { \
CGPM.addPass(RequireAnalysisPass<decltype(CREATE_PASS)>()); \
return true; \
} \
if (Name == "invalidate<" NAME ">") { \
CGPM.addPass(InvalidateAnalysisPass<decltype(CREATE_PASS)>()); \
return true; \
}
A template utility pass to force an analysis result to be available.
Definition: PassManager.h:837
* if(!EatIfPresent(lltok::kw_thread_local)) return false
ParseOptionalThreadLocal := /*empty.
A template utility pass to force an analysis result to be invalidated.
Definition: PassManager.h:860
#define CGSCC_PASS (   NAME,
  CREATE_PASS 
)    if (Name == NAME) return true;
#define CGSCC_PASS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == NAME) { \
CGPM.addPass(CREATE_PASS); \
return true; \
}
#define FUNCTION_ANALYSIS (   NAME,
  CREATE_PASS 
)    FAM.registerPass(CREATE_PASS);
#define FUNCTION_ANALYSIS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \
return true;
#define FUNCTION_ANALYSIS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == "require<" NAME ">") { \
FPM.addPass(RequireAnalysisPass<decltype(CREATE_PASS)>()); \
return true; \
} \
if (Name == "invalidate<" NAME ">") { \
FPM.addPass(InvalidateAnalysisPass<decltype(CREATE_PASS)>()); \
return true; \
}
A template utility pass to force an analysis result to be available.
Definition: PassManager.h:837
* if(!EatIfPresent(lltok::kw_thread_local)) return false
ParseOptionalThreadLocal := /*empty.
A template utility pass to force an analysis result to be invalidated.
Definition: PassManager.h:860
#define FUNCTION_PASS (   NAME,
  CREATE_PASS 
)    if (Name == NAME) return true;
#define FUNCTION_PASS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == NAME) { \
FPM.addPass(CREATE_PASS); \
return true; \
}
#define MODULE_ANALYSIS (   NAME,
  CREATE_PASS 
)    MAM.registerPass(CREATE_PASS);
#define MODULE_ANALYSIS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \
return true;
#define MODULE_ANALYSIS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == "require<" NAME ">") { \
MPM.addPass(RequireAnalysisPass<decltype(CREATE_PASS)>()); \
return true; \
} \
if (Name == "invalidate<" NAME ">") { \
MPM.addPass(InvalidateAnalysisPass<decltype(CREATE_PASS)>()); \
return true; \
}
A template utility pass to force an analysis result to be available.
Definition: PassManager.h:837
* if(!EatIfPresent(lltok::kw_thread_local)) return false
ParseOptionalThreadLocal := /*empty.
A template utility pass to force an analysis result to be invalidated.
Definition: PassManager.h:860
#define MODULE_PASS (   NAME,
  CREATE_PASS 
)    if (Name == NAME) return true;
#define MODULE_PASS (   NAME,
  CREATE_PASS 
)
Value:
if (Name == NAME) { \
MPM.addPass(CREATE_PASS); \
return true; \
}

Function Documentation

static bool isCGSCCPassName ( StringRef  Name)
static

Definition at line 128 of file PassBuilder.cpp.

Referenced by llvm::PassBuilder::parsePassPipeline().

static bool isFunctionPassName ( StringRef  Name)
static

Definition at line 138 of file PassBuilder.cpp.

Referenced by llvm::PassBuilder::parsePassPipeline().

static bool isModulePassName ( StringRef  Name)
static

Definition at line 117 of file PassBuilder.cpp.

Referenced by llvm::PassBuilder::parsePassPipeline().