LLVM  8.0.1
Classes | Namespaces | Typedefs | Functions
LoopPassManager.h File Reference

This header provides classes for managing a pipeline of passes over loops in LLVM IR. More...

#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/PriorityWorklist.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/LoopAnalysisManager.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Transforms/Utils/LCSSA.h"
#include "llvm/Transforms/Utils/LoopSimplify.h"
Include dependency graph for LoopPassManager.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::RequireAnalysisPass< AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 A partial specialization of the require analysis template pass to forward the extra parameters from a transformation's run method to the AnalysisManager's getResult. More...
 
class  llvm::FunctionToLoopPassAdaptor< LoopPassT >
 Adaptor that maps from a function to its loops. More...
 
class  llvm::LPMUpdater
 This class provides an interface for updating the loop pass manager based on mutations to the loop nest. More...
 
class  llvm::FunctionToLoopPassAdaptor< LoopPassT >
 Adaptor that maps from a function to its loops. More...
 
class  llvm::PrintLoopPass
 Pass for printing a loop's contents as textual IR. More...
 

Namespaces

 llvm
 This class represents lattice values for constants.
 
 llvm::internal
 

Typedefs

typedef PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > llvm::LoopPassManager
 The Loop pass manager. More...
 
template<typename AnalysisT >
using llvm::RequireAnalysisLoopPass = RequireAnalysisPass< AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 An alias template to easily name a require analysis loop pass. More...
 

Functions

template<typename RangeT >
void llvm::internal::appendLoopsToWorklist (RangeT &&Loops, SmallPriorityWorklist< Loop *, 4 > &Worklist)
 Helper to implement appending of loops onto a worklist. More...
 
template<typename LoopPassT >
FunctionToLoopPassAdaptor< LoopPassT > llvm::createFunctionToLoopPassAdaptor (LoopPassT Pass, bool DebugLogging=false)
 A function to deduce a loop pass type and wrap it in the templated adaptor. More...
 

Detailed Description

This header provides classes for managing a pipeline of passes over loops in LLVM IR.

The primary loop pass pipeline is managed in a very particular way to provide a set of core guarantees: 1) Loops are, where possible, in simplified form. 2) Loops are always in LCSSA form. 3) A collection of Loop-specific analysis results are available:

This process is designed to facilitate transformations which simplify, reduce, and remove loops. For passes which are more oriented towards optimizing loops, especially optimizing loop nests instead of single loops in isolation, this framework is less interesting.

Definition in file LoopPassManager.h.