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

    <tr>
        <th>Summary</th>
        <td>
            Crash in `mlir-to-cpp` pass
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          patel-vimal
      </td>
    </tr>
</table>

<pre>
    Content of `input.mlir`:
```mlir
func.func @call_opaque_with_template_arg() {
  emitc.call_opaque "init_tile"() {template_args = [512 : index]} : () -> ()
 return
}
```

Command:
```
mlir-translate -mlir-to-cpp input.mlir
```

Output:
```
void test_template_arg_in_call_opaque() {
 init_tile<mlir-translate: /home2/vimal/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:454: T &llvm::MutableArrayRef<mlir::OpOperand>::operator[](size_t) const [T = mlir::OpOperand]: Assertion `Index < this->size() && "Invalid index!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./build/bin/mlir-translate --mlir-to-cpp test.mlir
 #0 0x00007e60ae022e88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home2/vimal/llvm-project/build/bin/../lib/libLLVMSupport.so.21.0git+0x222e88)
 #1 0x00007e60ae020a0e llvm::sys::RunSignalHandlers() (/home2/vimal/llvm-project/build/bin/../lib/libLLVMSupport.so.21.0git+0x220a0e)
 #2 0x00007e60ae023581 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007e60ad642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007e60ad6969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007e60ad6969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007e60ad6969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007e60ad642476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007e60ad6287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007e60ad62871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007e60ad639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00007e60b6b458ba printOperation((anonymous namespace)::CppEmitter&, mlir::emitc::CallOpaqueOp)::$_0::operator()(mlir::Attribute) const TranslateToCpp.cpp:0:0
