LLVM  13.0.0git
Namespaces | Enumerations | Functions | Variables
PassManagerBuilder.cpp File Reference
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
#include "llvm-c/Transforms/PassManagerBuilder.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/CFLAndersAliasAnalysis.h"
#include "llvm/Analysis/CFLSteensAliasAnalysis.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/InlineCost.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/Analysis/ScopedNoAliasAA.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h"
#include "llvm/Transforms/IPO.h"
#include "llvm/Transforms/IPO/Attributor.h"
#include "llvm/Transforms/IPO/ForceFunctionAttrs.h"
#include "llvm/Transforms/IPO/FunctionAttrs.h"
#include "llvm/Transforms/IPO/InferFunctionAttrs.h"
#include "llvm/Transforms/InstCombine/InstCombine.h"
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Scalar/GVN.h"
#include "llvm/Transforms/Scalar/InstSimplifyPass.h"
#include "llvm/Transforms/Scalar/LICM.h"
#include "llvm/Transforms/Scalar/LoopUnrollPass.h"
#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"
#include "llvm/Transforms/Utils.h"
#include "llvm/Transforms/Vectorize.h"
#include "llvm/Transforms/Vectorize/LoopVectorize.h"
#include "llvm/Transforms/Vectorize/SLPVectorizer.h"
#include "llvm/Transforms/Vectorize/VectorCombine.h"
Include dependency graph for PassManagerBuilder.cpp:

Go to the source code of this file.

Namespaces

 llvm
 

Enumerations

enum  llvm::CFLAAType {
  llvm::CFLAAType::None, llvm::CFLAAType::Steensgaard, llvm::CFLAAType::Andersen, llvm::CFLAAType::Both,
  llvm::CFLAAType::None, llvm::CFLAAType::Steensgaard, llvm::CFLAAType::Andersen, llvm::CFLAAType::Both
}
 

Functions

cl::opt< bool > llvm::RunPartialInlining ("enable-partial-inlining", cl::init(false), cl::Hidden, cl::ZeroOrMore, cl::desc("Run Partial inlinining pass"))
 
cl::opt< bool > llvm::ExtraVectorizerPasses ("extra-vectorizer-passes", cl::init(false), cl::Hidden, cl::desc("Run cleanup optimization passes after vectorization."))
 
cl::opt< bool > llvm::RunNewGVN ("enable-newgvn", cl::init(false), cl::Hidden, cl::desc("Run the NewGVN pass"))
 
cl::opt< bool > llvm::EnableLoopInterchange ("enable-loopinterchange", cl::init(false), cl::Hidden, cl::desc("Enable the experimental LoopInterchange Pass"))
 
cl::opt< bool > llvm::EnableUnrollAndJam ("enable-unroll-and-jam", cl::init(false), cl::Hidden, cl::desc("Enable Unroll And Jam Pass"))
 
cl::opt< bool > llvm::EnableLoopFlatten ("enable-loop-flatten", cl::init(false), cl::Hidden, cl::desc("Enable the LoopFlatten Pass"))
 
cl::opt< bool > llvm::EnableHotColdSplit ("hot-cold-split", cl::init(false), cl::ZeroOrMore, cl::desc("Enable hot-cold splitting pass"))
 
cl::opt< bool > llvm::EnableIROutliner ("ir-outliner", cl::init(false), cl::Hidden, cl::desc("Enable ir outliner pass"))
 
cl::opt< bool > llvm::DisablePreInliner ("disable-preinline", cl::init(false), cl::Hidden, cl::desc("Disable pre-instrumentation inliner"))
 
cl::opt< intllvm::PreInlineThreshold ("preinline-threshold", cl::Hidden, cl::init(75), cl::ZeroOrMore, cl::desc("Control the amount of inlining in pre-instrumentation inliner " "(default = 75)"))
 
cl::opt< bool > llvm::EnableGVNHoist ("enable-gvn-hoist", cl::init(false), cl::ZeroOrMore, cl::desc("Enable the GVN hoisting pass (default = off)"))
 
cl::opt< bool > llvm::EnableGVNSink ("enable-gvn-sink", cl::init(false), cl::ZeroOrMore, cl::desc("Enable the GVN sinking pass (default = off)"))
 
cl::opt< bool > llvm::EnableCHR ("enable-chr", cl::init(true), cl::Hidden, cl::desc("Enable control height reduction optimization (CHR)"))
 
cl::opt< bool > llvm::FlattenedProfileUsed ("flattened-profile-used", cl::init(false), cl::Hidden, cl::desc("Indicate the sample profile being used is flattened, i.e., " "no inline hierachy exists in the profile. "))
 
cl::opt< bool > llvm::EnableOrderFileInstrumentation ("enable-order-file-instrumentation", cl::init(false), cl::Hidden, cl::desc("Enable order file instrumentation (default = off)"))
 
cl::opt< bool > llvm::EnableMatrix ("enable-matrix", cl::init(false), cl::Hidden, cl::desc("Enable lowering of the matrix intrinsics"))
 
cl::opt< bool > llvm::EnableConstraintElimination ("enable-constraint-elimination", cl::init(false), cl::Hidden, cl::desc("Enable pass to eliminate conditions based on linear constraints."))
 
cl::opt< AttributorRunOptionllvm::AttributorRun ("attributor-enable", cl::Hidden, cl::init(AttributorRunOption::NONE), cl::desc("Enable the attributor inter-procedural deduction pass."), cl::values(clEnumValN(AttributorRunOption::ALL, "all", "enable all attributor runs"), clEnumValN(AttributorRunOption::MODULE, "module", "enable module-wide attributor runs"), clEnumValN(AttributorRunOption::CGSCC, "cgscc", "enable call graph SCC attributor runs"), clEnumValN(AttributorRunOption::NONE, "none", "disable attributor runs")))
 
