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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] --sroa causes Segmentation fault
        </td>
    </tr>

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

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

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

<pre>
    git version: 604eff60abfce09f956c3b0b1414f8d0d04b5d47

system: ```Ubuntu 20.04.6 LTS (Focal Fossa)```

reproduced with: ```mlir-opt --sroa a.mlir```

a.mlir:
```
func.func private @func1() -> i32 {
 %c13 = arith.constant 13 : index
  %alloca_16 = memref.alloca() : memref<4xi32>
  %114 = memref.load %alloca_16[%c13] : memref<4xi32>
 return %114 : i32
}
```


trace:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --sroa a.mlir
 #0 0x000055cf680c381f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x15d981f)
 #1 0x000055cf680c08b4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f81a50b2420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x000055cf6ae5c067 mlir::Type::getContext() const (/data/bin/llvm-project/build/bin/mlir-opt+0x4372067)
 #4 0x000055cf6adca778 mlir::MemRefType::get(llvm::ArrayRef<long>, mlir::Type, mlir::MemRefLayoutAttrInterface, mlir::Attribute) (/data/bin/llvm-project/build/bin/mlir-opt+0x42e0778)
 #5 0x000055cf6929d2fd mlir::memref::AllocaOp::destructure(mlir::DestructurableMemorySlot const&, llvm::SmallPtrSetImpl<mlir::Attribute> const&, mlir::RewriterBase&) (/data/bin/llvm-project/build/bin/mlir-opt+0x27b32fd)
 #6 0x000055cf69284b03 mlir::detail::DestructurableAllocationOpInterfaceInterfaceTraits::Model<mlir::memref::AllocaOp>::destructure(mlir::detail::DestructurableAllocationOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::DestructurableMemorySlot const&, llvm::SmallPtrSetImpl<mlir::Attribute> const&, mlir::RewriterBase&) (/data/bin/llvm-project/build/bin/mlir-opt+0x279ab03)
 #7 0x000055cf6d959303 mlir::DestructurableAllocationOpInterface::destructure(mlir::DestructurableMemorySlot const&, llvm::SmallPtrSetImpl<mlir::Attribute> const&, mlir::RewriterBase&) (/data/bin/llvm-project/build/bin/mlir-opt+0x6e6f303)
 #8 0x000055cf6ac84ba5 destructureSlot(mlir::DestructurableMemorySlot&, mlir::DestructurableAllocationOpInterface, mlir::RewriterBase&, (anonymous namespace)::MemorySlotDestructuringInfo&, mlir::SROAStatistics const&) SROA.cpp:0:0
 #9 0x000055cf6ac8b3da mlir::tryToDestructureMemorySlots(llvm::ArrayRef<mlir::DestructurableAllocationOpInterface>, mlir::RewriterBase&, mlir::SROAStatistics) (/data/bin/llvm-project/build/bin/mlir-opt+0x41a13da)
