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

    <tr>
        <th>Summary</th>
        <td>
            unexpected error: 'builtin.module' op region #0 ('bodyRegion') failed to verify constraint: region with 1 blocks
        </td>
    </tr>

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

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

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

<pre>
    
When I try to convert builtin.moduleOp to spirv.moduleOp,  such as:
from  Intermediate dialect
`module attributes {
            ....
}
`
to spirv dialect
`
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> {
           ...
}
`
the following coredump appears:
**Stack dump:**
0.      Program arguments: ./build/bin/mlir-opt --verify-diagnostics -test-print-nesting --no-implicit-module -convert-relay-to-spirv -debug-only=dialect-conversion -mlir-print-op-generic -mlir-print-ir-module-scope -mlir-disable-threading --split-input-file ./utils/relay_mlir/flatten_relay.mlir -o spirv.mlir
 #0 0x000056084af583aa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) ~/llvm-project/llvm/lib/Support/Unix/Signals.inc:602:22
 #1 0x000056084af58775 PrintStackTraceSignalHandler(void*) ~/llvm-project/llvm/lib/Support/Unix/Signals.inc:676:1
 #2 0x000056084af55f74 llvm::sys::RunSignalHandlers() ~/llvm-project/llvm/lib/Support/Signals.cpp:104:20
 #3 0x000056084af57cde SignalHandler(int) ~/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007f4a22c63420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #5 0x00007f4a2270000b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #6 0x00007f4a226df859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #7 0x00007f4a226df729 get_sysdep_segment_value /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:509:8
 #8 0x00007f4a226df729 _nl_load_domain /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:970:34
 #9 0x00007f4a226f0fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#10 0x000056084afaf40f llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void>, false, false>::operator*() const ~/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:139:33
#11 0x000056084e847734 llvm::iplist_impl<llvm::simple_ilist<mlir::Operation>, llvm::ilist_traits<mlir::Operation>>::remove(llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void>, false, false>&) ~/llvm-project/llvm/include/llvm/ADT/ilist.h:253:21
#12 0x000056084e90a937 llvm::iplist_impl<llvm::simple_ilist<mlir::Operation>, llvm::ilist_traits<mlir::Operation>>::erase(llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void>, false, false>) ~/llvm-project/llvm/include/llvm/ADT/ilist.h:269:5
#13 0x000056084ea93adf llvm::iplist_impl<llvm::simple_ilist<mlir::Operation>, llvm::ilist_traits<mlir::Operation>>::erase(mlir::Operation*) ~/llvm-project/llvm/include/llvm/ADT/ilist.h:273:60
#14 0x000056084ea8ba73 mlir::Operation::erase() ~/llvm-project/mlir/lib/IR/Operation.cpp:432:1
#15 0x000056084e777d77 mlir::OwningOpRef<mlir::Operation*>::~OwningOpRef() ~/llvm-project/mlir/include/mlir/IR/OwningOpRef.h:39:3
#16 0x000056084e77539d performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) ~/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:159:50
#17 0x000056084e7756ea processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) ~/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:238:34
#18 0x000056084e7757bb 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&)::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const ~/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:268:36
#19 0x000056084e7766d4 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&) ~/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:52
#20 0x000056084e8aa9ad 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 ~/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#21 0x000056084e8aa17f 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)::'lambda'(llvm::StringRef)::operator()(llvm::StringRef) const ~/llvm-project/mlir/lib/Support/ToolUtilities.cpp:88:15
#22 0x000056084e8aa8f9 void llvm::interleave<llvm::StringRef const*, 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)::'lambda'(llvm::StringRef), void llvm::interleave<llvm::SmallVector<llvm::StringRef, 8u>, 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)::'lambda'(llvm::StringRef), llvm::raw_ostream, llvm::StringRef>(llvm::SmallVector<llvm::StringRef, 8u> const&, llvm::raw_ostream&, 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)::'lambda'(llvm::StringRef), llvm::StringRef const&)::'lambda'(), void>(llvm::SmallVector<llvm::StringRef, 8u>, llvm::SmallVector<llvm::StringRef, 8u>, 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)::'lambda'(llvm::StringRef), llvm::raw_ostream) ~/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2110:3
#23 0x000056084e8aa8ad void llvm::interleave<llvm::SmallVector<llvm::StringRef, 8u>, 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)::'lambda'(llvm::StringRef), llvm::raw_ostream, llvm::StringRef>(llvm::SmallVector<llvm::StringRef, 8u> const&, llvm::raw_ostream&, 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)::'lambda'(llvm::StringRef), llvm::StringRef const&) ~/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2131:13
#24 0x000056084e8aa7b9 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) ~/llvm-project/mlir/lib/Support/ToolUtilities.cpp:91:19
#25 0x000056084e775960 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) ~/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:272:61
#26 0x000056084e7762c9 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) ~/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:367:13
#27 0x000056084aaf96a3 main ~/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:255:32
#28 0x00007f4a226e1083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#29 0x000056084aaf936e _start (./build/bin/mlir-opt+0x373636e)


