<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113404>113404</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] -convert-spirv-to-llvm trigger assertion
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wr-web
</td>
</tr>
</table>
<pre>
git version: d71dd363991fd533e9a2c2f43f4630b8fa64df10
system:
```
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
```
quick to reproduce: mlir-opt -convert-math-to-rocdl control-flow-ops.mlir
control-flow-ops.mlir:
```
"builtin.module"() ({
"func.func"() <{function_type = () -> (), sym_name = "empty_region"}> ({
"spirv.mlir.loop"() <{loop_control = #spirv.loop_control<None>}> ({
}) : () -> ()
"func.return"() : () -> ()
}) : () -> ()
}) : () -> ()
```
stack trace:
```
mlir-opt: /home/wangrui/llvm-project/mlir/lib/Dialect/SPIRV/IR/ControlFlowOps.cpp:348: Block *mlir::spirv::LoopOp::getEntryBlock(): Assertion `!getBody().empty() && "op region should not be empty!"' failed.
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 -convert-spirv-to-llvm control-flow-ops.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 0x000055c1b80f1975 __interceptor_backtrace + 117
1 libLLVMSupport.so.20.0git 0x00007f7bbc2d9021 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 289
2 libLLVMSupport.so.20.0git 0x00007f7bbc2d114b llvm::sys::RunSignalHandlers() + 331
3 libLLVMSupport.so.20.0git 0x00007f7bbc2da2c8
4 libpthread.so.0 0x00007f7bd18b6420
5 libc.so.6 0x00007f7bbb7d800b gsignal + 203
6 libc.so.6 0x00007f7bbb7b7859 abort + 299
7 libc.so.6 0x00007f7bbb7b7729
8 libc.so.6 0x00007f7bbb7c8fd6
9 libMLIRSPIRVDialect.so.20.0git 0x00007f7bca2d8dd5 mlir::spirv::LoopOp::getEntryBlock() + 341
10 libMLIRSPIRVToLLVM.so.20.0git 0x00007f7bce3c92e5
11 libMLIRSPIRVToLLVM.so.20.0git 0x00007f7bce3c8eb3
12 libMLIRTransformUtils.so.20.0git 0x00007f7bbda4652c mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 796
13 libMLIRRewrite.so.20.0git 0x00007f7bbd8f2409
14 libMLIRRewrite.so.20.0git 0x00007f7bbd8e9a70 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) + 3264
15 libMLIRTransformUtils.so.20.0git 0x00007f7bbda493b2
16 libMLIRTransformUtils.so.20.0git 0x00007f7bbda468bb mlir::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) + 379
17 libMLIRTransformUtils.so.20.0git 0x00007f7bbda4a57f mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) + 1695
18 libMLIRTransformUtils.so.20.0git 0x00007f7bbda63690 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) + 432
19 libMLIRSPIRVToLLVM.so.20.0git 0x00007f7bce423816
20 libMLIRPass.so.20.0git 0x00007f7bbcf639bc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 2860
21 libMLIRPass.so.20.0git 0x00007f7bbcf6561e mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 1006
22 libMLIRPass.so.20.0git 0x00007f7bbcf6cb26 mlir::PassManager::run(mlir::Operation*) + 2662
23 libMLIROptLib.so.20.0git 0x00007f7bd001235e
24 libMLIROptLib.so.20.0git 0x00007f7bd00116e1
25 libMLIRSupport.so.20.0git 0x00007f7bbc3f28dd 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) + 2957
26 libMLIROptLib.so.20.0git 0x00007f7bcfff983d mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) + 925
27 libMLIROptLib.so.20.0git 0x00007f7bcfffa1b7 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) + 1207
28 libMLIROptLib.so.20.0git 0x00007f7bcfffaf39 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) + 2025
29 mlir-opt 0x000055c1b818742a main + 346
30 libc.so.6 0x00007f7bbb7b9083 __libc_start_main + 243
31 mlir-opt 0x000055c1b80acece _start + 46
fish: Job 1, 'mlir-opt -convert-spirv-to-llvm…' terminated by signal SIGABRT (Abort)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWVtv67gR_jXMC2FDInV9yIPsxN0USWPY2QXaF4MSKZldmdSSVFLvry9I0ZckdjY6u2iDg2NZnBnO5ZuPFxOteSMYuwXxDMR3N6Q3W6lu39TkjZU3paT724Yb-MqU5lIAXECahpTiBOd5WNMYY5YTVKE6wnWU4KDMapJEtA4DENyBoNB7bdgO4GL4CpLA_3NfH9cz-MvJNISwkopNwnAaToO-7IXp0URIoqotwIVmVa-42V8edwbvuDaKl72RCj7cWZs_Oyk_ynSleGdO0w2jEAXTIJom8PFlPUiuWMuIZl7K_jmRYXAuKRNkdzZay4q0FyP8refVr9BIqFinJO0rp7VruZrIzsBJJcUrU2ayI2Y7MXKiZEVbWElhlGwndSvfJrLTU6swGLw8dCW_AKGy563hYrqTtG8ZQAigDKAc2o90NohBCBCqe1FN7X9nMngO0pl9Z1O2MfuOQYDvoB-eAHzvnwGaQ73fbWxavAhiu87sN4o1Nt0IgfTuIH-a182sO65eXRzTVsru4_z23caH7W3jQeV8BOD5P6RgAN9fmyi9G2wWl_w_98dlQjHTK3Huy1d63zD-HZH31dOGWOwo4kBzUeQApMHqYit3DKDFGxGN6jlAi7Z93U06Jf_NKgPQwmEFLVpeArS446QdXq-XD6tfAFo8rABazId8Llr59tzpadV1ABc4yuwUs1ZWv0KAigPocOEqMTw-Stk9d8Nzw8y9MGrvNHyMuICF1kxZMEEbAgobZmaS7geBqUPMEZ8JQIkth-zgACKot7JvKRTSwJJBLx26GqWwJrxldDrkZfl4X6zvoe7LHTeQwLJvbAdKZWwvbo3ptPUTLQBaNNxs-3JayZ1P2Oe8ca17pgFaQCIo5KJqe8qg2TJYKaK3sCTVr65Ofvq1qxztd92xcMF0oIqlko0iO0hU0--YMPoyH7i0WkKwnnzFB6ep4Bs3W9kb24ilbKHtRW3xxYTuFYN72cMteWXQBTcI8d-ZglzYMQWXxctPUCqomXGxMfHKlRTWS_hKlC3Z4-MvT5v1P59mz48P_7pfbawKSAKb1E5y4bLLzVBsHzc8RXftL_hPEARBHFdhmQV1mKcx3Gy4MExVrDNSbY75hQDNYBimg-0QwpaX1qd139niTrWcWqK2S9Y722mdlmWFaB6g0MXvwbvXw8NScWFcKl9cu6HsJKTI20ZqoxjZOVDOIRdmgOgMosz3LhrtSxhG5SVfVr1Y80aQ9iciaMuUPnbEDGIcDtPh0dMRVGWDbuR0O7NVjFCrF1wridWlYVYmEfKEEzvdymolX5fTzVumNAuCEjbaRTSkLMCDrWSsrTLN4hyS0raxs5T75KfjLaUH0s3G6lZZTZNBN3e6T48PK0ehnlHfl-KkWxFEM0pj-CPsOZQ_8uUPg3cTv0iLhA8QOJuY4SpHLPa64VjdjJW-ZCE66L4oInQt1e5nw1t9rn6WLEqiJEbVWcBzx292w7ckxjAlhtc7YqptIeiKvSlubP-dVJ47pojbs6HCdt9pxJvwSsp1Z27JUg_4SHNfpxAf3PayX3cLzWoUBR4fYTRSl-UkDT57WXRdyytipPqrQ56fschxs6ZYDfC8lHbPdG7aGxiyNGTM7pm-MvIqOf3TRk4Dj7LhFWlXTPet-Z5dj36U-B14GI-FYY5L5HWT0RDOyhJeKM6AZVsF994v3e8C-gT3D4W7VnIfcHrAYDrWZxKn9fd9Pg7rdytfoRTZr1z5rjh6Kk6Y5Ad-yUY6m-AkP28Y0nXtfkmU4aQ9JfCbDXJSeCGqYeYMS-diCyV_Z4dq-Nqsr0qfjM6lqHlzCDrCB1Dl4zg1QjgLPTmhI5cvidYX2OXDUl4nOC_POZUyQ3h7SMyLfO6soYKS7kg2qhcfGk3rT6m7ntRCkHavuX4igjQWvHNomcV-9sJdIND3m6LD-QSFY2OLk5CNjm3JO9Zy8ZFErejR5S_77YeCfc_LWj8IbZTb1Et1gbjPBYi_g7AD3vclUUyYB1HLAwiPPBAGwQEraGw-qxIlH9w4BHYRGZd4CCWJxzk6LqTPnXnk5SUPzraOQRAiHDOvG43VDRPm9zvoSPjf2-7iGmWUvttotdwUgi6VrJjWs76ubWkzbegg0Av-W882nVHvFqsntpNqfxCfw6M8ZTXpW7OhrGWGXdfB939iZfx_ePfxuPN5Zf98IDqNrY3iorFrxrXXHlJ57A9xKBkDi6qu6zzD56V9arl67swT4eIPzm3_u3SevPNnghVruDZq_4mHzrwf1pbzzY9LVY78worSsZkiYZlezZTnsGpLBrYqxlbyj8L05IWCQ6Wz0f7XOP9L_P-Ooyg4Jjofd2cRZmmECNwRLvwxzdM1DsaeS_Mgw3CzsVobbYgym6NVFPlDGA5HXqmQilUMDvaGfYv3r-Z6C3AB_y5LGNo8AZT-wV0UuEcgC0CRAJRCw9SOC2IYheUe-jP--uFvxWz1YvmrsEf1a9ebN_QW0xzn5IbdhinKkzjM4-xmexslKaqitI5xzAhFqCojVFOURmlW47gOb_gtClAUBggHKEY4m5aYsCxirGSkTuI4BVHAdoS3U-vxVKrmxt3g3YYhjoLopiUla7X7yQOh4U4UgfjuRt26q7GybzSIgpZro08WDDet-5nEKcR31-7qjOJNwxQkh6vOm161tz9-5eh9fr1F_w0AAP__aSqdzA">