9#ifndef MLIR_ANALYSIS_TOPOLOGICALSORTUTILS_H 
   10#define MLIR_ANALYSIS_TOPOLOGICALSORTUTILS_H 
Block represents an ordered list of Operations.
 
Operation is the basic unit of execution within MLIR.
 
This class contains a list of basic blocks and a link to the parent operation it is attached to.
 
This class represents an instance of an SSA value in the MLIR system, representing a computable value...
 
Include the generated interface declarations.
 
SetVector< Block * > getBlocksSortedByDominance(Region ®ion)
Gets a list of blocks that is sorted according to dominance.
 
bool computeTopologicalSorting(MutableArrayRef< Operation * > ops, function_ref< bool(Value, Operation *)> isOperandReady=nullptr)
Compute a topological ordering of the given ops.
 
llvm::SetVector< T, Vector, Set, N > SetVector
 
bool sortTopologically(Block *block, iterator_range< Block::iterator > ops, function_ref< bool(Value, Operation *)> isOperandReady=nullptr)
Given a block, sort a range operations in said block in topological order.
 
llvm::function_ref< Fn > function_ref
 
SetVector< Operation * > topologicalSort(const SetVector< Operation * > &toSort)
Sorts all operations in toSort topologically while also considering region semantics.