[mlir][IR] Add Iterator template option to IR walkers
authorMatthias Springer <me@m-sp.org>
Fri, 24 Feb 2023 09:13:36 +0000 (10:13 +0100)
committerMatthias Springer <me@m-sp.org>
Fri, 24 Feb 2023 09:24:47 +0000 (10:24 +0100)
commitbc8de519ea6d47a6d1602508eb24594493e9912e
treef8a068ca93abd0e268c1152962531f3b4171173b
parenteddecd3ade5ce1b827dafb84e8137cc6f89576fb
[mlir][IR] Add Iterator template option to IR walkers

This allows users to specify a  top-down or bottom-up traversal of the IR, in addition to the already existing WalkOrder.

Certain transformations work better with a forward traversal. E.g., when cloning a piece of IR, operations should be cloned top-down so that all uses are defined when creating an op.

Certain transformations work better with a reverse traversal. E.g., when erasing a piece of IR, operations should be erased bottom-up to avoid erasing operations that still have users.

Differential Revision: https://reviews.llvm.org/D144257
mlir/include/mlir/IR/Block.h
mlir/include/mlir/IR/OpDefinition.h
mlir/include/mlir/IR/Operation.h
mlir/include/mlir/IR/Region.h
mlir/include/mlir/IR/Visitors.h
mlir/lib/IR/Visitors.cpp