<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60922>60922</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]LLVM ERROR with "can't create type 'mlir::async::TokenType'" when using `-convert-async-to-llvm`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sweead
</td>
</tr>
</table>
<pre>
I think there is no corresponding dialect in IR and this pass should not be effective. But it still triggers an error, is this a bug?
IR:
```func.func @multiple_conversion_casts(%arg0: i32, %arg1: i32) -> (i32, i32) {
%inputs:2 = builtin.unrealized_conversion_cast %arg0, %arg1 : i32, i32 to i64, i64
%outputs:2 = builtin.unrealized_conversion_cast %inputs#0, %inputs#1 : i64, i64 to i32, i32
return %outputs#0, %outputs#1 : i32, i32
}
```
Error message:
```
/home/compiler/tests/base# /home/llvm15/mlir/build/bin/mlir-opt ./canonicalize.mlir -convert-async-to-llvm
LLVM ERROR: can't create type 'mlir::async::TokenType' because storage uniquer isn't initialized: the dialect was likely not loaded, or the type wasn't added with addTypes<...>() in the Dialect::initialize() method.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/llvm15/mlir/build/bin/mlir-opt ./test.mlir -convert-async-to-llvm
#0 0x000000000048501a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:569:11
#1 0x00000000004851cb PrintStackTraceSignalHandler(void*) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:636:1
#2 0x0000000000483846 llvm::sys::RunSignalHandlers() /home/llvm15/llvm/lib/Support/Signals.cpp:103:5
#3 0x00000000004858f5 SignalHandler(int) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:407:1
#4 0x00007f2c08a70980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#5 0x00007f2c07960e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#6 0x00007f2c079627f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
#7 0x00000000004c4894 llvm::report_fatal_error(llvm::Twine const&, bool) /home/llvm15/llvm/lib/Support/ErrorHandling.cpp:125:5
#8 0x000000000092e47d std::enable_if<std::is_same<mlir::async::TokenType::ImplType, mlir::TypeStorage>::value, mlir::async::TokenType>::type mlir::detail::TypeUniquer::getWithTypeID<mlir::async::TokenType>(mlir::MLIRContext*, mlir::TypeID) /home/llvm15/mlir/include/mlir/IR/TypeSupport.h:210:12
#9 0x000000000092e3aa mlir::async::TokenType mlir::detail::TypeUniquer::get<mlir::async::TokenType>(mlir::MLIRContext*) /home/llvm15/mlir/include/mlir/IR/TypeSupport.h:170:12
#10 0x00000000008fe6c1 mlir::async::TokenType mlir::detail::StorageUserBase<mlir::async::TokenType, mlir::Type, mlir::TypeStorage, mlir::detail::TypeUniquer>::get<>(mlir::MLIRContext*) /home/llvm15/mlir/include/mlir/IR/StorageUniquerSupport.h:154:12
#11 0x00000000024dc12c (anonymous namespace)::AsyncAPI::createTokenFunctionType(mlir::MLIRContext*) /home/llvm15/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp:88:40
#12 0x00000000024db0b8 addAsyncRuntimeApiDeclarations(mlir::ModuleOp) /home/llvm15/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp:213:29
#13 0x00000000024dac59 (anonymous namespace)::ConvertAsyncToLLVMPass::runOnOperation() /home/llvm15/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp:1000:29
#14 0x00000000029c9c4a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/llvm15/mlir/lib/Pass/Pass.cpp:471:21
#15 0x00000000029ca244 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/llvm15/mlir/lib/Pass/Pass.cpp:534:16
#16 0x00000000029cbb0c mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/llvm15/mlir/lib/Pass/Pass.cpp:837:10
#17 0x00000000029cba2c mlir::PassManager::run(mlir::Operation*) /home/llvm15/mlir/lib/Pass/Pass.cpp:817:60
#18 0x00000000029c306c performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:84:17
#19 0x00000000029c2d93 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:124:12
#20 0x00000000029c2b9f mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:164:12
#21 0x00000000029c2abd 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>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) /home/llvm15/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#22 0x0000000002aef459 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 /home/llvm15/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#23 0x0000000002aeea35 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) /home/llvm15/mlir/lib/Support/ToolUtilities.cpp:28:12
#24 0x00000000029c1e29 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:169:10
#25 0x00000000029c1f6a mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:187:10
#26 0x00000000029c28d6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:269:14
#27 0x0000000000417bbe main /home/llvm15/mlir/tools/mlir-opt/mlir-opt.cpp:239:7
#28 0x00007f2c07943c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#29 0x0000000000417a5a _start (/home/llvm15/mlir/build/bin/mlir-opt+0x417a5a)
Aborted (core dumped)
```
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt1u2zoSfhrmhoghUbJ-LnLhJjE2iwQJ3PQssDcGRY1lbmlSS1JNvE-_IClbttI0qU-AdhenKGKJojjffDPkzIikxvBGAlyg6Sc0vTqjnV0rfWGeAGh9Vql6e3GD7ZrLr9iuQQPmBkuFmdIaTKtkzWWDa04FMIu5xDcLTGXt3jC4pcZgs1adqLFUFleAYbUCZvk3mOBPncXcYmO5ENhq3jSgDaYSg9ZKI3LpRPlxKK66BiVzFF2haBb-3ixQ0l-iLAr_V51kE_cHozTadMLyVsCSKfkNtOFKLhk11iBSIDKluolQMsM8IU5UaIn3LSU-R8k1RqToO_StKP8UhGL3CpdtZw1KZgSj5ApXHReWy0knNVDB_wP1WDjeSR5E4gMUPCHYKsyz1N9laS8Lkanq7AmyeoAk2UncN_Ry95K83EHVXkcNttPyUP4w1NAy1qE3S341sk-4vXbmxRswhjbw0oj9LZmv1QYQmTO1abkAjcjcgjffvKIGEEnw0EmIb5t4ish8I7jr6dip3S-XfeO5ai2euPGoVJIzz9nEPcHngTh7Ts1WsnOrzt1wAcft7R93-HqxuHfuhhmViOQWMw3UArbbFjAiuReazFAy8yOEy0f1FeTjtgVEclwBo50BbKzStAHcSf7vDjTmJgzIJbc8mNHJsWvYz6knarDgX0Fs_RwSitZQO6KV9v08iCfaD0TrGmr8xO3aXTrxBiWXk8kEJdfe8Us3Sd17V2H8AHaQ33fagF2rehJIeLi9nn2-xqarNtyG2Yg1tEpb5zVra1vnl4jMEZk33K67asLUpjdL_3PeavUvJ4_MuTEdODv6lYJLJroaPCamqVnjirKvVlMGvfjPlrKvuO427d5bogn2_x60ajTdYKqbbgPSz4_T3ML51tvugJ3_4-g52v9Li2kUU-y7eCrN1oSLB82l9dgfnTKIFEMnTZ-WylgNdINI5qeNtH59eYl9RyKvEJl_7lrHOyLzL5I_uwbeSCrMhHu_m2YlSmZxPKCNx2hjVuERtDDG36is_TwrvileIzL7ADxZkjk8AxwygpMUafY98hadPEJler98P54dENY6t4mjxNEzAEnGvBSrKR4T8TFGSaP8mIS0l52vCIsKmkdlEeHlUoNbHmCp3dJd7Ed_LrJllp4LLrvn80Z24UFr1xpoPTFqEiHyKXqOSVlEiJSDmOmhmLzMIihyrCk3btHaz4VG8IqdX_7x96d_VvtbMiE5InPj9UBkPnFTxGxNDa2buF1Q02zNN49Gdu7WDz3xbugCaTQgyUZISL6KMa2U1_R9SGwd2PBveSHFSEh-bFGWFmV64FphwVquqKVi2acYBzPy8YlLwExJY_sZWSklfs76PrJ57-Gy2TkemR47XnEEsySQ5jU2tg4wQNJKwJKvUHK5b-RmaegGUHL5RqTxtzebVoS4c4mH_q7lc4g-LhT4tm9UdKNu3x-27-9DzdC3Bku5GIb_EoJaaGjA_oPbtWu_uXoHchedhj53tzeLSyUtPFu_EI01ubl6xTL9Qt8HlaHhZoHI3HMQrDVZu0wqjryFBuOUY-MklL7Bzk8Q8qdp-PMqx_mhyi4-HIezYgUZi09TuXevLwb0J5ehvantC7O-7rJHD17l-fqQ6o8nc6dgEHdE6zQd0XoUd0las5gwt6y77HO7UZ3Bkm7AtD4zKAPCmSNp9nAT7kKS6dmad5JZrnrWTtQprFaX-yIBkbkX-Khcknt81y9eReHD16AVGWlVRVXhEk3_6qKTlm9g1vIrYIJq6iCbY7yq7gTctx-OlMQuvu-in4OajKBSNi3fMkAQaQ-Gf6Cmz0h0J-_lfQtBrdfTkdN1iKMoGimRHilRspKl9JWJcN8-qvvW4Z3VtLVK72EfWcArNF5SD9QaPZlJKraGmzsqaQN6iIuXuJP-y0H9g9T1iIsg2f_0Cqd57E036Dsd6UtJmv60vg-8BcHl8UwJXfdqZB9OwOFLTtSNNFb7osRlGrMfdQiSw4Me-wPVIO2NXKldTvKu2f2S42niV6Zs4DgbcVxVERtB2ym7Z5QaA2bE57sZOwV2kfic-WDpycewKXkL9g8An4QpdpiyA0zFCFMSZQy3oFdKb2Zst_z9qOzb-dLud-j7WXWawV3z0llfJkfDW6s-Uiw1rI4C8K1qOKNiAaYTvr74PnVOVukj59sMPSolzEEdjcj8TnB939o7yuWONO9--cBZOeKM1GWCW60YGPOpW61Av0HZPi0OH1GWrdUouRzeuION0tvdUAf9a1jRTthlDQIsvP6OSyOuv2ec1431cbQfGrr_RLOAhhurt73-BzWLLwEfPJp3-fS7LBaTUS5DorHJqnJ16I_DEL-N6X6Nad5ymL6kDEMgki6jcKn82uQrUveYFL-CqLG5yhB5PsipsrFTxWOnolWNX7POKeb8LTjc1ySMClFR9nW5kkew_5o8f2byuApPKNn8Kn5ezpnXvxYNNWXfMLt6dEXl4-2uvKPi-tlqanxJmU5HE-a49qKwSqfl_8HE-F9b-06zZlaMrJmMrAk0mR5MEdMKbmeyfhglRr_3IvBbmO7NHi-WlDdD3PCJ1wW7L5YLbjns6gIytu24ao-BlH_lS6cv-R-VgpTHJSUZf22IVxn9ze10zPnua8Hl7QPVBvTR_sXvRX4xqufJ-DMEKersVfL7LyxsTcO3lFHV-9lqLpsFrN6v9wfpRYJTpYNeo22oOK8qwBvK5Q8E2peidpc7OYmTM5TRpDjeUksTVuR4uRS8YktjqbbLncz3bK8x0-12-cKlf-jH8XttSZoOm21OfDnWkk4pDoL7zcuf2oL3O5hhlP0W5qxS2kLthmNKgz8AAPX-8fjAyO72rL5I6jIp6RlcxFmeR0VGSHy2viiyPEnrKCernMXTKGJRlVUsj6o6giRi6Rm_IBFJIkJInMd5FE_yfFXVcQZ5mtVTkhQojWBDuZg4pSZKN2f-KMNFFpWEnAlagTD-HBUhEp6wf4gIQdOrM33hD0FUXWNQGglurBlGsdwKfwDr7vZmgaZXw6GTcJIDEXLqyRNECH5ag8Sd4bLBKIteOd6QRfis0-Li9NMcnoX_BgAA__9Xc8D1">