[mlir][bufferization][NFC] Bufferize with PostOrder traversal
authorMatthias Springer <springerm@google.com>
Mon, 27 Jun 2022 10:42:07 +0000 (12:42 +0200)
committerMatthias Springer <springerm@google.com>
Mon, 27 Jun 2022 10:42:41 +0000 (12:42 +0200)
commitba9d886db4fbb2dfd6787bfa073811e77eacbfe7
tree685722270664e699fe2c26982d03c83d83ac4e02
parent5830da1f8625d2bf94180df997ae78c37f378480
[mlir][bufferization][NFC] Bufferize with PostOrder traversal

This is useful because the result type of an op can sometimes be inferred from its body (e.g., `scf.if`). This will be utilized in subsequent changes.

Also introduces a new `getBufferType` interface method on BufferizableOpInterface. This method is useful for computing a bufferized block argument type with respect to OpOperand types of the parent op.

Differential Revision: https://reviews.llvm.org/D128420
mlir/include/mlir/Dialect/Bufferization/IR/BufferizableOpInterface.td
mlir/lib/Dialect/Bufferization/IR/BufferizableOpInterface.cpp
mlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp
mlir/lib/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.cpp
mlir/lib/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.cpp
mlir/test/Dialect/SCF/one-shot-bufferize.mlir