#10 0x000055cf6ac8b6e4 mlir::SROAPattern::matchAndRewrite(mlir::DestructurableAllocationOpInterface, mlir::PatternRewriter&) const (/data/bin/llvm-project/build/bin/mlir-opt+0x41a16e4)
#11 0x000055cf6d92af68 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&)>) (/data/bin/llvm-project/build/bin/mlir-opt+0x6e40f68)
#12 0x000055cf6ace29ac (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#13 0x000055cf6ace6e1b mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41fce1b)
#14 0x000055cf6ac882f4 (anonymous namespace)::SROA::runOnOperation() SROA.cpp:0:0
#15 0x000055cf6ac2db2e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x4143b2e)
#16 0x000055cf6ac2e00a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x414400a)
#17 0x000055cf6ac2e834 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x4144834)
#18 0x000055cf6ac1f5bb performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#19 0x000055cf6ac20a74 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#20 0x000055cf6ac20c24 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>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'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&) MlirOptMain.cpp:0:0
#21 0x000055cf6ad1d174 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) (/data/bin/llvm-project/build/bin/mlir-opt+0x4233174)
#22 0x000055cf6ac196d7 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x412f6d7)
#23 0x000055cf6ac20d71 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4136d71)
#24 0x000055cf6ac211d6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41371d6)
#25 0x000055cf67ffad9b main (/data/bin/llvm-project/build/bin/mlir-opt+0x1510d9b)
#26 0x00007f81a4b7e083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#27 0x000055cf68093f8e _start (/data/bin/llvm-project/build/bin/mlir-opt+0x15a9f8e)
Segmentation fault (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWltz4ygW_jXKCxUXAlmXhzy4k3i3qzqVVJKtfXQhcWSzjUALqCfeX7-li22h2Em6nZ2dma6OLwIO3_nOhQOYWSvWCuAqmH8J5jcXrHEbba6Y0mpb6cbeXT9d5Jpvr9bCoR9grNAqoAsU4wjKMsYsLwvAWZnN44LmOA-jMCpTjjmO8jmPkgDfBHjRv9qtdVC1o4MY9___kTfKNYjgGY5mMfr2_IQCki51wSRaamtZQLJ957EsA7XRvCmAo9-E23hCKynMpa4dury0RjPEZu2To2KGJjp8nfQpG1XM2hdUG_GDOUBBhNvvYUDSgGToMqC3SFCCguRLPwQFZF6EFAX0BjEj3GZWaGUdUw51TxdIKA4vQ-e2N5NSF2wVxt2YCioD5ax_OMzSjuqfB_Q6ehGUBPR2JCEMo_FYqRn3BLem7VAF85s3hRlwjVEHkYtWt4GZ5OYoReNXZ1gBp7h8-Ha7eLpFtskr4RBDebNGBmptHHIabZyrbTuULAOyXAu3afJZoauALKX8sXu7rI3-FxQuIEthbQM2IEvEFEdCFbLhgNwGUGGY3aCcFd87PLN--ifHiu-IN1W9B4hnqPv3YPTasAoxs24qUM52zkSWnDkWkGUu1Ovp80ZIvm884XA7h6AY4ReMMZ7PizJOcUHTsESdXnQR0DYu-g8PRijXIX3uqCTpoZNhv620dQZYFZA4INdIKNd5R-skvwA2IF_wSzjnWRqWbZTt0YYTtDjNI_Qk1orJvzPFJZiApMPk_WM7K-qWV9z97QWRQVBSpiGb45xEBKPVyoB12sDKuAG7FHlAli9pvIqjSylU83K5Vk3fULuNAcZnVs9wjziKCPbw0jFeBvMCxwnahTVdPG9r6D-twV1r5eDFDYHVheZ5BEY0IThOPECRB4gXLEnSEaA7qB6h9GB5ll4Yw7aPXXxKrdZteJLrqULek17iN7bVjVs4Z74qB6bsPGjcrW0SeePgbLeJCOAkST2t52OtM5JxUvLR5Luc0wHpMtN93X_jYJ1pCteY1uMPI272z1ku4Q4qbbZPUrvebEMQHGh7qpiUD848gfta1TKg18c0p7fe8EOXR_jNCAfmC7PQNZ5JEUlySkruURT7FKVRjukIAgfHhDymfE-YE1rd13vj7j88GybckELuNAdf9-PE377N_WdAudaqgHpvroXP930NphPzquXPbveM5Zh6dk_GdufZPKOe3T9A8F85UmKISzphLPVSaJFGOZujkfqtdh-i4BX6j5D9trrXrbr7AhkpVoGtu2HZPh0Psx8mE2r9VZX6FZynx_u2NnHCOlHYEeMZapuOL6zZhJ2ccjaS6cz2WR-mHrFhTy00P-mMt-9SdErD85eekIWUs723tAULnvIRQzRB8MCcA6OGlMhcsVkoPuB-w5E-4B-D5B0Hg_E-o7QIWRhD5Gka-pmEsDJOX2NZ1LUUBXPavK_v6Tx8TLFxGmk3Qu3AVb-XyLWWyBM9CBg79eA6J4X80IKfLeQw-Jtei4LJR7CNdB-Te3Yyi3AZp57RiO-eQDJWvJdD_mYA-NY3wY0RP2CAXxtdgLX_1Oa7FHZX0J4e9TqRtMjoBFkMYT7yAFbXcifNLhRfasm7KYTcemQ-wrrzoEnoL43-D-xwDHKewJ1YV3rwQ-9rrUqxbju0ftX55tmJoywgzD3LRJPEkZIyes8ybTYZtmSNulej-ElPZ-12srk_GeE5gRPV3339rO_rB2btgrN6H8emURMftvYnCquFYnJrhb1jiq3bgN6Re40a1R0D8U_ZVEZhRHMCHtPxRHnAmP208g-iBinUNIG1Xfc6xZ_Ohp8Trf2q2hWiAtVCe500xx36mfuGAfsDM6BcWwuMCuPzCY8w9tfEZEp4SqMJzp3mR33LJ-4TAKbUX8omJV5YzvMc1WBKbapFl87tOwcg1vHhAGXDDPBV7Uy7Zz7UuboxBdytzela9u7b18f9mcDElHdSmPva3TGh-mzkVWej1uPhPinSCGZJhIa0_aUpy-4Y5UPqNUr8u4FX6vVl3U7UqD-HkjXSrThIaAv5U2PaTeDtx3X2qmjBJBSuzfvWme2r2uC5O7V5OKTu9-gieEpXQcb-6q_kv7L0_350njZqtt94F0zKnBXfV6XyYI94-gO6x3GzfzBk-i4BSSSr8raCT_5IViFpd9j2uxL7BqT3Ayb0TxlDHibjgLG1FG6h-MMk4_w_tPsTBumbPQ6VQv9-9mkqpWHirY5ksmcIs5gnxwPtr5Ymzq00SBnzxOOSTpcWnoQnuRxKvmLD-uJuMTk7c0ao9SOUbzx-m4izFaQxT0JPwck2hoQhjz9Fwf-1JknIY08Tb4-UlCXjWY4qJtS511wh5pm39yPx-HYqyhPAKUWrlRR5sbKOGbcazfvWFVUxs3oW94e_EU6pN0viX6ZltEwB9fLPVYllZXrYZD3Ber_jQF3ktvILbaC79YTDTcT-YvaCX1Ge0YxdwFUYZ2lKKI7ii80V4LJIWEhwmYc4zSKehlBEUcoI50WcxRfiimBCwxCHOAkTEs9oHmdlREnEaTqPAYIIQ8WEnLUKzbRZX3QXtlcJzjC5kCwHabufHBDS-Rghwfzmwlx1-ufN2gYRlsI6exDghJPdzxS6AfOb3WVrwRoLFr3W_6Ix8urXL5Y7qP8NAAD__y0PQH0">