Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-18.1.8
# 13896b6c 10-Jun-2024 Matthias Springer <me@m-sp.org>

[mlir][bufferization] Fix handling of indirect function calls (#94896)

This commit fixes a crash in the ownership-based buffer deallocation
pass when indirectly calling a function via SSA value. Su

[mlir][bufferization] Fix handling of indirect function calls (#94896)

This commit fixes a crash in the ownership-based buffer deallocation
pass when indirectly calling a function via SSA value. Such functions
must be conservatively assumed to be public.

Fixes #94780.

show more ...


Revision tags: llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2
# 0940be15 05-Feb-2024 Matthias Springer <me@m-sp.org>

[mlir][bufferization] Never pass ownership to functions (#80655)

Even when `private-function-dynamic-ownership` is set, ownership should
never be passed to the callee. This can lead to double deall

[mlir][bufferization] Never pass ownership to functions (#80655)

Even when `private-function-dynamic-ownership` is set, ownership should
never be passed to the callee. This can lead to double deallocs (#77096)
or use-after-free in the caller because ownership is currently passed
regardless of whether there are any further uses of the buffer in the
caller or not.

Note: This is consistent with the fact that ownership is never passed to
nested regions.

This commit fixes #77096.

show more ...


Revision tags: llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2
# 6a651c7f 28-Sep-2023 Martin Erhart <merhart@google.com>

Revert "[mlir][bufferization] Don't clone on unknown ownership and verify function boundary ABI (#66626)"

This reverts commit aa9eb47da2e501d3505de733240eb89c9a0ea2cf.
It introduced a double free in

Revert "[mlir][bufferization] Don't clone on unknown ownership and verify function boundary ABI (#66626)"

This reverts commit aa9eb47da2e501d3505de733240eb89c9a0ea2cf.
It introduced a double free in a test case. Reverting to have some time
for fixing this and relanding later.

show more ...


# aa9eb47d 28-Sep-2023 Martin Erhart <merhart@google.com>

[mlir][bufferization] Don't clone on unknown ownership and verify function boundary ABI (#66626)

Inserting clones requires a lot of assumptions to hold on the input IR, e.g., all writes to a buffer

[mlir][bufferization] Don't clone on unknown ownership and verify function boundary ABI (#66626)

Inserting clones requires a lot of assumptions to hold on the input IR, e.g., all writes to a buffer need to dominate all reads. This is not guaranteed by one-shot bufferization and isn't easy to verify, thus it could quickly lead to incorrect results that are hard to debug. This commit changes the mechanism of how an ownership indicator is materialized when there is not already a unique ownership present. Additionally, we don't create copies of returned memrefs anymore when we don't have ownership. Instead, we insert assert operations to make sure we have ownership at runtime, or otherwise report to the user that correctness could not be guaranteed.

show more ...


# 77813b08 27-Sep-2023 Martin Erhart <merhart@google.com>

[mlir][bufferization] OwnershipBasedBufferDeallocation fixes (#67418)

* Properly handle the case where an op is deleted and thus no other
interfaces should be processed anymore.
* Don't add owners

[mlir][bufferization] OwnershipBasedBufferDeallocation fixes (#67418)

* Properly handle the case where an op is deleted and thus no other
interfaces should be processed anymore.
* Don't add ownership indicator arguments and results to function
declarations

show more ...


Revision tags: llvmorg-17.0.1, llvmorg-17.0.0
# 08b7a71b 15-Sep-2023 Martin Erhart <merhart@google.com>

[mlir][bufferization] Define a pipeline for buffer deallocation (#66352)

Since ownership based buffer deallocation requires a few passes to be run in a somewhat fixed sequence, it makes sense to hav

[mlir][bufferization] Define a pipeline for buffer deallocation (#66352)

Since ownership based buffer deallocation requires a few passes to be run in a somewhat fixed sequence, it makes sense to have a pipeline for convenience (and to reduce the number of transform ops to represent default deallocation).

show more ...


# 942ce319 14-Sep-2023 Martin Erhart <merhart@google.com>

[mlir][bufferization] BufferDeallocationOpInterface: support custom ownership update logic (#66350)

Add a method to the BufferDeallocationOpInterface that allows operations to implement the interfac

[mlir][bufferization] BufferDeallocationOpInterface: support custom ownership update logic (#66350)

Add a method to the BufferDeallocationOpInterface that allows operations to implement the interface and provide custom logic to compute the ownership indicators of values it defines. As a demonstrating example, this new method is implemented by the `arith.select` operation.

show more ...


# 01334d1a 14-Sep-2023 Martin Erhart <merhart@google.com>

[mlir][bufferization] Add an ownership based buffer deallocation pass (#66337)

Add a new Buffer Deallocation pass with the intend to replace the old
one. For now it is added as a separate pass alon

[mlir][bufferization] Add an ownership based buffer deallocation pass (#66337)

Add a new Buffer Deallocation pass with the intend to replace the old
one. For now it is added as a separate pass alongside in order to allow
downstream users to migrate over gradually. This new pass has the goal
of inserting fewer clone operations and supporting additional use-cases.
Please refer to the Buffer Deallocation section in the updated
Bufferization.md file for more information on how this new pass works.

show more ...