<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61710>61710</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR][spirv]`ConvertToTargetEnv` triggers segmentation fault on an empty funcop
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
BealZephyr
</td>
</tr>
</table>
<pre>
Test on commit: https://github.com/llvm/llvm-project/commit/3245bcdd17dcf17388d13762ee175a47795b1692
steps to reproduce:
```
mlir-opt test.mlir -test-spirv-target-env
```
test case:
```
module {
func.func @main() {
return
}
}
```
crash trace:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/ty/llvm-project/build/bin/mlir-opt test.mlir -test-spirv-target-env
#0 0x0000562009fae2fa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2282fa)
#1 0x0000562009fab58c SignalHandler(int) Signals.cpp:0:0
#2 0x00007f552a6a5980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#3 0x000056200b53c19f (anonymous namespace)::ConvertToTargetEnv::runOnOperation() TestAvailability.cpp:0:0
#4 0x000056200b8a708e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b2108e)
#5 0x000056200b8a73ca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b213ca)
#6 0x000056200b8a77b2 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#7 0x000056200b8a67d5 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b207d5)
#8 0x000056200b8a6fd2 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b20fd2)
#9 0x000056200b8a7ee3 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#10 0x000056200b8a856d mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b2256d)
#11 0x000056200b89c4e3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#12 0x000056200b89cbb1 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#13 0x000056200b89cda1 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&) MlirOptMain.cpp:0:0
#14 0x000056200b9696f0 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/ty/llvm-project/build/bin/mlir-opt+0x1be36f0)
#15 0x000056200b897ec3 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b11ec3)
#16 0x000056200b89a6ee mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b146ee)
#17 0x0000562009f7a2f0 main (/home/ty/llvm-project/build/bin/mlir-opt+0x1f42f0)
#18 0x00007f5529339c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#19 0x0000562009f8d14a _start (/home/ty/llvm-project/build/bin/mlir-opt+0x20714a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWF9v6yoS_zTkBSXC4L8PeUj_RHtWp2p0Wu3DfYkwHjvsxeAF3NN8-xVOmsQ56T3ttjp772qlJAYDM7_5zQyB4c7JRgPMUXKFkpsJ7_3G2PkVcPUbdJutnZSm2s4fwXlsNBambaVHbIE33ncOsQWiS0SXjfSbvpwJ0yK6VOrp5THtrPknCI_ocr-ULhmNk1JUVZRVoo4yludVxLKUAkRZwuMsK5IySguKyA0iC-ehc9gbbKGzpuoFBKXD0P43JfvP0G2VtFPTeezB-Vno4WloTl0n7dPUc9uAn4J-urg6zMSCu58pMVWvAKPsatfHda_FLPxgFJOWS41ojmhxMgNjbMH3Vr_0UXazl31ojJUIy90Ge8tPTR5PWX29XTzcYteXrfSY47JvAk_G-sDYu10knevBIbrEXFdYaqH6CrDfAN5hKbn4fcAz26l_8Fz8jqu-7Q4AyQyRYmVNY3mLuW36FrQPIDCiy41pAdGl3_6ouuylqsIzULd8pxMxooxg8kwIIUlKCSlqDrTmeDCTLRBbuK3bNVZWaj8AfxyYpflxkuXf18Z5C7xFNEX0GkvtBzcGb74fPqJX5JnSnNYc0eKINTrDWia5wA-y0Vz9jetKgUU036vevXYz0QWSyfA9CKJ7QVmdJJSnPClygtdrC84bC2vr98iVLBFdPufpOo2nSur-edrofjfQ-Y0FXs2cmZEBcESLnIzwslO8ZcJEVNRBMtdGb1vTO6x5C64b-Cx2XF4b_QTWP5rHwVm3-mnPca_v9X0HlntpXtIkbC-LJy4VL6WSfnvZ2ngEI-cZyQEHrneSK_Bcql37vns0992KO7eoeOeNPShHND8uCRMQXQRPH1-egDsbWWiutk66O655E5x0jUtjVHj2ethHq8-ImKikEclh5ILk3HYm-LttX8kOlNQw4mA39WBS-ulknC4Kqr5o5-2wLxj7g9TxhJ3m3cAe-4pb0P6Lrg0WRjs_SPg430yMUzQ95zsr6bv5Pgn0hdtq8aXtFKL5jqZ9niCaKd6WFUc0G_nl81Tcd6u7QNjg3P07M6wKDggJ-EsU7_yFg7DL-Z2dcZ5mVfLJnH80TkhWJaM4yc8x19X74-SvsSeRuqIj24vzHAFg_9-TRnvSbOh31nSzJAp_qq-EfzgUkDM68yStzlC82HUxcMa0fNjdNEmrg7sDvmiMrxAxMNyBrY1tFyIodj85TTlf7U9jG26hWnfeInZ9XPFgeivgrrGI3b4weeb7u69fvl0b7eHZ_-CnOyXtfefvuNTXRteyOZFR4JPRy_zTc_vKMsKdNQKcu-rrejiVvcm8Xst_9fCDeXfQGrt9EXUyv4Ka98qvK1Dg4fU17DZ83mzz6bwbyRUI_w0a6bzd7sePeh6HQ-BqSJbFm-hi53RVPDpR-NU0UnD1DVyv_ImicEkKsbK2UCN2_doCRPNfR-frTi2GSWFEcKXC_Wdd6xHsE57-hOFx2e1vTJmLB5Q_jVdoroxufi2xfwDp5wkzvr4UaZHW5MQVrlPSL3S1Ottx_hvW_QWT9A9nHI8Bn3MOBJbWZPTneHY_KzIQ7HKe_a_tEh-kMopAsBGVZ1evgqcAr1K5P82JDd-d2xbjQHjwVurmG9RvMfhzYiOKU4CRQdm43JNxGhKfS_0xTXVMz4IwPy0HFYwVIs_weq1kKdbOc-vXe60HuU0Ym17_4-_ffysPXToLO_1SuB7R5Wx2aA6Dg5yZQGzB4ni8wRVjO_MqijneKf5YBY1kUXy8nh9qoJNqzqqCFXwC8yjNipyxnGSTzTwhwLKE8zSukrrIkrjgqSCZyEiZARXxRM4poYwwmkaUEZLN4hoo4WXMi7zOa8pQTKDlUs0CypmxzWSojc7TKIvIRPESlBtK5pRq-I6HQUQpSm4mdj5YVvaNQzFR0nl3lOKlV0OtPZxjUXKDkquhpBmaKblQM0sJ9lY2DViHHTSHCwgekh0bjbnG0HZ-O9SgTTfprZr_55XfwcB_BwAA__8oZG2b">