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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Promote-Buffers-To-Stack Pass Segmentation Fault on nested memref
        </td>
    </tr>

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

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/159cac50
Reproduced with: 
`mlir-opt --promote-buffers-to-stack temp.mlir`

temp.mlir:
```
func.func @func() { 
  %0 = memref.alloc() : memref<1 x memref<2 x f32>>
  return

```
 
trace:
```console  
LLVM ERROR: neither the scoping op nor the type class provide data layout information for memref<2xmemref<3xf32>>
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 --promote-buffers-to-stack 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 0x00000001049a85bc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x00000001049a7624 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x00000001049a8c54 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001a56894c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001a5671ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001a55ac340 abort + 168
6  mlir-opt 0x000000010496f1f4 llvm::report_fatal_error(llvm::Twine const&, bool) + 468
7  mlir-opt                 0x0000000105e7fbb8 mlir::detail::getDefaultABIAlignment(mlir::Type, mlir::DataLayout const&, llvm::ArrayRef<mlir::DataLayoutEntryInterface>) + 0
8  mlir-opt 0x0000000105e7f704 mlir::detail::getDefaultPreferredAlignment(mlir::Type, mlir::DataLayout const&, llvm::ArrayRef<mlir::DataLayoutEntryInterface>) + 0
9  mlir-opt 0x0000000105e829a4 unsigned int llvm::function_ref<unsigned int (mlir::Type)>::callback_fn<mlir::DataLayout::getTypeSizeInBits(mlir::Type) const::$_4>(long, mlir::Type) + 312
10 mlir-opt 0x0000000105e81018 cachedLookup(mlir::Type, llvm::DenseMap<mlir::Type, unsigned int, llvm::DenseMapInfo<mlir::Type, void>, llvm::detail::DenseMapPair<mlir::Type, unsigned int>>&, llvm::function_ref<unsigned int (mlir::Type)>) + 200
11 mlir-opt 0x0000000105e7fa38 mlir::DataLayout::getTypeSizeInBits(mlir::Type) const + 56
12 mlir-opt                 0x0000000104b90c14 std::__1::__function::__func<(anonymous namespace)::PromoteBuffersToStackPass::initialize(mlir::MLIRContext*)::'lambda'(mlir::Value), std::__1::allocator<(anonymous namespace)::PromoteBuffersToStackPass::initialize(mlir::MLIRContext*)::'lambda'(mlir::Value)>, bool (mlir::Value)>::operator()(mlir::Value&&) + 320
13 mlir-opt 0x0000000104b8f684 (anonymous namespace)::PromoteBuffersToStackPass::runOnOperation() + 200
14 mlir-opt 0x0000000105bb34dc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 420
15 mlir-opt 0x0000000105bb3a0c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
16 mlir-opt                 0x0000000105bb7a90 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const + 176
17 mlir-opt                 0x0000000105bb790c 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&) + 360
18 mlir-opt                 0x0000000105bb46d4 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) + 1396
19 mlir-opt                 0x0000000105bb360c mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 724
20 mlir-opt 0x0000000105bb3a0c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
21 mlir-opt                 0x0000000105bb5388 mlir::PassManager::run(mlir::Operation*) + 1148
22 mlir-opt 0x0000000105bae840 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
23 mlir-opt                 0x0000000105bae410 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&) + 704
24 mlir-opt                 0x0000000105c1902c 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) + 656
25 mlir-opt 0x0000000105bac838 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) + 216
26 mlir-opt                 0x0000000105bacd2c mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
27 mlir-opt 0x000000010484b0a0 main + 108
28 dyld 0x0000000109165088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWVtv6yr2_zT0BbXC-P7QB_emU6lVo7Q60v__EmEbJ8zG4AHc3ZxPPwLbiZ06u9mdvWeq0amiJsaLxbr_FkC0ZmtB6SUIr0B4c0Zas5Hq8ppyqg0T9LlmZnOWy3J7-fhwv4R5y7iBxMBC1jUzcGNMo4GfAXwH8N2amU2bXxSyBviO89fh67xR8h-0MADfdfMAvvPCtCBFiAC6AShb0kbJsi1oCb8zswF-BrsXIEI1Z-pcNgaeWz61NPQ8b6uKKn1u5Lk2pPgGDa2bC0sIop5j938_7mc7hv3HPVatKC7sPwgCZL8BTgBOIYivegkgBDhEEPg3sKa1otUF4Vzu6PysHwb-tQff9g8YvsHKx8C_tZ-elaKmVaKXJL6BszL1o0aRgr6Xu5BCS05hT_Xw8OcjvF0un5ZWFEGZ2VAFzYZCXciGiTWUDRSyGzLbhsKCE61ho-QrKyksiSGQk61sDWSikqomhkkBK6lGurztfvpvB0otHm6z51uo29wGBIF5u4aKNlIZaOTPBwjTuqUa4DtIRAmZKHhbUid8oYjewJwU35xlLrrln53_y7ZudqZCFwClCyXXitSQqHVbU2G089RPhdIBfxeZ1kx6W-eSQ0FqqiHACRW6VRRuZQs35JVCp1FHxP6iCjJh3ym4yF7-gFJBTY1TiIpXpqSw0sFXoiCIkPXm6vn_Hq-eHu7__3a5slNAhKwlG8mEM6lNn3SvLNxrhd5Q9-ehICVJmBdOFkvrZ3qrux8LxYRxar24CMPJnkiR7yupjaKkBjgC-BoyYVyc4ysYRt2S3mjJw7-pCHGEgzkRlq14ZmtB-B9ElJwqPWQTvoKeh7tl8HHNijCAEwYAJyNB_SDoWPgQcpbrrTa0XjWcGBvfF-WWs3zEkoRRkgZFAFearY0idTNRN5gwMRtFSTnHI_YoRbAnWH1jnDs2OEk6PuGYTzHDISSFHyBIcps7zhRRPzU6Zoqo8qqxhbvEW1XEEL6iSkk1ce_LdyYotBXE9O7NpeSD2YJhufg0B4c0rvI8gUN99bOSGsJ493tNzQ2tSMtNdnWfcbZ2gQ5wsid_2TbUCrEfuSGGPHTFaCzlXoNMKbJduko0N-tWGLW9F4aqyhXP20G3vrQm84a0msQo-FCThaIVVYqWX0Wf9Jg-CU5JAFvh4N3WUTNa1OKcLfKrrqRPqGYUSl25t88F4dwW4FUljgi8s5id-sz-ovfiihk9x7W3iBsCOFgFTr2ES7GeGnGgd6k9VAcPHdPcQ14CC1JsaPkg5be2mfXR3ho3VGj6SJqJRgPZ2Dbz0-5FJWenvkpWOpXGs8ZxNXBYEDv1o8U7yD2Mn8-4sjclRn0Qed7RpCB-MhvNP-3mKYDg0wAkT1HhBVCbsuO4WnnDj0Hv8TPwrwFOiJBiW8tWdwDdOIhLB-hzoH_VYf6LdCi4ILqHJSaYYcSC9kQR2_leS2HomwE42zEDOOakzksCcDyh_5Pw1q2Jr2dkd90jMVJ9OXG7WLWIAI8SuAHZUOU0cKg9Rxu5T5-yeIgzfx7F8qSKkgD-e8ZQrXgST04wGxb7fmIf5sF8mOe5H5TFkdr_1LzIp8Yuk5WkcV7rV5uo7eSwxh7XrZE0B28yQfhWM_1IBFnb7mUA4sOC0wPzzoLhURUI-nkVFqyhnIlp-HSkO8miX67TeJJd6l5oo1yPbiMq-xEB2af8IPuCKCqMLcIDwmbvAy86rZ_J85ik6KfNOIq7TG9FcV83HOCkb632AOcFH6bPr1vwqVk8OmjqEnFfhL14qMLxyVZJJ8H1INesIHxJdcvNaLwijJOcW5cQzim_k-qWFBvgX89V8O-KNCtm6BT6focBsr6y_Ua_4qhrXo5X4Tko-G8Y4WtI8XtdMeT_cKDiJadGehCVx3YBnxWuSzo_HbIuPVUWP_pESf8PolKM-102PtKK_41KP0Ql7J0aCaGfJAerD_rM-n1qjuFYJeh39xgfcRehSYBgQ1UlVZ259lp_cDo02HL4fl9d9IYoWq4aY4vLntWzbFVBH9cK-LeTrfGPKujRbc8xbHqXDeMAGje8h0chIRpi2z_RSYQGHjoKkp-R_L0tW8H-2dJ3tnyktVTbrjGed0LZHV-sSsqpoccn93vMsaUPff7xYcAjZ-qpMY-EiQ-i52to-CtjabRXZoTTwizpmmmjtkfy5bTvEcCh6SHJ17Dguxjp8GGXQ8FpOVR4KcJjvNANZyYT5ULJgmo9SP9FMuN_IpN_SDFfG6PhGAcf242SIpmcG_1dEX55ReiONrzBE6ducElRTjJs6pm-ESo2pGt5DkD32Sgm1ktana5X33tgNPQe8fwRUBLkiCBYEya6GbsJCSy3vBwTp14UoiSB2pD-niQc7HBwVXpWXvpl6qfkjF56UeynGCMUn20ui4p4aRxUeV7ElV-kOMwLHIVJHnsBDsvyjF1ihH3keTFycy5QhJI8Cv3C8_KKhjEIEK0J4xfWPBdSrc_cxeVlhFCKzzjJKdfuUh1jQb9D9xJgDMKbM3XpLgjzdq1BgDjTRu-5GGa4u4139g1vYH_sdd6fe52_yPPuStIGHHym610HCu9svEMpoKDa0LK_vj1rFb_8_DWsU-hfAQAA__8glsfs">