LLVM  3.7.0
Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::ModuleToFunctionPassAdaptor< FunctionPassT > Class Template Reference

Trivial adaptor that maps from a module to its functions. More...

#include <PassManager.h>

Public Member Functions

 ModuleToFunctionPassAdaptor (FunctionPassT Pass)
 
 ModuleToFunctionPassAdaptor (const ModuleToFunctionPassAdaptor &Arg)
 
 ModuleToFunctionPassAdaptor (ModuleToFunctionPassAdaptor &&Arg)
 
ModuleToFunctionPassAdaptoroperator= (ModuleToFunctionPassAdaptor RHS)
 
PreservedAnalyses run (Module &M, ModuleAnalysisManager *AM)
 Runs the function pass across every function in the module. More...
 

Static Public Member Functions

static StringRef name ()
 

Friends

void swap (ModuleToFunctionPassAdaptor &LHS, ModuleToFunctionPassAdaptor &RHS)
 

Detailed Description

template<typename FunctionPassT>
class llvm::ModuleToFunctionPassAdaptor< FunctionPassT >

Trivial adaptor that maps from a module to its functions.

Designed to allow composition of a FunctionPass(Manager) and a ModulePassManager. Note that if this pass is constructed with a pointer to a ModuleAnalysisManager it will run the FunctionAnalysisManagerModuleProxy analysis prior to running the function pass over the module to enable a FunctionAnalysisManager to be used within this run safely.

Function passes run within this adaptor can rely on having exclusive access to the function they are run over. They should not read or modify any other functions! Other threads or systems may be manipulating other functions in the module, and so their state should never be relied on. FIXME: Make the above true for all of LLVM's actual passes, some still violate this principle.

Function passes can also read the module containing the function, but they should not modify that module outside of the use lists of various globals. For example, a function pass is not permitted to add functions to the module. FIXME: Make the above true for all of LLVM's actual passes, some still violate this principle.

Definition at line 764 of file PassManager.h.

Constructor & Destructor Documentation

template<typename FunctionPassT >
llvm::ModuleToFunctionPassAdaptor< FunctionPassT >::ModuleToFunctionPassAdaptor ( FunctionPassT  Pass)
inlineexplicit

Definition at line 766 of file PassManager.h.

template<typename FunctionPassT >
llvm::ModuleToFunctionPassAdaptor< FunctionPassT >::ModuleToFunctionPassAdaptor ( const ModuleToFunctionPassAdaptor< FunctionPassT > &  Arg)
inline

Definition at line 770 of file PassManager.h.

template<typename FunctionPassT >
llvm::ModuleToFunctionPassAdaptor< FunctionPassT >::ModuleToFunctionPassAdaptor ( ModuleToFunctionPassAdaptor< FunctionPassT > &&  Arg)
inline

Definition at line 772 of file PassManager.h.

Member Function Documentation

template<typename FunctionPassT >
static StringRef llvm::ModuleToFunctionPassAdaptor< FunctionPassT >::name ( )
inlinestatic

Definition at line 819 of file PassManager.h.

template<typename FunctionPassT >
ModuleToFunctionPassAdaptor& llvm::ModuleToFunctionPassAdaptor< FunctionPassT >::operator= ( ModuleToFunctionPassAdaptor< FunctionPassT >  RHS)
inline
template<typename FunctionPassT >
PreservedAnalyses llvm::ModuleToFunctionPassAdaptor< FunctionPassT >::run ( Module M,
ModuleAnalysisManager AM 
)
inline

Friends And Related Function Documentation

template<typename FunctionPassT >
void swap ( ModuleToFunctionPassAdaptor< FunctionPassT > &  LHS,
ModuleToFunctionPassAdaptor< FunctionPassT > &  RHS 
)
friend

The documentation for this class was generated from the following file: