LLVM 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::ModuleToFunctionPassAdaptor Class Reference

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

#include "llvm/IR/PassManager.h"

Inheritance diagram for llvm::ModuleToFunctionPassAdaptor:
Inheritance graph
[legend]

Public Types

using PassConceptT = detail::PassConcept< Function, FunctionAnalysisManager >
 

Public Member Functions

 ModuleToFunctionPassAdaptor (std::unique_ptr< PassConceptT > Pass, bool EagerlyInvalidate)
 
PreservedAnalyses run (Module &M, ModuleAnalysisManager &AM)
 Runs the function pass across every function in the module.
 
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 
- Public Member Functions inherited from llvm::PassInfoMixin< ModuleToFunctionPassAdaptor >
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 

Static Public Member Functions

static bool isRequired ()
 
- Static Public Member Functions inherited from llvm::PassInfoMixin< ModuleToFunctionPassAdaptor >
static StringRef name ()
 Gets the name of the pass we are mixed into.
 

Detailed Description

Trivial adaptor that maps from a module to its functions.

Designed to allow composition of a FunctionPass(Manager) and a ModulePassManager, by running the FunctionPass(Manager) over every function in the module.

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.

Note that although function passes can access module analyses, module analyses are not invalidated while the function passes are running, so they may be stale. Function analyses will not be stale.

Definition at line 827 of file PassManager.h.

Member Typedef Documentation

◆ PassConceptT

Definition at line 830 of file PassManager.h.

Constructor & Destructor Documentation

◆ ModuleToFunctionPassAdaptor()

llvm::ModuleToFunctionPassAdaptor::ModuleToFunctionPassAdaptor ( std::unique_ptr< PassConceptT Pass,
bool  EagerlyInvalidate 
)
inlineexplicit

Definition at line 832 of file PassManager.h.

Member Function Documentation

◆ isRequired()

static bool llvm::ModuleToFunctionPassAdaptor::isRequired ( )
inlinestatic

Definition at line 841 of file PassManager.h.

◆ printPipeline()

void ModuleToFunctionPassAdaptor::printPipeline ( raw_ostream OS,
function_ref< StringRef(StringRef)>  MapClassName2PassName 
)

Definition at line 94 of file PassManager.cpp.

◆ run()

PreservedAnalyses ModuleToFunctionPassAdaptor::run ( Module M,
ModuleAnalysisManager AM 
)

Runs the function pass across every function in the module.

Definition at line 104 of file PassManager.cpp.


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