<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/57220>57220</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] One-shot bufferize crash
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          petiaccja
      </td>
    </tr>
</table>

<pre>
    Hi,

I've encountered an assertion & crash with mlir-opt:

Command:
```
mlir-opt bufferize.mlir --one-shot-bufferize
```

bufferize.mlir:
```mlir
module {
    func.func @fun(%input: tensor<?xf32>, %index: tensor<3xf32>) -> () {
        %indexm = bufferization.to_memref %index : memref<3xf32>
        func.return
    }
    func.func @main() {
        %s = arith.constant 20 : index
        %input = tensor.generate %s {
        ^bb0(%i : index):
            %v = arith.constant 1.0 : f32
            tensor.yield %v : f32
        } : tensor<?xf32>

        %e = arith.constant 2.0 : f32
        %index = tensor.from_elements %e, %e, %e : tensor<3xf32>
        func.call @fun(%input, %index) : (tensor<?xf32>, tensor<3xf32>) -> ()
        func.return
    }
}
```

Stack-trace:
```
mlir-opt: <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:151: void mlir::bufferization::BufferizationAliasInfo::bufferizeOutOfPlace(mlir::OpOperand&): Assertion `!inplaceBufferized.contains(&operand) && "OpOperand was already decided to bufferize inplace"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: <PATH_TO_LLVM_BUILD>/llvm-project-build-debug/bin/mlir-opt ./bufferize.mlir --one-shot-bufferize
 #0 0x000055aa98f6e8ee llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) <PATH_TO_LLVM_BUILD>/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:22
 #1 0x000055aa98f6e9b1 PrintStackTraceSignalHandler(void*) <PATH_TO_LLVM_BUILD>/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x000055aa98f6c4e7 llvm::sys::RunSignalHandlers() <PATH_TO_LLVM_BUILD>/llvm-project/llvm/lib/Support/Signals.cpp:103:20
 #3 0x000055aa98f6e24a SignalHandler(int) <PATH_TO_LLVM_BUILD>/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f120ac58a40 (/usr/lib/libc.so.6+0x38a40)
 #5 0x00007f120aca84dc (/usr/lib/libc.so.6+0x884dc)
 #6 0x00007f120ac58998 raise (/usr/lib/libc.so.6+0x38998)
 #7 0x00007f120ac4253d abort (/usr/lib/libc.so.6+0x2253d)
 #8 0x00007f120ac4245c (/usr/lib/libc.so.6+0x2245c)
 #9 0x00007f120ac514c6 (/usr/lib/libc.so.6+0x314c6)