**Is there a demo to implement builtin.moduleOp to spirv.moduleOp?**

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1v27jS_jXMDSFDJvV5kQsnqd83QIsWSfecS4OSRjLP0qSWpNJkL_a3H5Cyo4_Eqdsuttk9KYpY5tfMPPNwOJSHGcMbCXCO4gsUX52xzm6VPv99C_Key8ZszwpVPZyj8AqFq39vQeJrbPUDtgqXSt6BtrjouLBcLnaq6gR8bF2fabm-e2xB5BJj05VbzAyiq36xWqsdxtfSgt5BxZkFXHEmoLR9P0rCfj5m1mpedBYMRulF34tH_xaLxWI_J716nNw_HHR5snb_MNYTv1cNL5nA__f-9n0Uh1jDbx3XTiqh_cC7EhC9vFsuQmcSii9ut6wCjeKr_Xf3RN89q-ZLSm4B10oI9YXLBpdKQ9XtWszaFpg26N0aXVyifI8bIu7_rWXlr9gNc4D6pr47XPTiPmnVaLbDTDfdDqR1wOMFImvnrsp9conIeie4DlRrcRDcgeb1Q1Bx1khlLC8NDiwYG7SaSxtIMNapFwRSBXzXCl5yG-yhC_ZkCDQI9hBYFfSoBxUUXRMoKR4Qvdr7YD_YcCVx4BXoJag2aECC5uWkmeu9lMCUqoV9X8UNKwQEdquBVb1iphXcBly2nQ1qLsDb21kuDCJrr9nGzUVkXQtmLciNb1y4Rhw8stYN6b2HCA1xeB-GYRgnYRaxOs4oY1iIu53Dna7Mg-kfPjldvVc-a1YCItkwSLMvG2WsBrZDJHFU4dIikuM_EFm7YUGr1X8cO_uv7oMXiKxvu7ZV2jX_Ivm9a-CNZMIsuCwRXSUhQXRFyKDtcq5tmsZ4plq_xv8zWQnQiGR3ileeQT-uT5oguloO6pCZOnGdRs-Bd9PJiVYGkezb9DkoUrZuQyzDyAETDprQmSZpWQGeI_HneCVa0ikK0V52WkeMkDKhEQnxZqPBWKVhoy325u5Xv8-STRIFgsvuPmhk13e0Pc8XRrnYcxHeL6OIhIjkg5h4IiZ1jwXWjBvAo23fCF6Uwe3v17-nF49fyYIuEVkbbwci64XbOObBVNC6rdP1ZpoHc-e1kZ376pdeOIvj5dTgZKJJUtVZnGNWKG_paZrYqkfDz_JCMickHYSkcyEpyXEDdtPrvTHQuLi3uWOiOxkBLq2zXyhW7UxTsl50HOZOgUF29pzsjRQbN3FTqR3j8sdE5mmI6IpGg8x8KrMO6yo5gTilo0ziKUNpXSWPlHHRYhbcWB2F9Wh_csGN3XALmlmlEb2cd1VgGRd9i1QVbFRruZIG0UsfRX3Hx9bN50q6wGd1B-6zZsL4Bx996LtJW_9A3_XzVbuX72KUDwulksa-sE25LEVXwdCwuvrsmifmLLaOtNR5ltIBkkkEhSxKUzoOWbztF9m1YoKHcS2w8SKOWN8bOYfQasbtMcAcBHsUNOzU3fRY-enucWfZS-HyJT94-EnsQiVZDvBPTgzIQ5bT9DXAD5qZ14b-j0GfOObHA_KTExJYTllVvybkn8XsK1nL11FIqc-jBhiiKQxZwVKKn1VxrNwRNfbZZh-fr28QWT_O32cqESXD2enkxxP5aZpWaTqW_0Vy2Xxsb6A-xqPVI3R_jEd_TckBq31Dr--wggesj5eDuslM3ZjmFW5B10rvVmXP95dTYWOrPZO2TEO1ae10M92qTpfwodHuYuUj_37iYPyH99c3l0pauLeeEpM-wfXH1n5gXF4qWfNmtMbXffZZKX95OFyTEFmPFjxkm7HfSiMSpXNUEmC41aoEYy66uvbZ5kmgdJL_1sETUD7ATumHw1Kj8RXUrBMu-AiwcHxOv8FORmo87qq_xd1Aw43VD_v-Qc5nn6l-Ukoc35_fDjKh2SghciBnc5DTonjenFcI9vMgnkjbfggiqWC7omKIpIhkf50Vx7HM5xmbizmvRbfjaeN3sDHxbEwGNuYzNiZJFY38uX-3dAOmE3akZd1JHyU3ehbQpxNeC4aPR0vJhChY-eumlhO133bdT_IKyYSSzV8L7Eub7ZuTstvP79f7zcDEu3urmfEZRxS7w5U87jQSTm9ojOWs-gfsqL9b0Pw-b_q4uRx5czn35jKtRzvSv9JdyerTLHn6GeD8DZn14ohLXPgk7fD5fIQbZeJWc9n4u8Sxg_75wSeevMN7VXcG_2K54JbD4Z1u5pkzXFgJmTMnq3N_Yx5fNaUFLYDdTbF8VO4Q32eXhjfWvVLW7d-JnODhHRPiX1DOX82MVrvEWfckQ3jz_Ov1_JGVxx3DlD4l-g4-TG69LxnzRpq_F2meBP2jSf0o0nw_j2bC3-LRP5hak5W_7-4zypHJchlO3rIS-iTVYdXbQfhGvLeD8I00f9JB-ONBi_oqkFHUiuZRKy3yN7L8HLL84OU7974dKkfI_GfKOE_C_40fX_6kHxBSgugqGX74JfNfUhNS5kcR9ZVql7jcMr0v_jwS_U-w-1SGnGQXTdJZFJj8FspYnSeMYl8gdVygfSrq8HjAL46dtNGLxFlNFizDjOLNRvCi3BjLtN18S1VWabpDHVz_6Dv9Or4-i0ZkmqLlczNpArgX7MLG8crbvjQrpQlNYCjOGv_1Dr422G5BA2a4gp3CVmFfebEDeVIJNl2Pq4TPqnNa5TRnZ3C-TLKYRpSS8Gx7HmXZsiqKLAcSJZRVxZKEdVHQJE2THCA-4-ckJDSMSR4mcUzCBa3ykJGU5HWWL8uqRlEIO8bFwrl2oXRzxo3p4DwheUbOBCtAGF9tToiEL9h3IkJQfHWmzz0diq4xKAoFN9YMq1huBZx3Eu5bKC1UGLR2OcwKI5JOAUAkxarFGhquZF_E6291aaGqhxvf6k_LHNeMC6gcXH31c7_RNXP7i64OK3zhdouXuBCq_NWcdVqcb61tfe0qWTvmcLvtikWpdqNS0SmxvZmO0h6G_wYAAP__12jcsQ">