My Project
Static Public Member Functions | Protected Member Functions | List of all members
mlir::detail::PassModel< PassT, BasePassT > Class Template Reference

#include <Pass.h>

Inheritance diagram for mlir::detail::PassModel< PassT, BasePassT >:
Inheritance graph
[legend]
Collaboration diagram for mlir::detail::PassModel< PassT, BasePassT >:
Collaboration graph
[legend]

Static Public Member Functions

static bool classof (const Pass *pass)
 Support isa/dyn_cast functionality for the derived pass class. More...
 

Protected Member Functions

 PassModel (Optional< StringRef > opName=llvm::None)
 
void signalPassFailure ()
 
template<typename AnalysisT >
AnalysisT & getAnalysis ()
 Query an analysis for the current ir unit. More...
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedAnalysis ()
 
void markAllAnalysesPreserved ()
 Mark all analyses as preserved. More...
 
template<typename... AnalysesT>
void markAnalysesPreserved ()
 Mark the provided analyses as preserved. More...
 
void markAnalysesPreserved (const AnalysisID *id)
 
StringRef getName () override
 Returns the derived pass name. More...
 
std::unique_ptr< Passclone () const override
 A clone method to create a copy of this pass. More...
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedParentAnalysis (Operation *parent)
 Returns the analysis for the parent operation if it exists. More...
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedParentAnalysis ()
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedChildAnalysis (Operation *child)
 Returns the analysis for the given child operation if it exists. More...
 
template<typename AnalysisT >
AnalysisT & getChildAnalysis (Operation *child)
 

Detailed Description

template<typename PassT, typename BasePassT>
class mlir::detail::PassModel< PassT, BasePassT >

The opaque CRTP model of a pass. This class provides utilities for derived pass execution and handles all of the necessary polymorphic API.

Constructor & Destructor Documentation

◆ PassModel()

template<typename PassT, typename BasePassT>
mlir::detail::PassModel< PassT, BasePassT >::PassModel ( Optional< StringRef >  opName = llvm::None)
inlineexplicitprotected

Member Function Documentation

◆ classof()

template<typename PassT, typename BasePassT>
static bool mlir::detail::PassModel< PassT, BasePassT >::classof ( const Pass pass)
inlinestatic

Support isa/dyn_cast functionality for the derived pass class.

◆ clone()

template<typename PassT, typename BasePassT>
std::unique_ptr<Pass> mlir::detail::PassModel< PassT, BasePassT >::clone ( ) const
inlineoverrideprotected

A clone method to create a copy of this pass.

◆ getAnalysis()

template<typename PassT, typename BasePassT>
template<typename AnalysisT >
AnalysisT& mlir::detail::PassModel< PassT, BasePassT >::getAnalysis ( )
inlineprotected

Query an analysis for the current ir unit.

◆ getCachedAnalysis()

template<typename PassT, typename BasePassT>
template<typename AnalysisT >
Optional<std::reference_wrapper<AnalysisT> > mlir::detail::PassModel< PassT, BasePassT >::getCachedAnalysis ( )
inlineprotected

Query a cached instance of an analysis for the current ir unit if one exists.

◆ getCachedChildAnalysis()

template<typename PassT, typename BasePassT>
template<typename AnalysisT >
Optional<std::reference_wrapper<AnalysisT> > mlir::detail::PassModel< PassT, BasePassT >::getCachedChildAnalysis ( Operation child)
inlineprotected

Returns the analysis for the given child operation if it exists.

◆ getCachedParentAnalysis() [1/2]

template<typename PassT, typename BasePassT>
template<typename AnalysisT >
Optional<std::reference_wrapper<AnalysisT> > mlir::detail::PassModel< PassT, BasePassT >::getCachedParentAnalysis ( Operation parent)
inlineprotected

Returns the analysis for the parent operation if it exists.

◆ getCachedParentAnalysis() [2/2]

template<typename PassT, typename BasePassT>
template<typename AnalysisT >
Optional<std::reference_wrapper<AnalysisT> > mlir::detail::PassModel< PassT, BasePassT >::getCachedParentAnalysis ( )
inlineprotected

◆ getChildAnalysis()

template<typename PassT, typename BasePassT>
template<typename AnalysisT >
AnalysisT& mlir::detail::PassModel< PassT, BasePassT >::getChildAnalysis ( Operation child)
inlineprotected

Returns the analysis for the given child operation, or creates it if it doesn't exist.

◆ getName()

template<typename PassT, typename BasePassT>
StringRef mlir::detail::PassModel< PassT, BasePassT >::getName ( )
inlineoverrideprotected

Returns the derived pass name.

◆ markAllAnalysesPreserved()

template<typename PassT, typename BasePassT>
void mlir::detail::PassModel< PassT, BasePassT >::markAllAnalysesPreserved ( )
inlineprotected

Mark all analyses as preserved.

◆ markAnalysesPreserved() [1/2]

template<typename PassT, typename BasePassT>
template<typename... AnalysesT>
void mlir::detail::PassModel< PassT, BasePassT >::markAnalysesPreserved ( )
inlineprotected

Mark the provided analyses as preserved.

◆ markAnalysesPreserved() [2/2]

template<typename PassT, typename BasePassT>
void mlir::detail::PassModel< PassT, BasePassT >::markAnalysesPreserved ( const AnalysisID id)
inlineprotected

◆ signalPassFailure()

template<typename PassT, typename BasePassT>
void mlir::detail::PassModel< PassT, BasePassT >::signalPassFailure ( )
inlineprotected

Signal that some invariant was broken when running. The IR is allowed to be in an invalid state.


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