[mlir][bufferize] Deallocate returned buffers with `BufferDeallocation`
authorMatthias Springer <springerm@google.com>
Wed, 16 Mar 2022 13:26:56 +0000 (22:26 +0900)
committerMatthias Springer <springerm@google.com>
Wed, 16 Mar 2022 14:13:34 +0000 (23:13 +0900)
commitc076fa1c447bfbc05226e0782f8b8ca3a8ae78bc
tree8ecf2635cebda340380543017da2340129165680
parent30adb9fd279785d18f9902ba980c7d8b31a6c8d7
[mlir][bufferize] Deallocate returned buffers with `BufferDeallocation`

New buffer allocations can now be returned/yielded from blocks with `allow-return-allocs`. One-Shot Bufferize deallocates all buffers at the end of the block. If this is not possible (because the buffer escapes the block), this is now done by the existing BufferDeallocation pass.

Differential Revision: https://reviews.llvm.org/D121527
mlir/include/mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h
mlir/include/mlir/Dialect/Bufferization/Transforms/Bufferize.h
mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.h
mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.td
mlir/include/mlir/Dialect/Linalg/Passes.td
mlir/lib/Dialect/Bufferization/IR/BufferizableOpInterface.cpp
mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp
mlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp
mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferizePass.cpp
mlir/test/Dialect/Bufferization/Transforms/one-shot-bufferize-allow-return-allocs.mlir
mlir/test/Dialect/Linalg/comprehensive-module-bufferize.mlir