|
LLVM
4.0.0
|
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/ADT/StringSwitch.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/AliasAnalysisEvaluator.h"#include "llvm/Analysis/AssumptionCache.h"#include "llvm/Analysis/BasicAliasAnalysis.h"#include "llvm/Analysis/BlockFrequencyInfo.h"#include "llvm/Analysis/BlockFrequencyInfoImpl.h"#include "llvm/Analysis/BranchProbabilityInfo.h"#include "llvm/Analysis/CFGPrinter.h"#include "llvm/Analysis/CFLAndersAliasAnalysis.h"#include "llvm/Analysis/CFLSteensAliasAnalysis.h"#include "llvm/Analysis/CGSCCPassManager.h"#include "llvm/Analysis/CallGraph.h"#include "llvm/Analysis/DemandedBits.h"#include "llvm/Analysis/DependenceAnalysis.h"#include "llvm/Analysis/DominanceFrontier.h"#include "llvm/Analysis/GlobalsModRef.h"#include "llvm/Analysis/IVUsers.h"#include "llvm/Analysis/LazyCallGraph.h"#include "llvm/Analysis/LazyValueInfo.h"#include "llvm/Analysis/LoopAccessAnalysis.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/MemoryDependenceAnalysis.h"#include "llvm/Analysis/ModuleSummaryAnalysis.h"#include "llvm/Analysis/OptimizationDiagnosticInfo.h"#include "llvm/Analysis/PostDominators.h"#include "llvm/Analysis/ProfileSummaryInfo.h"#include "llvm/Analysis/RegionInfo.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"#include "llvm/Analysis/ScopedNoAliasAA.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/Analysis/TargetTransformInfo.h"#include "llvm/Analysis/TypeBasedAliasAnalysis.h"#include "llvm/CodeGen/PreISelIntrinsicLowering.h"#include "llvm/CodeGen/UnreachableBlockElim.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/Support/Regex.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Transforms/GCOVProfiler.h"#include "llvm/Transforms/IPO/AlwaysInliner.h"#include "llvm/Transforms/IPO/ConstantMerge.h"#include "llvm/Transforms/IPO/CrossDSOCFI.h"#include "llvm/Transforms/IPO/DeadArgumentElimination.h"#include "llvm/Transforms/IPO/ElimAvailExtern.h"#include "llvm/Transforms/IPO/ForceFunctionAttrs.h"#include "llvm/Transforms/IPO/FunctionAttrs.h"#include "llvm/Transforms/IPO/FunctionImport.h"#include "llvm/Transforms/IPO/GlobalDCE.h"#include "llvm/Transforms/IPO/GlobalOpt.h"#include "llvm/Transforms/IPO/GlobalSplit.h"#include "llvm/Transforms/IPO/InferFunctionAttrs.h"#include "llvm/Transforms/IPO/Inliner.h"#include "llvm/Transforms/IPO/Internalize.h"#include "llvm/Transforms/IPO/LowerTypeTests.h"#include "llvm/Transforms/IPO/PartialInlining.h"#include "llvm/Transforms/IPO/SCCP.h"#include "llvm/Transforms/IPO/StripDeadPrototypes.h"#include "llvm/Transforms/IPO/WholeProgramDevirt.h"#include "llvm/Transforms/InstCombine/InstCombine.h"#include "llvm/Transforms/InstrProfiling.h"#include "llvm/Transforms/PGOInstrumentation.h"#include "llvm/Transforms/SampleProfile.h"#include "llvm/Transforms/Scalar/ADCE.h"#include "llvm/Transforms/Scalar/AlignmentFromAssumptions.h"#include "llvm/Transforms/Scalar/BDCE.h"#include "llvm/Transforms/Scalar/ConstantHoisting.h"#include "llvm/Transforms/Scalar/CorrelatedValuePropagation.h"#include "llvm/Transforms/Scalar/DCE.h"#include "llvm/Transforms/Scalar/DeadStoreElimination.h"#include "llvm/Transforms/Scalar/EarlyCSE.h"#include "llvm/Transforms/Scalar/Float2Int.h"#include "llvm/Transforms/Scalar/GVN.h"#include "llvm/Transforms/Scalar/GuardWidening.h"#include "llvm/Transforms/Scalar/IVUsersPrinter.h"#include "llvm/Transforms/Scalar/IndVarSimplify.h"#include "llvm/Transforms/Scalar/JumpThreading.h"#include "llvm/Transforms/Scalar/LICM.h"#include "llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h"#include "llvm/Transforms/Scalar/LoopDataPrefetch.h"#include "llvm/Transforms/Scalar/LoopDeletion.h"#include "llvm/Transforms/Scalar/LoopDistribute.h"#include "llvm/Transforms/Scalar/LoopIdiomRecognize.h"#include "llvm/Transforms/Scalar/LoopInstSimplify.h"#include "llvm/Transforms/Scalar/LoopPassManager.h"#include "llvm/Transforms/Scalar/LoopRotation.h"#include "llvm/Transforms/Scalar/LoopSimplifyCFG.h"#include "llvm/Transforms/Scalar/LoopStrengthReduce.h"#include "llvm/Transforms/Scalar/LoopUnrollPass.h"#include "llvm/Transforms/Scalar/LowerAtomic.h"#include "llvm/Transforms/Scalar/LowerExpectIntrinsic.h"#include "llvm/Transforms/Scalar/LowerGuardIntrinsic.h"#include "llvm/Transforms/Scalar/MemCpyOptimizer.h"#include "llvm/Transforms/Scalar/MergedLoadStoreMotion.h"#include "llvm/Transforms/Scalar/NaryReassociate.h"#include "llvm/Transforms/Scalar/NewGVN.h"#include "llvm/Transforms/Scalar/PartiallyInlineLibCalls.h"#include "llvm/Transforms/Scalar/Reassociate.h"#include "llvm/Transforms/Scalar/SCCP.h"#include "llvm/Transforms/Scalar/SROA.h"#include "llvm/Transforms/Scalar/SimplifyCFG.h"#include "llvm/Transforms/Scalar/Sink.h"#include "llvm/Transforms/Scalar/SpeculativeExecution.h"#include "llvm/Transforms/Scalar/TailRecursionElimination.h"#include "llvm/Transforms/Utils/AddDiscriminators.h"#include "llvm/Transforms/Utils/BreakCriticalEdges.h"#include "llvm/Transforms/Utils/LCSSA.h"#include "llvm/Transforms/Utils/LibCallsShrinkWrap.h"#include "llvm/Transforms/Utils/LoopSimplify.h"#include "llvm/Transforms/Utils/LowerInvoke.h"#include "llvm/Transforms/Utils/Mem2Reg.h"#include "llvm/Transforms/Utils/MemorySSA.h"#include "llvm/Transforms/Utils/NameAnonGlobals.h"#include "llvm/Transforms/Utils/SimplifyInstructions.h"#include "llvm/Transforms/Utils/SymbolRewriter.h"#include "llvm/Transforms/Vectorize/LoopVectorize.h"#include "llvm/Transforms/Vectorize/SLPVectorizer.h"#include <type_traits>#include "PassRegistry.def"Go to the source code of this file.
Macros | |
| #define | MODULE_ANALYSIS(NAME, CREATE_PASS) MAM.registerPass([&] { return CREATE_PASS; }); |
| #define | CGSCC_ANALYSIS(NAME, CREATE_PASS) CGAM.registerPass([&] { return CREATE_PASS; }); |
| #define | FUNCTION_ANALYSIS(NAME, CREATE_PASS) FAM.registerPass([&] { return CREATE_PASS; }); |
| #define | LOOP_ANALYSIS(NAME, CREATE_PASS) LAM.registerPass([&] { return 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) |
| #define | LOOP_PASS(NAME, CREATE_PASS) |
| #define | LOOP_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) |
| #define | LOOP_PASS(NAME, CREATE_PASS) |
| #define | LOOP_ANALYSIS(NAME, CREATE_PASS) |
| #define | MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) |
| #define | FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) |
Functions | |
| static bool | isOptimizingForSize (PassBuilder::OptimizationLevel Level) |
| static Optional< int > | parseRepeatPassName (StringRef Name) |
| static Optional< int > | parseDevirtPassName (StringRef Name) |
| static bool | isModulePassName (StringRef Name) |
| static bool | isCGSCCPassName (StringRef Name) |
| static bool | isFunctionPassName (StringRef Name) |
| static bool | isLoopPassName (StringRef Name) |
Variables | |
| static Regex | DefaultAliasRegex ("^(default|lto-pre-link|lto)<(O[0123sz])>$") |
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.
| #define CGSCC_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) | CGAM.registerPass([&] { return CREATE_PASS; }); |
| #define CGSCC_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define CGSCC_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define CGSCC_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define CGSCC_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define FUNCTION_ALIAS_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define FUNCTION_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) | FAM.registerPass([&] { return CREATE_PASS; }); |
| #define FUNCTION_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define FUNCTION_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define FUNCTION_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define FUNCTION_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define LOOP_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) | LAM.registerPass([&] { return CREATE_PASS; }); |
| #define LOOP_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define LOOP_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define LOOP_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define LOOP_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define MODULE_ALIAS_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define MODULE_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) | MAM.registerPass([&] { return CREATE_PASS; }); |
| #define MODULE_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define MODULE_ANALYSIS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define MODULE_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
| #define MODULE_PASS | ( | NAME, | |
| CREATE_PASS | |||
| ) |
Definition at line 638 of file PassBuilder.cpp.
References parseDevirtPassName(), and parseRepeatPassName().
Referenced by llvm::PassBuilder::parsePassPipeline().
Definition at line 662 of file PassBuilder.cpp.
References parseRepeatPassName().
Referenced by llvm::PassBuilder::parsePassPipeline().
Definition at line 684 of file PassBuilder.cpp.
References parseRepeatPassName().
Referenced by llvm::PassBuilder::parsePassPipeline().
Definition at line 610 of file PassBuilder.cpp.
References DefaultAliasRegex, llvm::Regex::match(), parseRepeatPassName(), and llvm::StringRef::startswith().
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 147 of file PassBuilder.cpp.
References llvm_unreachable, llvm::PassBuilder::O0, llvm::PassBuilder::O1, llvm::PassBuilder::O2, llvm::PassBuilder::O3, llvm::PassBuilder::Os, and llvm::PassBuilder::Oz.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline().
Definition at line 601 of file PassBuilder.cpp.
References llvm::StringRef::consume_back(), llvm::StringRef::consume_front(), llvm::StringRef::getAsInteger(), and llvm::None.
Referenced by isCGSCCPassName().
Definition at line 592 of file PassBuilder.cpp.
References llvm::StringRef::consume_back(), llvm::StringRef::consume_front(), llvm::StringRef::getAsInteger(), and llvm::None.
Referenced by isCGSCCPassName(), isFunctionPassName(), isLoopPassName(), and isModulePassName().
|
static |
Referenced by isModulePassName().
1.8.6