LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces
IR/PassManager.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/polymorphic_ptr.h"
#include "llvm/Support/type_traits.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Module.h"
#include <list>
#include <vector>
Include dependency graph for IR/PassManager.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::detail::PassConcept< T >
 Template for the abstract base class used to dispatch polymorphically over pass objects. More...
 
struct  llvm::detail::PassModel< T, PassT >
 A template wrapper used to implement the polymorphic API. More...
 
class  llvm::ModulePassManager
 
class  llvm::FunctionPassManager
 
class  llvm::AnalysisManager
 An analysis manager to coordinate and cache analyses run over a module. More...
 

Namespaces

 llvm
 List of target independent CodeGen pass IDs.
 
 llvm::detail
 Implementation details of the pass manager interfaces.
 

Detailed Description

This header defines various interfaces for pass management in LLVM. There is no "pass" interface in LLVM per se. Instead, an instance of any class which supports a method to 'run' it over a unit of IR can be used as a pass. A pass manager is generally a tool to collect a sequence of passes which run over a particular IR construct, and run each of them in sequence over each such construct in the containing IR construct. As there is no containing IR construct for a Module, a manager for passes over modules forms the base case which runs its managed passes in sequence over the single module provided.

The core IR library provides managers for running passes over modules and functions.

Note that the implementations of the pass managers use concept-based polymorphism as outlined in the "Value Semantics and Concept-based Polymorphism" talk (or its abbreviated sibling "Inheritance Is The Base Class of Evil") by Sean Parent:

Definition in file IR/PassManager.h.