[mlir][Linalg] Improve comprehensive bufferization for scf.yield.
authorNicolas Vasilache <nicolas.vasilache@gmail.com>
Mon, 12 Jul 2021 10:10:26 +0000 (10:10 +0000)
committerNicolas Vasilache <nicolas.vasilache@gmail.com>
Mon, 12 Jul 2021 10:36:25 +0000 (10:36 +0000)
commit6b1668397fd33440847f5a82675c5b83c4137018
treee29b2145babb146e6fad29fce72cc4c82c87d226
parent326b0054fd32ecaa6da0c7ae014fb9bbf1e80048
[mlir][Linalg] Improve comprehensive bufferization for scf.yield.

Previously, comprehensive bufferization of scf.yield did not have enough information
to detect whether an enclosing scf::for bbargs would bufferize to a buffer equivalent
to that of the matching scf::yield operand.
As a consequence a separate sanity check step would be required to determine whether
bufferization occured properly.
This late check would miss the case of calling a function in an loop.

Instead, we now pass and update aliasInfo during bufferization and it is possible to
imrpove bufferization of scf::yield and drop that post-pass check.

Add an example use case that was failing previously.
This slightly modifies the error conditions, which are also updated as part of this
revision.

Differential Revision: https://reviews.llvm.org/D105803
mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp
mlir/test/Dialect/Linalg/comprehensive-module-bufferize-invalid.mlir