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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] 3 linalg related passes violated assertion "expected linalg op with buffer semantics" and crashed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/6924a49690eee074f6c341d3ada4e98d640b8a7e

Reproduced with: 

`--convert-linalg-to-loops`
or `mlir-opt --convert-linalg-to-parallel-loops`
or `mlir-opt --convert-linalg-to-affine-loops temp.mlir`

crash trace:
```
Assertion failed: (linalgOp.hasBufferSemantics() && "expected linalg op with buffer semantics"), function linalgOpToLoopsImpl, file Loops.cpp, line 219.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt --convert-linalg-to-affine-loops temp.mlir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt                 0x0000000100f6a10c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x0000000100f6a628 PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt                 0x0000000100f68738 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt                 0x0000000100f6bef8 SignalHandler(int) + 252
4  libsystem_platform.dylib 0x00000001a33254c4 _sigtramp + 56
5  libsystem_pthread.dylib  0x00000001a330dee0 pthread_kill + 288
6  libsystem_c.dylib        0x00000001a3248340 abort + 168
7  libsystem_c.dylib        0x00000001a3247754 err + 0
8  mlir-opt                 0x0000000101ccae14 mlir::FailureOr<llvm::SmallVector<mlir::Operation*, 4u>> linalgOpToLoopsImpl<mlir::AffineForOp>(mlir::PatternRewriter&, mlir::linalg::LinalgOp) + 140
9  mlir-opt                 0x0000000101cdb07c (anonymous namespace)::LinalgRewritePattern<mlir::AffineForOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 136
10 mlir-opt                 0x00000001057f58e8 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) + 1432
11 mlir-opt                 0x0000000104b47820 (anonymous namespace)::GreedyPatternRewriteDriver::simplify(llvm::MutableArrayRef<mlir::Region>) + 1640
12 mlir-opt                 0x0000000104b47068 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 240
13 mlir-opt                 0x00000001015f5fb4 mlir::applyPatternsAndFoldGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 76
14 mlir-opt                 0x0000000101cda9d8 void (anonymous namespace)::lowerLinalgToLoopsImpl<mlir::AffineForOp>(mlir::func::FuncOp) + 272
15 mlir-opt                 0x0000000101cda72c (anonymous namespace)::LowerToAffineLoops::runOnOperation() + 36
16 mlir-opt                 0x00000001049c0838 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
17 mlir-opt                 0x00000001049c0f08 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
18 mlir-opt                 0x00000001049d431c mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const + 240
19 mlir-opt                 0x00000001049d3fe4 mlir::LogicalResult mlir::failableParallelForEach<std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) + 180
20 mlir-opt                 0x00000001049c2878 mlir::LogicalResult mlir::failableParallelForEach<std::__1::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::__1::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, std::__1::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::__1::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) + 84
21 mlir-opt                 0x00000001049c1c20 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) + 984
22 mlir-opt                 0x00000001049c0b24 mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) + 68
23 mlir-opt                 0x00000001049c0820 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 488
24 mlir-opt                 0x00000001049c0f08 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
25 mlir-opt                 0x00000001049c30cc mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
26 mlir-opt                 0x00000001049c2ea0 mlir::PassManager::run(mlir::Operation*) + 732
27 mlir-opt                 0x00000001049a7b80 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
28 mlir-opt                 0x00000001049a7714 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 496
29 mlir-opt                 0x00000001049a74dc mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
30 mlir-opt                 0x00000001049a73f0 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 80
31 mlir-opt                 0x0000000104ba4700 llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
32 mlir-opt                 0x0000000104ba41e4 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 128
33 mlir-opt                 0x00000001049a4e48 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 320
34 mlir-opt                 0x00000001049a5050 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
35 mlir-opt                 0x00000001049a5bfc mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2888
36 mlir-opt                 0x00000001007a9df8 main + 148
37 dyld                     0x000000011d8dd088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltT6zgS_jXhRQUly_cHHgIHdqiCIgXUVO2-pGRLTryjWF5Z5pzMr9-WLCdOwsVwYJeZOpQLO9alu7--SN1WJtn69Ob66g5lbSk0ohrlcrUqNVpqXTcTfzohl3AtSr1ssxNogx9CPPa341rJf_Ncw89uHDxEKQlokEYp5pzjOCii3A885lNGA54mLApwltCYT_C3CZ52_-84TMTanDP0HUgBXTRsnkT4-DiX1SNX-liUFRWLYy2PhZTAY4S7TlIheF6JUh3LWqOnBtRUUSG4ePtIWhRlxbtxSPNVfWK6b2bo_ueKNkukFc25Qa5n3V3257RpYOJSVqigpeDMSkqSjtBtfbKkzVlbFFzd8xWtdJk30DohKXSK4IIb4T9qQByQ6gYhWVvMQINmHGq2AwkMnJBzVLRVbmn2ZB7ktRHkalUL2w6cIPvmJK9r8wY6ckS89KTjenZ9Mb2_QE2bGdOgQGqBFK-l0kjLt5tK2TQtB_4uEa0YKqtctIwjveSoQzCj-R8WRUf-XsMLxNpVvYEVQ1M6U3Kh6ApRtWhXvNKGCfQeNe5RsXjKVqNmvcqkQBVd8caoiVdNqzhayxYt6SNHVq6uU_knYF9Wpk2h2fThNySNLrQVi1ePpZKV4RE9Umtt19e_38zv_3lzdnt99a-Lu7kZAq8NnrUsKwuscad0KzLayrb_h3_g7s_DuIioh3PLmxnrT5t10z3MFExsxXywNgp2t-mk6Pe5bLTidGVN7RyE0Z3hnaGYdCx441mISIL26N2XC9DDb6BzwRUQf5Qlm5BpTwTs3BIho4kksZ88JeddW-3Q2vrQGfICR8YfTSbjRYL2mR-gQ0IHT4DAcTJgAyxrXguqC6lWJ2wNLwdTUt8nYZAHaN6UCzBzsDczSxh1k4Q7k-glaIS5OXYnwQzCK3I95n-UQjgYnYDRcKK8n2JfQOqTIPEDjGhm3NlCFLkZ4tEzxHEYIK6UHe9CXTIOYC_PKfcC27dT3yVERnCzW_h5vtXu_QpC9-8QQKR5v-19W3NFTXSzpnSOgnbiX8D1ZLAbDpzaWHAp1W1tRpBk2zSjWnNV3fHvqtRG3dYhtu3d1N3ztSOzNTAnfzpWfpbhODfhhVayWq9k23QRp7Y-mg7JOI4cfy-JY9-tqM6X04q5YTsy7uP2svQp7AuqxtmH70zVw6MkDOMiTHhySGFa16LMqdXox7J7PggL_eo3V7wAxDIpjaMcaruTsJPWGsQLk5jQ9dOTbAdfywXgIO540wo9bt7e2Pw-NHujdBFkQZwQ_Jq1_UNxzta7yH5TJaymLtSW4E1lsd5ZQm5aTTPBp0rR9d2ehHd8YXQ34Dzq_cQjoznH0dCKKJhPz2MDZnMpBbOMl-JdjA2N6lLJP3m16273XA_UMOzdweV6n8uqKBebxWEjpj8uHIRFWGTBeDHHuMiHSRP3nh-MjW00ZQnq3eUlkxPyO1ddlHtHxDau5WSFp200JputSzia45i8Ho0Nsw-yY8gy63ZRbXVbDfSw2XZsQmY0ztjTHCf-0NgZ17As9op-kLf1jDbNlNF6Ez6B-F7oaJoDU3jeSKYA_bopmxta0YWJo-fIxEpzbyvYqlScDfeEodcjG48WqcBvF2lW1tykI3umbrpuOI0-XMbdBaZprsBRlE0ygLXDFWjYoaPcNTjeZ1RBw1VVyN7lplvDCByMyUgYWeB7-ZthHJglbJSrvMv9kk56Z9UTEsy9oHuWtrcRNrFZZPIZBGHkjUHlYIuxjZrpWFT8gg-j5u6SOggUwLpZDGauFADR5ILmS4gzjWZdl_nc6x--K1rP7a5iGIc-A4DpwRL04XoFkPeipqn8QIDX_Id2Rv01QPgaXHyuKvp9UOIsnYzbTEMYJUmcfLClPx7mVZ-B7FOaBd6kywE-l7rNCg_Wii_iZb8U8Am-lbillYzMjdLcy50bfhxvlpN0w8rIZAc2SxkJfoaVPQ76mg4Zl4bYDeg7sPgfbkCDvtBFxiUjvzagL29AybgMCWD0cZ7vUe_l2YAG70yJf1R6egCKWxpxr-DRSRPhFL_C2Qs8uRy3L6mQsYkNjbMEI5jK1HuntsTTvFJc75Xe3wd1TtmqnN8sDq3qcB352dLSrgX3Batd3ly213_AImPTFBrHXoBqJXPeuG9ar2ByuDS1Vfmfls9rvVsKvuErqdb9nE8NZLygIO-cccE1f36wW5IO9fHa_XOQ3_b4VlIBWwJTnQKM1gdFzQdb9Z9ZbjaWG6SuykDGZk00DtjQlW_g6bbWN7SsvrCy_j_gv9VEDvYmuHs8yKy_BpT7Kt5Jx7FbI_yxSQqN_QI_m6S8R4FfFKXNtxZgVpgP1_Ni97vML5f6XJcyuZaQ1eLrIHjoSTYZcQuoP_ZDDQ1ijP-WrvIXjID9yuqP_VhFA2-nHtnUotTTis32NkRfQ_S_hW292OPpba3XHzrxx6bFNOBB8mvH9JnhvUtLSR8vx2b3NMQh_stpZhflPl8_v4aMveHqmS-0Hwn3LuxkE-jGVgNomBXPpxCulpEvaVe12Etb77Uqq4X5Jj9avv6wWF_98ccVB3BMU1aA5wJfewfBYsTWgh0M3p3AYwljOElA59Sdkwq9aO-Qancd8VMvimI_8kLfO2KnPkv9lB7pUgt-OgnPrJzhN-T3JzgVF9Qc6Kxt0QQ9lrL7TTeHRd927NMeq7RHKTk7apU4ff8JzTCJg_hoeRoXXogJyzGLCMninPlRGhMe5UFCQ5pER4JmXDRGPBDtqDwlmBDPwwT7YRJ6J1GRkDAgESUpJzzkkwADw6U4MYRPpFocqVPLQ9YuGmgUoPhm2whImNoY7-enrV5KdXouhZDmGGrb4CPL86ll-L8qmI_D">