During the lowering process, does MLIR create some graph-like structure (such as an AST) which is then used to transform and generate the MLIR output code? I’m looking for some abstraction for generic MLIR code and was wondering if there’s something of the sort already implemented that can be used in out-of-tree programs.
Alternatively, It would help to have some form of interface to iterate through MLIR code. I know that LLVM has the
llvm::BasicBlocks classes which are used to traverse the data structure keeping the code. Does MLIR have some similar classes that allow traversing through MLIR code? And if so, can it be used on out of tree programs?