<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142447>142447</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] ICmp i1 X, C not simplified as expected. with opt "-passes=lto<O3>"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ewlu
</td>
</tr>
</table>
<pre>
Full error message:
```
ICmp i1 X, C not simplified as expected.
UNREACHABLE executed at /scratch/ewlu/daily-upstream-build/llvm/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp:7182!
```
Testcase:
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
@a = external global i8
define void @c() #0 {
entry:
%0 = zext <vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1 true, i64 0) to <vscale x 8 x i32>
%1 = icmp ne <vscale x 8 x i32> %0, zeroinitializer
%2 = zext <vscale x 8 x i1> %1 to <vscale x 8 x i8>
%3 = call i8 @llvm.vector.reduce.xor.nxv8i8(<vscale x 8 x i8> %2)
store i8 %3, ptr @a, align 1
ret void
}
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(read)
declare <vscale x 8 x i16> @llvm.masked.gather.nxv8i16.nxv8p0(<vscale x 8 x ptr>, i32 immarg, <vscale x 8 x i1>, <vscale x 8 x i16>) #1
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <vscale x 8 x i32> @llvm.smin.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>) #2
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.vector.reduce.xor.nxv8i8(<vscale x 8 x i8>) #2
define i32 @main() {
entry:
ret i32 0
}
attributes #0 = { "target-features"="+v" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(read) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
This might not be the fully reduced version. `llvm-reduce` aborted mid reduce for me
Commands/backtrace:
```
$ /scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt "-passes=lto<O3>" reduced.ll
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.
ICmp i1 X, C not simplified as expected.
UNREACHABLE executed at /scratch/ewlu/daily-upstream-build/llvm/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp:7182!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt -passes=lto<O3> reduced.ll
1. Running pass "function<eager-inv>(instcombine<max-iterations=1;no-verify-fixpoint>,aggressive-instcombine)" on module "reduced.ll"
2. Running pass "instcombine<max-iterations=1;no-verify-fixpoint>" on function "c"
#0 0x000058be7f45a172 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x35a5172)
#1 0x000058be7f4571df llvm::sys::RunSignalHandlers() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x35a21df)
#2 0x000058be7f457324 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x000077fe5fe45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000077fe5fe9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000077fe5fe9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000077fe5fe9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000077fe5fe4527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000077fe5fe288ff abort ./stdlib/abort.c:81:7
#9 0x000058be7f38585e (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x34d085e)
#10 0x000058be7e3f2501 llvm::InstCombinerImpl::visitICmpInst(llvm::ICmpInst&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x253d501)
#11 0x000058be7e3464fa llvm::InstCombinerImpl::run() (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x24914fa)
#12 0x000058be7e347d90 combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::BranchProbabilityInfo*, llvm::ProfileSummaryInfo*, llvm::InstCombineOptions const&) InstructionCombining.cpp:0:0
#13 0x000058be7e3491e2 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x24941e2)
#14 0x000058be7c9bb605 llvm::detail::PassModel<llvm::Function, llvm::InstCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xb06605)
#15 0x000058be7f2430fa llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x338e0fa)
#16 0x000058be7c9bdc55 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xb08c55)
#17 0x000058be7f2435e4 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x338e5e4)
#18 0x000058be7c9b9895 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0xb04895)
#19 0x000058be7f241f6d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x338cf6d)
#20 0x000058be7c66b241 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x7b6241)
#21 0x000058be7c65cd7c optMain (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x7a7d7c)
#22 0x000077fe5fe2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#23 0x000077fe5fe2a28b call_init ./csu/../csu/libc-start.c:128:20
#24 0x000077fe5fe2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#25 0x000058be7c6533d5 _start (/scratch/ewlu/daily-upstream-build/build-gcv/build-llvm-linux/bin/opt+0x79e3d5)
Aborted (core dumped)
```
Godbolt: https://godbolt.org/z/5cxdvhhGK
Found via fuzzer (C program before reduction)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWltz2zYW_jXwC0YaErzqwQ-0bLWZJk3GybbbJw0IHkrYgAAXAGUpv34HIGVRMp3rurPbdtSIIg4-nMuHc3AxNYZvJMA1Sm5QcntFO7tV-hoeRHdVqupwveqEwKC10rgBY-gGUFSgoEBpMHyC4tWyaTEP8T8RWeIllspiw5tW8JpDhanBsG-BWajmKCj-8ev9XbH8ubh5fYdhD6yzTsZiRFaGaWrZFpGVGx-RVUW5OMy61lgNtJmVHRcVIishds3oi5eIrD5oKk2tdGMQWb2Sxi5VU3IJ57-WqmmpBjNnbYuiIgtzgkh4YQ4Kig9gLKPm0lY3IuYaBYWlegMWV9RSQQ-qsxhFtxgRArMGRQXMHHwa-39m_PEhJDmKipDkMxmR_t17946QE6bVvBVwxNPcsF0azzr5UaoHORNcdvvZRnZ9H_eJA-qlYW9BSyrwRqiSCszzXqCCmkvAO8UrjOKAITfgAiMSBRhlNygoQFp96G3FGJEk8HifYO_MWu4MowLwHud4j3mIojvMpQFtQUAD0oUunxZrFTdKOlbwEFvdgX9MYxw4Bax6iu68cndUI_RqcNa0WMIzsl5dB_sJtOKSW04F_wT6iEG-ZIofZ0qVfKRJ5FEYFc6rzomOCfMdMKv0XEPVMZjvlZ7L_S7n-ZQ_8mEsgsjCoxqrNHg0kkTOgNZqh0zdMxV8I3HoBTVYHzsXzOx2iHl0g1edZJYriQtrtUFRgaVyGpaUfcRS1RoAS2UOkmGpOvnAZYUfuBAabKclbqBR-oBIroFWvVIVMEH1hKfD1Gs_mN1Q8xGq-YbaLQwmh6n_boMJ01urnSdd5COCedNQvXG_JsMx3ZD6Fk_Z8MccYFpgnaCWlgImvSGVyxmf9cbAu8EbpuGyd0JEpgLfM3rKrKHFm0X-dLN-gMfnOg_pxQUXxUFDuTwmmKe5xXHZCQZjMlNrNS87C2bISS7zZTcu-_UpcVYDtZ0G43JedOv-JTc7RAjuMc4BwkeAH5oPk9jkG7C_NibDQOMK9GHLDW74Zmt9MS0B2y3guhPigPsoVXgH2nAl53ioS7O-AaUBpqXSrqo2vBrEce3rd-_vpWoaKitXKJ3-VlM2UdQRib-lJvvv2YbtHp-9Ur5cuVeOFSvVumJBZi01BgyKboVVKFq-jTypyNG2uRAoKH4v7n999etPbgL8oTpEMg2YWgtNa7ncuJTdai4tdsWX4pJbpirANRcwP7rQfSStdtz4IFCDucUNPWBGOwO44qYV9IBbrUoBjZnjVzUKioPq8P1d8fr1H_iBSutGstRYwK9f__ZmNJA2dralsnKT-6A6FBSMSudpBk6ptrP4gdutjx1Kg1mNSIZV6-b2vI_EX2Dh9O71XfH-DpuubLiPQ7fBGlqlvd-21rYuhSGyQmS14XbblXOmmnNdZq1W_wJmEVlxYzo3z1eYygpzyURX9exnmpotfiSs88h766Zf1TVtT99gjv1_77TaaNpgqjedW6D4JPoSXJ4k8jmLw0Gn-05KR1vXw82BesjyKFoC3YCecbnzsyDn0lg2xCBaNnQ_4xY0dcJupBBFN1LNdqB5fZjVfN8qLm1fY-hmo8EYvoPZGIUs3ORSEjeq6tzSkpCRjn4dSZ5R8_uV8QMerXRQrB-pz_HBPgiCIMlLyOo4oWFGsCdEVKCoMAfTP7xzE9xH-YNPUiQ_CWn6sFZ94BBJ_fJC2r4y5S8Qa0Rugn2U0CTMjks4X2vODcnCqp4y5L6T7_lGUvEzlZUAbR7X4C-pKwmr-qQrudQ1IjE-08qTzzpXGr7hslZri0jhfvv1p3tcDD2OiSDw__cDRMMAWVZDUkOcRK6Yewv7VLPP03Uaj7cwroHNjZqnXmff5aRxfA64gJIwvF63dutq9PojF2Lt0qXfhXhO4jkiK9lagchqLDZnKCpitwvL0gE8-RpwOeyoPgeb-S3d0QnpFOy4z2ex8sUYK7t0KMkAa8oNeBDjI4HIau5_HUwFrUudrTLc8cFLeliSub3mgJqfo5I8r-t-ydCj2qqPln_VaxU6M4fuizMaRXmSJ_CiPI6rIE-GxaubcmfJA6KaJEE4mnOjoqVfNa3o3-644daVW9d8lkdOL9MXnpEkiaokCE-WhOeWxGlc0y9aojv58smDxIswrulJVXKhalYtAjwUBqen7nyeN293oI8bmDM3n176XH1u5dD7d6U_Cj6EYixTFPdgOmHNkI5GLcZ0jV9SLSnbwpOeH_wG4jUvNdWHV7JWz0g8roImZW5VwyW1Sn_Q8HSMt63lDf_kE9A9NFR_vGu4tS6fXkjeCMU-rjT8uwPJBnUuDLrRVLLtO61KWnLB7bTUO63cQvd953bT0yIj9rz1DjKYqRPPR27vpbjcXOR0F_foIu6LEMj0IO-oMWOGfkXoC0nFwXDzhkq3BELRcqKTW0u8-MyMF3EI5ET3eGw2W5RlGiQjxSuwlA_z0dn9RlUgptV_LibeXd_lDff5_3RzGaRpkJy8nJyVEhJHwVn-8579nM5_M_dFUQ7BOCmnFyytWPLfYOmL-f1vFq8yyFkyont2SfcE4pHeb_zm7IM66ujCUFS0tUpPe6Dv8E32D13-LLYmEJ_Mzy_YusgX38bWo73Lr3Tad3jlObL9b7u6DOJ8MSLa4oJoYZ1WXzG_p_z7V3ZbFOWsTqtHv5GznQVL05LE452F7jy93vEWhD9WGVn63mouN_dQT9HzmTXnG8q2Hqf4wprVL_6fSCkl3vpTxhUXEyA_1PyMOYXW9ODejiPmfSK6DZdPc_xJ3tiqfzc6-OpvJMdudFg3Lm7D4nkxVTlUa9dWqSFX9Fb8wvtz2OekfgPNaw76KFe6lm_-flE6ZmVK4tPukITnbExYlTGsWvuGcvmietCsythJD3JxXkBDRvF6LXjJ1sZSbdeMCrFunFpzRFbMdE_PJIYDj6lO8y2KiixGURENI0aXI5K89Jevay65vRykf3TIM4_sjyz6i3YybGNIPIV4ZsOU-pPIUZyhqEgG4OQiSFFUJbiHfNEYLSCqhoxfDLc9iORMafDn4XDMaud_1vCTqkolLIqKy5P5vmGu9AaR1SdEVgnbV7vt9qdf-p4r1ckK7zjFdffpE2g32hK3w0F7CbUb2R8q92uyxVV1HVWLaEGv4DrM4jzP0zROr7bXWRwsgJEgjctFWSVQs5jkMa0iGmWLahFd8WsSkCRIAxJmSRCnc8KiaBEHdbwIGCE5QXEADeVi7i8vld5c-VuD6zAmcZxdCVqCMP4PWgiR8IB9KyIEJbdX-tp7tew2BsWB4MaaE4zlVvi_hBlfgyS3-OuvafoLny9cc111Wlx__83IYObumvwnAAD___lmNyI">