MLIR  22.0.0git
Public Member Functions | Friends | List of all members
mlir::RegionSuccessor Class Reference

This class represents a successor of a region. More...

#include "mlir/Interfaces/ControlFlowInterfaces.h"

Public Member Functions

 RegionSuccessor (Region *region, Block::BlockArgListType regionInputs={})
 Initialize a successor that branches to another region of the parent operation. More...
 
 RegionSuccessor (Operation *successorOp, Operation::result_range results)
 Initialize a successor that branches back to/out of the parent operation. More...
 
RegiongetSuccessor () const
 Return the given region successor. More...
 
bool isParent () const
 Return true if the successor is the parent operation. More...
 
ValueRange getSuccessorInputs () const
 Return the inputs to the successor that are remapped by the exit values of the current region. More...
 
bool operator== (RegionSuccessor rhs) const
 

Friends

bool operator!= (RegionSuccessor lhs, RegionSuccessor rhs)
 

Detailed Description

This class represents a successor of a region.

A region successor can either be another region, or the parent operation. If the successor is a region, this class represents the destination region, as well as a set of arguments from that region that will be populated when control flows into the region. If the successor is the parent operation, this class represents an optional set of results that will be populated when control returns to the parent operation.

This interface assumes that the values from the current region that are used to populate the successor inputs are the operands of the return-like terminator operations in the blocks within this region.

Definition at line 190 of file ControlFlowInterfaces.h.

Constructor & Destructor Documentation

◆ RegionSuccessor() [1/2]

mlir::RegionSuccessor::RegionSuccessor ( Region region,
Block::BlockArgListType  regionInputs = {} 
)
inline

Initialize a successor that branches to another region of the parent operation.

TODO: the default value for the regionInputs is somehow broken. A region successor should have its input correctly set.

Definition at line 196 of file ControlFlowInterfaces.h.

◆ RegionSuccessor() [2/2]

mlir::RegionSuccessor::RegionSuccessor ( Operation successorOp,
Operation::result_range  results 
)
inline

Initialize a successor that branches back to/out of the parent operation.

The target must be one of the recursive parent operations.

Definition at line 202 of file ControlFlowInterfaces.h.

Member Function Documentation

◆ getSuccessor()

Region* mlir::RegionSuccessor::getSuccessor ( ) const
inline

Return the given region successor.

Returns nullptr if the successor is the parent operation.

Definition at line 209 of file ControlFlowInterfaces.h.

Referenced by getRegionPredecessorOperands(), mlir::operator<<(), printRegionEdgeName(), and mlir::dataflow::IntegerRangeAnalysis::visitNonControlFlowArguments().

◆ getSuccessorInputs()

ValueRange mlir::RegionSuccessor::getSuccessorInputs ( ) const
inline

Return the inputs to the successor that are remapped by the exit values of the current region.

Definition at line 216 of file ControlFlowInterfaces.h.

Referenced by mlir::operator<<(), and mlir::dataflow::SparseForwardDataFlowAnalysis< StateT >::visitNonControlFlowArguments().

◆ isParent()

bool mlir::RegionSuccessor::isParent ( ) const
inline

Return true if the successor is the parent operation.

Definition at line 212 of file ControlFlowInterfaces.h.

Referenced by mlir::operator<<().

◆ operator==()

bool mlir::RegionSuccessor::operator== ( RegionSuccessor  rhs) const
inline

Definition at line 218 of file ControlFlowInterfaces.h.

Friends And Related Function Documentation

◆ operator!=

bool operator!= ( RegionSuccessor  lhs,
RegionSuccessor  rhs 
)
friend

Definition at line 222 of file ControlFlowInterfaces.h.


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