static bool GlobalExtensionsNotEmpty ()
 Check if GlobalExtensions is constructed and not empty. More...
 
LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate ()
 See llvm::PassManagerBuilder. More...
 
void LLVMPassManagerBuilderDispose (LLVMPassManagerBuilderRef PMB)
 
void LLVMPassManagerBuilderSetOptLevel (LLVMPassManagerBuilderRef PMB, unsigned OptLevel)
 See llvm::PassManagerBuilder::OptLevel. More...
 
void LLVMPassManagerBuilderSetSizeLevel (LLVMPassManagerBuilderRef PMB, unsigned SizeLevel)
 See llvm::PassManagerBuilder::SizeLevel. More...
 
void LLVMPassManagerBuilderSetDisableUnitAtATime (LLVMPassManagerBuilderRef PMB, LLVMBool Value)
 See llvm::PassManagerBuilder::DisableUnitAtATime. More...
 
void LLVMPassManagerBuilderSetDisableUnrollLoops (LLVMPassManagerBuilderRef PMB, LLVMBool Value)
 See llvm::PassManagerBuilder::DisableUnrollLoops. More...
 
void LLVMPassManagerBuilderSetDisableSimplifyLibCalls (LLVMPassManagerBuilderRef PMB, LLVMBool Value)
 See llvm::PassManagerBuilder::DisableSimplifyLibCalls. More...
 
void LLVMPassManagerBuilderUseInlinerWithThreshold (LLVMPassManagerBuilderRef PMB, unsigned Threshold)
 See llvm::PassManagerBuilder::Inliner. More...
 
void LLVMPassManagerBuilderPopulateFunctionPassManager (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)
 See llvm::PassManagerBuilder::populateFunctionPassManager. More...
 
void LLVMPassManagerBuilderPopulateModulePassManager (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)
 See llvm::PassManagerBuilder::populateModulePassManager. More...
 
void LLVMPassManagerBuilderPopulateLTOPassManager (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)
 See llvm::PassManagerBuilder::populateLTOPassManager. More...
 

Variables

static cl::opt< bool > llvm::UseGVNAfterVectorization ("use-gvn-after-vectorization", cl::init(false), cl::Hidden, cl::desc("Run GVN instead of Early CSE after vectorization passes"))
 
static cl::opt< bool > llvm::RunLoopRerolling ("reroll-loops", cl::Hidden, cl::desc("Run the loop rerolling pass"))
 
static cl::opt<::CFLAATypellvm::UseCFLAA ("use-cfl-aa", cl::init(::CFLAAType::None), cl::Hidden, cl::desc("Enable the new, experimental CFL alias analysis"), cl::values(clEnumValN(::CFLAAType::None, "none", "Disable CFL-AA"), clEnumValN(::CFLAAType::Steensgaard, "steens", "Enable unification-based CFL-AA"), clEnumValN(::CFLAAType::Andersen, "anders", "Enable inclusion-based CFL-AA"), clEnumValN(::CFLAAType::Both, "both", "Enable both variants of CFL-AA")))
 
static cl::opt< bool > llvm::EnablePrepareForThinLTO ("prepare-for-thinlto", cl::init(false), cl::Hidden, cl::desc("Enable preparation for ThinLTO."))
 
static cl::opt< bool > llvm::EnablePerformThinLTO ("perform-thinlto", cl::init(false), cl::Hidden, cl::desc("Enable performing ThinLTO."))
 
static cl::opt< bool > llvm::UseLoopVersioningLICM ("enable-loop-versioning-licm", cl::init(false), cl::Hidden, cl::desc("Enable the experimental Loop Versioning LICM pass"))
 
static cl::opt< bool > llvm::DisableLibCallsShrinkWrap ("disable-libcalls-shrinkwrap", cl::init(false), cl::Hidden, cl::desc("Disable shrink-wrap library calls"))
 
static cl::opt< bool > llvm::EnableSimpleLoopUnswitch ("enable-simple-loop-unswitch", cl::init(false), cl::Hidden, cl::desc("Enable the simple loop unswitch pass. Also enables independent " "cleanup passes integrated into the loop pass manager pipeline."))
 
static ManagedStatic< SmallVector< std::tuple< PassManagerBuilder::ExtensionPointTy, PassManagerBuilder::ExtensionFn, PassManagerBuilder::GlobalExtensionID >, 8 > > GlobalExtensions
 Set of global extensions, automatically added as part of the standard set. More...
 
static PassManagerBuilder::GlobalExtensionID GlobalExtensionsCounter
 

Function Documentation

◆ GlobalExtensionsNotEmpty()

static bool GlobalExtensionsNotEmpty ( )
static

Check if GlobalExtensions is constructed and not empty.

Since GlobalExtensions is a managed static, calling 'empty()' will trigger the construction of the object.

Definition at line 232 of file PassManagerBuilder.cpp.

References GlobalExtensions.

Referenced by llvm::PassManagerBuilder::populateModulePassManager().

Variable Documentation

◆ GlobalExtensions

Set of global extensions, automatically added as part of the standard set.

Definition at line 226 of file PassManagerBuilder.cpp.

Referenced by llvm::PassManagerBuilder::addGlobalExtension(), GlobalExtensionsNotEmpty(), and llvm::PassManagerBuilder::removeGlobalExtension().

◆ GlobalExtensionsCounter

PassManagerBuilder::GlobalExtensionID GlobalExtensionsCounter
static