#12 0x00007e60b6b3ba7f (anonymous namespace)::CppEmitter::emitOperation(mlir::Operation&, bool) TranslateToCpp.cpp:0:0
#13 0x00007e60b6b47922 printFunctionBody((anonymous namespace)::CppEmitter&, mlir::Operation*, llvm::iplist<mlir::Block>&) TranslateToCpp.cpp:0:0
#14 0x00007e60b6b3ee34 (anonymous namespace)::CppEmitter::emitOperation(mlir::Operation&, bool) TranslateToCpp.cpp:0:0
#15 0x00007e60b6b3a800 (anonymous namespace)::CppEmitter::emitOperation(mlir::Operation&, bool) TranslateToCpp.cpp:0:0
#16 0x00007e60b6b3a585 mlir::emitc::translateToCpp(mlir::Operation*, llvm::raw_ostream&, bool, llvm::StringRef) (/home2/vimal/llvm-project/build/bin/../lib/libMLIRTargetCpp.so.21.0git+0x11585)
#17 0x00007e60b4a39bd6 std::_Function_handler<llvm::LogicalResult (std::shared_ptr<llvm::SourceMgr> const&, llvm::raw_ostream&, mlir::MLIRContext*), mlir::TranslateFromMLIRRegistration::TranslateFromMLIRRegistration(llvm::StringRef, llvm::StringRef, std::function<llvm::LogicalResult (mlir::Operation*, llvm::raw_ostream&)> const&, std::function<void (mlir::DialectRegistry&)> const&)::$_0>::_M_invoke(std::_Any_data const&, std::shared_ptr<llvm::SourceMgr> const&, llvm::raw_ostream&, mlir::MLIRContext*&&) Translation.cpp:0:0
#18 0x00007e60b4a37cf2 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::mlirTranslateMain(int, char**, llvm::StringRef)::$_1>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirTranslateMain.cpp:0:0
#19 0x00007e60ae5d27a5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/home2/vimal/llvm-project/build/bin/../lib/libMLIRSupport.so.21.0git+0x2b7a5)
#20 0x00007e60b4a34242 mlir::mlirTranslateMain(int, char**, llvm::StringRef) (/home2/vimal/llvm-project/build/bin/../lib/libMLIRTranslateLib.so.21.0git+0x9242)
#21 0x00005c8a639e7d30 main (./build/bin/mlir-translate+0x3d30)
#22 0x00007e60ad629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#23 0x00007e60ad629e40 call_init ./csu/../csu/libc-start.c:128:20
#24 0x00007e60ad629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#25 0x00005c8a639e7c25 _start (./build/bin/mlir-translate+0x3c25)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWFtv47oR_jX0CxGDou4PflDsGF0gQRZJ0FeBkmiZDUWqJJWN--sLUnJ0ibPJOd32bBe7Xl3Ij998M5zRkGjNakHpBoTXINytSGeOUm1aYii_emEN4atCVqfNVgpDhYHyAEGEmGg7s244UyBCwM8AyuyF--ueouzQiXJtfyAIUEk4z2VL_tnR_Aczx9zQpuXE0JyoGuAE4BSC-BqgDELaMFOuJzMgwJgJZnLDOAUYj-OnKBoCfwdBeB16GAI_g0xU9BWEOxDv3P0w7Qr4N8O1XU5R0ylh-ce7qRX2GmVb2TREVAsLAcqskVdGEaHt-vCqv5dXZdvCiTjvAO8703bmPd6LZBU0VJuZMjkT-USIuVCjJP52Tqe3dn-UDcUA750XAd5z_tJctUr-g5ZmuAV4z0TJu4qOD7Ldk_1Vipwe6GF9BH4WhIHFfIIAR26UnwE_u-sMKTg9jxxo9O_u2_uWKifdTf9E2nsjVR9nACea_YvmxhpUSqGNdd2T8-EllHBnCWRaU2WYFDYGv1n_QuBvoTkybd1qEc8a4QjgyEbON_FCOKuGcMCeC6AYHgjjtFoDlH2_vckeb6DuioYZSGDR1VDRVioDjYRHY1pt2eA9wPuamWNXrEvZjHotZGVad1QDvIdE2FWdutAcKSwV0UdYkPLZKFJSu_ajIeUzrLqm7UMCraH7813JWpEGElV3DRXGMoBrgPdFx3hl_2cC4P0yCmdhaKPpHIUQYB9B9IoQQjGNEKEIY5okcPSmPun-4rtiwjhiT5YmwMk4SJEfudRGUdI4hbeQCdPrnXwecXPya2sPZ0X_e3v797vHrrWyr7VcY2-NamYAvkav2FEd9ivAvrcwBBFELxny0IlHVgvC_0ZExanSb7Hx3-Rq2Yxc8YKrHyYenLECOHEabqFmNRMHafdEZu9tTnCX6TBDr8vWBgpy__oF_OkCVRTgEKPBwp7vaxLlUXDFmeher2rR9S9KSzxylN2UkXEwB0yj9FDCPG_NUVFS5c-M85w1Lac2LonbjFYc0Rqr4nTYurSpw2aOOBrAw6-AC0OVIPynsHEC_Mw7ixBdgp3O-SlWkk6x4qWgQRzBWjsHOJj-8hwU-qQr2tr93krNXgHeK8I0dcA4Bn52Nj2Z4-IkPviQFDbNOBxT9f5yj3penjV0mJ6-m-4VMBc855JUeSUbwnpHMOGstI8bXZekx_K82JKxTrY7CM3R_JSm0R-LGjeljxoLON2TRVQEYVIQ2NpM4jK4DRMHnxAhxamRnYaCNFS3LsOk_Ybdtu1Nw4yxm8Ill7ESuI-CYRTh_N7Vw_v2bSrAQY4Whaav8TgZUTJjFCs6Q8eq83TOnk9y27aLDWYtw3PL_ILEB_h1Q97YT3WYVri3p87iQkpuyX1Ky18IHqcY94LvO1FaxGtZnf4jzSfcXD4aUyxrOdNmVvCvuSyfbbG3KF_gHyxkpdQPfgNZwwUtkiD0G9CKlrTCJLy8O8wM6qPVF_58X9Z7ZtMxj0YxUdvvvF9RQu9uvz08EVVTYw1eFFHPC5NwzC3TjFwExE-LKoLaVD2v_Bzv-XEoqP52ZH0ra1YS_kB1x42l_TZPH4miVd6a-YRH2amS3tXKtgkuRQyK_EytUWNrl2uVXvsqns5fvzl6r2Rjxz7QmmkzuOULQ6YfYxOPfOCo7SjTYVDp5-r8mWBJl0pdWtP1N7MFdoxwWprButMlqHluH_qI_C5n4kU-06kz80yc8ooYcpnI_8bX0SL3MSkubOVkEc1xecDwI5eMz89a5sp1Wl-J8E4w228vrb6jjVSn6-5wsDl_olJFD6TjJq8op7aJ_GiO9cTN5zHRv7Htq2158oOY1Qt79Rbqd8SmiPN3cHkkygmafZyBxsjwHJmES1HPrPkrrYd3S-suBMLsi46GFY7JNKfrljOTieq7kiXV-sz4L3Hv_2HwfbKL_0gW_UXl7qOOsYjJWOwwWqSHAAcY_rJt84sK95nALSuW5qQ4wKM157YgLBNiu4y48hF0rQrAyWfnGX2fUfloxMOLLiitUgTz3LYmuTZEmf647K0ZKnX3vlEb-sBLk9xpV-h6y2hY0l8uSQME3QQmmFmu0l9a6CsH3Tdf2CLiYePj4BLizIhL_C8i-7HNhOEAHC7VLnEIe8iv613iIRoz24hSV7VLqag7paLV4Ivz0eWq2vhV6qdkRTdeHCTY92Psr46bNPW8Q4TCOIhjjFEZRMjDAaqKuAhQ7KMV22CEQxTiCAU4Cfx1TNJDQnEYHaKwqPwUBIg2hPG1jc61VPXKHa1tvMALQrzipKBcu2NrjAX9Ad1bgDEIdyu1cSFddLUGAbLNih5hDDOcbrbuNI65o8TJsRmIEGyJ1qtO8c2fP_wbSL5s8L8DAAD__1sSI7I">