diff options
author | Matthias Springer <me@m-sp.org> | 2024-11-13 08:51:39 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-13 08:51:39 +0900 |
commit | b0a4e958e85784cff46303c92b6a3a14b20fa1d8 (patch) | |
tree | daa29d88c79238bc3c1488e84dd292fda86ef0fd /clang/unittests/Frontend/CompilerInvocationTest.cpp | |
parent | d6219e65996a485adb3883c8cf3335ece68c66cf (diff) | |
download | llvm-b0a4e958e85784cff46303c92b6a3a14b20fa1d8.zip llvm-b0a4e958e85784cff46303c92b6a3a14b20fa1d8.tar.gz llvm-b0a4e958e85784cff46303c92b6a3a14b20fa1d8.tar.bz2 |
[mlir][bufferization] Add support for non-unique `func.return` (#114017)
Multiple `func.return` ops inside of a `func.func` op are now supported
during bufferization. This PR extends the code base in 3 places:
- When inferring function return types, `memref.cast` ops are folded
away only if all `func.return` ops have matching buffer types. (E.g., we
don't fold if two `return` ops have operands with different layout
maps.)
- The alias sets of all `func.return` ops are merged. That's because
aliasing is a "may be" property.
- The equivalence sets of all `func.return` ops are taken only if they
match. If different `func.return` ops have different equivalence sets
for their operands, the equivalence information is dropped. That's
because equivalence is a "must be" property.
This commit is in preparation of removing the deprecated
`func-bufferize` pass. That pass can bufferize functions with multiple
`return` ops.
Diffstat (limited to 'clang/unittests/Frontend/CompilerInvocationTest.cpp')
0 files changed, 0 insertions, 0 deletions