#10 0x000055aa994e40d8 mlir::bufferization::BufferizationAliasInfo::bufferizeOutOfPlace(mlir::OpOperand&) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:153:1
#11 0x000055aa994e6aa3 bufferizableInPlaceAnalysisImpl(mlir::OpOperand&, mlir::bufferization::BufferizationAliasInfo&, mlir::bufferization::OneShotAnalysisState&, mlir::DominanceInfo const&) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:721:34
#12 0x000055aa994e6cf2 inPlaceAnalysis(llvm::SmallVector<mlir::Operation*, 6u>&, mlir::bufferization::BufferizationAliasInfo&, mlir::bufferization::OneShotAnalysisState&, mlir::DominanceInfo const&, unsigned int) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:764:21
#13 0x000055aa994e6ee3 inPlaceAnalysis(mlir::Operation*, mlir::bufferization::BufferizationAliasInfo&, mlir::bufferization::OneShotAnalysisState&, mlir::DominanceInfo const&, unsigned int) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:793:25
#14 0x000055aa994e7d69 mlir::bufferization::analyzeOp(mlir::Operation*, mlir::bufferization::OneShotAnalysisState&) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:957:13
#15 0x000055aa994f9c99 mlir::bufferization::insertTensorCopies(mlir::Operation*, mlir::bufferization::OneShotBufferizationOptions const&) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/TensorCopyInsertion.cpp:33:15
#16 0x000055aa994e7f60 mlir::bufferization::runOneShotBufferize(mlir::Operation*, mlir::bufferization::OneShotBufferizationOptions const&) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp:993:13
#17 0x000055aa9949dcd2 (anonymous namespace)::OneShotBufferizePass::runOnOperation() <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp:235:17
#18 0x000055aa9b8fb79a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Pass/Pass.cpp:471:27
#19 0x000055aa9b8fba67 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Pass/Pass.cpp:534:15
#20 0x000055aa9b8fd744 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Pass/Pass.cpp:837:40
#21 0x000055aa9b8fd5a6 mlir::PassManager::run(mlir::Operation*) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Pass/Pass.cpp:817:69
#22 0x000055aa9b8f4a00 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:84:13
#23 0x000055aa9b8f4d6f processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:124:26
#24 0x000055aa9b8f4efa mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) const <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:164:25
#25 0x000055aa9b8f60e3 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) <PATH_TO_LLVM_BUILD>/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:52
#26 0x000055aa9ba0fb77 llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) const <PATH_TO_LLVM_BUILD>/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#27 0x000055aa9ba0f40b mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Support/ToolUtilities.cpp:28:30
#28 0x000055aa9b8f5088 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:169:31
#29 0x000055aa9b8f52f5 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:187:21
#30 0x000055aa9b8f5e0a mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) <PATH_TO_LLVM_BUILD>/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:269:13
#31 0x000055aa98ef3941 main <PATH_TO_LLVM_BUILD>/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:223:32
#32 0x00007f120ac432d0 (/usr/lib/libc.so.6+0x232d0)
#33 0x00007f120ac4338a __libc_start_main (/usr/lib/libc.so.6+0x2338a)
#34 0x000055aa98ef3645 _start /build/glibc/src/glibc/csu/../sysdeps/x86_64/start.S:117:0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWllv4zgS_jXOCxFDpu4HPzhOgg6QIEbHPa8GJVG2ZnWtSHXH--u3ipKsw3acc5JptGHoJItVX11kiV4WbKffohGdj7TLkTarjjcjav_khKd-VqaSFzwgLCVMCF7IKEvJiFrEL5jYkF-R3JAkjorzLJcjfdalMs-ShKVB-9TS6r-6bXoRrwxDXkT_42N8RM7Ps5Sfi00mz3dvDhKojv3e-4Opp9WAWVDGnIzsi-qewC8sU3-MBzIyNDiPqDOiZpTmJUpDJE9FBkTnI_36MdTpSL8CqIhqEvDHXhN918Al53AmipbbHw9_Te-EjPTLnfQMkR3LbJXwpODhrhXBQapn3UF6FJUUBZdlkbYvRvblETkTFqVPMCcUX6wA1Y79LBWSpZJQTTFSib0vDuClelVojNc85QWTvCa3N4h55XlajXWHLnV3-iOdH7T6eYinybhiCiHZ61Rzso14HDQUDjQFlMgxTXesrMMKPwjPMVY6atyhExZZsuIxT3gqhSJZG9XuTA5b1r7SfRbHB0y3a6OoZaAGr49Y8ykLfomttReHfPVBMv8_57JgPj8VFRTL-nwxW35bLe9Xt7d_3a0uftzcXir-ruP4Z3KeF9nf3Adpr5WTw9PIg-NlxOLq8UXXt-B-WbBUhFmRCLi5T_kDBJlZyuKtiMTYz3MYdGJOcOifWRSQJqDos56TVo96tGdxxMRNGmb95vy-lPfhIkZ5qdOSu8_vc_APiI3UqoyezNrgClDQCegRuzWj8ABtTYLjCqUUK2sIuEQRseBEd3TJLyYIiwvOgi0JuB8FEMJl1oZaUtOHThDrSciiGIaoVLC4vZo9XBFRekkkCYNOa1LwPCskkthImQsUg17Dfw1eUHrAW1IrZV83kRAlR8AJMhalflwGnMgNr1OIBzahTGLcMRISlEm-sxENXrmLIlsXLAHPW5fKc15gIpBJojg4DzjIAq88jH_XuwQ0xkfPTUKAs64R7VGDn2ky5jqhxR3OiZJeqVdsRXWxKKJUKnmWRWUDbaOC_VplQoKKEqXAOUAjK2d9rtU3eCurfyhzVBFc_UijR3wQrcG0xRgQh-FMC82M0laIyVAI15uQAccVjW-guJiDgznoFiM6-zg2Ld1CJ2y5pAMufYPbh6D-XqY9ZkWT4N7KZsNfHR40HWHUWgb1IYzUYGSI24eq1tDsPmZGzZIdTqjGfNNhhlbF8utStHESjv5YZGMwvgvtUcdWbbQHMmafDHOMwD9JxsFWPTLWkBvXdUjBIsGfwRO07RGz-8QMauowN_UwNp0iRrFtj5gzJGaYpwWk2KpHxh0IODF867Ro2GpHBt2xF1Rcgxta4PxjKeiTcq3eGi5CMBlAYDGmtxNkL-Y3qZKkoXOT5PETUs1fBd8zeg7EgXgp-V6_yyyJUpb6HKkSNVP8RKxtivMa3WjBpkOw_ZBCDuoB3MtYDwlMNv8CDtRksQs6zvUVJzOEwCqVLF9WAXNSpgIiKA9ennLfUSGWgZmkY_36UCGc6wcUchz4P2AfBdtVadtswTYGYNuB5T4NA0OSEE_z1-vgKJKfg4prqomD3qJi9lEJXd89gQosSGDdslRLyHmWR_wNJlpz2ZPkPsej-Afj506W7U1ar8lqvHSVrjpGZA2NKLS0p0UsynQg5TAt_-vwOmJbyuO6tmX3wXIDP6A4TWJplm6TrBQkZQkXuZqpuAcl5AsmRAfIDlovnOy_RtAdF7WIMENGEe1WRKcroueEnu2yjgoDDgv4uFH0MrvPUZ5ZwHKVUmuxevagBB6awnEjaZRwB8FqjSuPOfGyLH7HMFwxpE41DIaNMwvagcEdwsAs-8UwLKKcx1E6dA9supPOendcup1wKAgBslDlBmBtSLXfoOOYDe8LVsCLbkZ84dL5BPSmbvQjEtUG0Ae2YQw4bjDYAY11_edG7T0g31EaR8d0ZGitNJOhNCazTkjzhBzvyeoEWbXa1RulA1YNpmkEhsfgMfNVTD5R_mkMsjl3Jt5ZWfj8br1v8Xe3N9_nWSr5o6xV1fbCQi2Ou6q-HLSdbrN15LP4OxdlrJbNhxGtS5NXbwBuCaKITqUNLu_gEnLUHYuarOoY_URB9SGUgRUSGMHnQlQx-ASSQgbVqzKN_lvyVS5xwdL2uONJVmwbUp32AQ8ZYLIKeMxhZna0D5bGq9r5UGnHlfh-6uhNu6vU9Z2vI4BgWwPQjrrcYA14obh5iws8S5MTqpY0VqtKY6hKALhrvi2Jr6PSz1HZKUOqzvW0aETtmCVewOACRv8UcIY6qllT3yVUslSFu6_CXJV_P9b6qwV9JxmbA-u3NFjQH7Oi15jd18AWW6g3-DESv-aswrTH9x83_63c_AqVmKXrT1PYvne_-MNK_RmyfTC7XOKHleXtdW0NLL56lAUT4w2MaOBKz6Sta_dW_h7TYKln_w4u_LuE79ep2XIwjnfUbA_VbGhex8dFHkdylgaLweT0i4exr6HTky32ouJr03f7_RQT-Q8ZgdYi3qzlKCpd76w6h1UcU3OcP5PWN2SzD552YbbU2-8odFh-MmlofnX99XXR1I_mtwtWCF70vqf8K5TiYH2k83FLHxamTK4dXwnWpTh_w6qi26Cy8SCLKF1_B_t-NhwfKy5VNtipYQw21_BQd40JwX2XL-dD7nPQXDbDU6y1623e2u2aaXY26DQ4vQOEYqvuloTd3pYdGd1hZLXCbishWSFXlUgnCUO_HmFjCI9lmKQiCdSu1W4tOK-RDpxF4XfufFHCcYy7tsRWBDxHdB4dawULMHiERMYPqA9VpGsCe7PN8IxPJ5alOdS0dO0smOqBq7vsTEYy5tOReYEltZF5Se7r_V-dPXNqv9pZWcTT12-CM21KtbPN1NS4H4ZWYNrMsw2mmY4b6oavG5Zm-bodnMXM47FAjkaUpvwXUSRwv555eRZNqQZ0nIkzodSeaOPA0S1Ptx3LDSfccd2RoXHQTTxGPsZZsT4rpoolr1wLeBmDi4j2JcQcLIIrAJA-K-UmK6Y5lxHz_b_ZmRp8qpj_P26XNgo">