<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111881>111881</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISCV] Assertion `A.valno == B.valno && "Cannot overlap different values"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Testcase:
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
; Function Attrs: vscale_range(2,2)
define i32 @main(i64 %0, i64 %conv16.us.1.9, i32 %1, i32 %2) #0 {
for.body.us.preheader:
%3 = insertelement <4 x i64> zeroinitializer, i64 %0, i64 1
%4 = shufflevector <4 x i64> %3, <4 x i64> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
%5 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> %4, <4 x i64> zeroinitializer)
%6 = trunc <4 x i64> %5 to <4 x i32>
%7 = and <4 x i32> %6, <i32 1, i32 1, i32 1, i32 1>
%.conv16.us.1.9 = tail call i64 @llvm.smax.i64(i64 1, i64 %conv16.us.1.9)
%conv28.us.1.9 = trunc i64 %.conv16.us.1.9 to i32
%.conv16.us.2.9 = tail call i64 @llvm.smax.i64(i64 %0, i64 1)
%conv28.us.2.9 = trunc i64 %.conv16.us.2.9 to i32
%8 = call i32 @llvm.umin.i32(i32 %1, i32 %2)
%9 = call i32 @llvm.umin.i32(i32 %8, i32 %1)
%10 = call i32 @llvm.umin.i32(i32 %9, i32 %1)
%11 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %7)
%12 = call i32 @llvm.umin.i32(i32 %10, i32 %11)
%13 = call i32 @llvm.umin.i32(i32 %12, i32 %conv28.us.1.9)
%14 = call i32 @llvm.umin.i32(i32 %13, i32 %conv28.us.2.9)
%conv39.us.2.9 = trunc i32 %14 to i8
store i8 %conv39.us.2.9, ptr null, align 1
ret i32 0
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #1
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #1
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x i64> @llvm.smax.v4i64(<4 x i64>, <4 x i64>) #1
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.umin.v4i32(<4 x i32>) #1
; uselistorder directives
uselistorder ptr @llvm.smax.i64, { 1, 0 }
uselistorder ptr @llvm.umin.i32, { 5, 4, 3, 2, 1, 0 }
attributes #0 = { vscale_range(2,2) "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-b,-e,-experimental-smctr,-experimental-smmpm,-experimental-smnpm,-experimental-ssctr,-experimental-ssnpm,-experimental-sspm,-experimental-supm,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smepmp,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
Command/Backtrace:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc reduced.ll
llc: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/lib/CodeGen/LiveInterval.cpp:1186: bool coalescable(const llvm::LiveRange::Segment&, const llvm::LiveRange::Segment&): Assertion `A.valno == B.valno && "Cannot overlap different values"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc reduced.ll
1. Running pass 'Function Pass Manager' on module 'reduced.ll'.
2. Running pass 'Register Coalescer' on function '@main'
#0 0x00005ba2e3da4500 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1ede500)
#1 0x00005ba2e3da190f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x1edb90f)
#2 0x00005ba2e3da1a65 SignalHandler(int) Signals.cpp:0:0
#3 0x0000797452642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007974526969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007974526969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007974526969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x0000797452642476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007974526287f3 abort ./stdlib/abort.c:81:7
#9 0x000079745262871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x0000797452639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005ba2e2bbd0b5 (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0xcf70b5)
#12 0x00005ba2e2bc6d60 llvm::LiveRangeUpdater::add(llvm::LiveRange::Segment) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0xd00d60)
#13 0x00005ba2e2bc73f9 llvm::LiveRange::join(llvm::LiveRange&, int const*, int const*, llvm::SmallVectorImpl<llvm::VNInfo*>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0xd013f9)
#14 0x00005ba2e2e9dfb3 (anonymous namespace)::RegisterCoalescer::joinVirtRegs(llvm::CoalescerPair&) (.constprop.0) RegisterCoalescer.cpp:0:0
#15 0x00005ba2e2ea2e59 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&, llvm::SmallPtrSetImpl<llvm::MachineInstr*>&) (.constprop.0) RegisterCoalescer.cpp:0:0
#16 0x00005ba2e2ea50c7 (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) RegisterCoalescer.cpp:0:0
#17 0x00005ba2e2ea8d18 (anonymous namespace)::RegisterCoalescer::runOnMachineFunction(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#18 0x00005ba2e2c91477 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#19 0x00005ba2e32bdc57 llvm::FPPassManager::runOnFunction(llvm::Function&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x13f7c57)
#20 0x00005ba2e32be0a9 llvm::FPPassManager::runOnModule(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x13f80a9)
#21 0x00005ba2e32bea61 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x13f8a61)
#22 0x00005ba2e2581cb6 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#23 0x00005ba2e24c5b26 main (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x5ffb26)
#24 0x0000797452629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#25 0x0000797452629e40 call_init ./csu/../csu/libc-start.c:128:20
#26 0x0000797452629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#27 0x00005ba2e2578755 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc+0x6b2755)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/llc
```
Godbolt: https://godbolt.org/z/c8rf6WxrP
`-opt-bisect-limit` points at `(19) Machine code sinking on function (main)`
Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWl-T26iy_zSaF8ouCf1_mAfPJD43Vdl7UsnenEcXQshmjUABpPH409_ij2TJ49lMcu8mWxvTNPSP7qaBBg1Siu45IfdB-hCk7-5Qrw9C3ndIS4qPK0kHoe4qUT_f_0mUxkiRIN4E4bsg3ARZ6P5nbGgBlY6rkdwTDWqkEUPPotcgiN-BAEKyaoN4Q1ZdEG-yxP6s6EREsAjiTQSLFY-h430xPAgXsFrSjpERUlKFhyxZ9fzIxRNfMcr702rP-0nM_8YPYNtzrKngYKO1VEG8AYPCiJGdRHxPAljAAD7CAJZOpCYN5QTQGIIgCVtEeQALmiUggGkYwEfgaSz4EGXrXq2jdWn5RgKm0Yw2qCCAcQiC_MHBN0KujVeNYCfJgaCayMmzwEjF1krKFZGaMNISblz5mIATsG57D85ECsqppojRM5EzrSYNoxlgYgHVoW8aRgaCtZBXgGZUI_ndYcYOZqrem5qxNBxNjm4Q8fuZJqnVBCPGrhVIbDCtVYtO6yExXBMXVzomb9CxnA2X2eG07Dl-aXAKtFjaM5PMrSTi9bXFMM28Eq8ZfNvy9SJenF6IMucLO3lzDzj73Ty-GnJzS00TLBbo1moveTW6FtYeJ75shj-i3DLgJoUW-sDv6AOv9THtxSVO_EK0w_ct5WvTExavrLYZRvlWjGK5eucYUfhWkPJvQKLbIG4lriWpe0wc5JA40BdBl19Bwjc7KJwrdq1Z_GYYOINZBNsVYvJmxPgmIrwV2XF5I5I8TGKjpxgllBaSAFq8EDWjdVoC3jNmaMTonl-2SUk0cHuZOzjyd98_R7gwdlYIHwEXjSQEcKGeOQZc9PyJ8hqojuCeIY0qRsATZUwS3UsOWtIK-RzAggtOZkcPZsho_-qK84vNHyvRb1Tx1bn1s_r7VfzRA-bF2fL7TfiZ3eI1rXtFGDWroyYS1FQSrOlAlOuwaDSr5GX4PZocxh1HJp159x3BS1A4wdQQFsaue8u_BnO_SGtJq14T5VMnk_LlD69lbSYddDniqiFI95IokwTG78wvfMiSiuoAPgbwAbkCu6J2ReOK1hWSMHRy5OCKM8VKjmRDOCbU19q2Z54cSAybGX2a6CypZ3Qzo6c-LIJFNVVieKGzxNAr-0Psz6kjkpqEELGVarGWN7ht197g8ltcdRNB3e57i9nfYJ4RQ-ol7JnihrLuNl-pl_yhwjF8afZ5OO5t74P5UQcseq6JJPzJ1fdId8iRekDMk4O6sAe1aNADwbWttIg6botrwsje00pS7juQru0cpTTShHBbUaOcwrjZj1TnfKsUFk3XNiO90FbNwNU3oagnF-jK3Mi0ozX25WTBTH_VZ8mJWXJANRmJ3hEVkp5F-YB8N4464aCHrmotdcIDYr2nKjoRukWcdr5K2JOnWoRHirSeUrS1Gp1Ug4m5OTp6wN1INVxiRrtT862ZWE8twvjbt28j45up16Je1L8J304bagynCiNZ18xunxd-w3p1uHC1uWdVaEZXM1pdaNyKWUXwuhXDhdG0pKX16cIYjXeV60bSdojKC8McCZfaUDvPnwYT2ByZ0UTndHnCB9vzjCJYSOXILBkp5LQ8o-qAHIGRb2JSeckWRVnlyCcv6DxwdsafK9exOvrqcayfXOlksJPBrpOLtDMmrmhc0YrOE2NpLTvXlDusxoE0VdNS7siDLybG2PcwJ8ZWiv1meKa4Eu1EdRN19hRGrUAjTZuRYmoUwtIF5Jli7pbomRrfO-pAueaaXSod6sf-h85jjPYe3S_3Re1L4ktn4tGNcVS-IL6b8s3OVVq5KR385Ax-doaZzwz91CJPH8ZyavYTORz3vhz5HI-EH3w48qmPDyFDjfJqLEc5NcmpUc6rP3j9BxaF0E_RwKIsLqYKDJNiotNsJGOYZxM_CcupIY3gSGZpGk_8IipNA7wkDMtUIZpShf-_fGyWnIyPXvNc5VG0LTLzvn1A-KglwjdeycYczFzktgpLpPEhgFuNV5ooTc1MmAoWbUcZkaumP59X5pJzDOC26imrV3s8TLRJr9yDl2GZud8yhoFLDOs1Y248xrBJTX9iSDPArKBVALePoib_MgfS9iMdyAdzhg2IrXHXBfEmiorMjFUJwQAWiBGFjWMDWGDBlQYWKt4E8cZIf7YZnK1-IXtzrAfQPqr8QOfSjLdRikibiQdZuFkPiHFhYsCEwcNYNb0zkyQ-Is6FBmIgkqEO1LRpzEGsgTnuXNIIc9Agyki9dj789PH95st7oPqqpRogUPV7IEknpDaXzoPWnUn_A7gN4HZP9aGv1li0SxeuOin-Iub83lKl7EBb-7BEOWZ9TYA-EIAlUgdQjTHkh_-iTQTXfdtNQRWugf3vkxR7iVqA5L43TlE_Odc_HV6RV-Rzzznle9AhZRZhPl2OPhnGH4ijPZHGsYKDVtQ9I6bXDA3m3lr4CuJnsqdKEwkeXWRNcM04VADz6ak2n96g4hCEpzAMw7RCkMQ1StIwnEWXelaO-CQp19bXf9oFDItLJ4medkJpSVDrg5SaCDS3juIfdHcAH8JTRGqShuH8XS2OrmyKyrC5ZdPnnn-he47YfyFeM2LO_-LXqV2VYbNQG16rjbIULBQMYOE969jK7y2h_TcBxR4oL_MkhVkCUxh6o9xGdSqyXZbMPwiYBrxWYp1Z9azIQrlkiVlmZYPBbtfpgySo3h0pYzvadu4lHtmIWwdwyzuTJmzn3dZmy02SIN7k2QU_fQu-2VE5Yn-LnNsvJTNvZLeQ52J_C1eUV3D5tXOTPAN7ZefDIjkygNu1rT2rmpiEddsJRU0gSEQVsdgwD-LNzAfFEhoWeRMDVJmd1ELp2k2fZTntImPxBaF8gRBVYMfZjglU72phlr_FojZ92xp2q_YYObgoyo1KftrNSgqXgHFJyuzHQsmKTKFkMBfLE1ZVHVbpr1hzuMnDKl2oApeq4KzOwltn6_90NdLuE1S8QXW92P5eO4F_yUZSh2GdhQuj4iuj8rgpX08Y_hL2492t9mkvd0lHADe36hfJLy1i7Kt9gvvQdiyIHy9tX__7A2-EEYnfu-Tk13gnipty4Z1k4R1S1k0VG1UQF_y5Fb0CHLVEdfaQK_1B4U_Xy-E6ue4rlfoz2auFC6d-n-zVdrR2bd3WSdGtzYyBF7Avt3OjcbrUGEGSlv8HjR9F97zQ9g-ED5STD1yZm56dU5Ok-um_mt5PWn4h-sX0XmPMJ_knzc6uzE5DnP-k2Vh0zyPrP0IeP1ITvXMX9PaSs5ESPX8mzXdNe7MR-ZURRR0VP2mE7Pm_uVdmTCBvzeOlLfsBRYuForiMkjwHr2KbvHWm1U11rvQwgdAhqV0M3MC7rVe5SIpgVeN0rtf2kxEdM-gf1ugfT_PiJsez75ImywuvLCIhKt9g0R_2XrCccM_6hdYUIVpspzC6tgZl0cwaRvYIP_srxMUut3942367TSiLFjYts4K0iHCVAT_WNA34gNxueXUIfvz49Y9HwTU5-Us4YAzfjG24PKgTnFYwAzZF-wWGp01TwUViBq9yfFjWZQh2O5PP7ZRGUu8wYmw3JZFY9S_TXJ9I3xJaH4J4k9r8PLuMml6PSpLQfhvfUU719UCONOgri-7yVvvnUXDm2uwW6MKUW1bcBI9zsy-nF-zlnp7mRZ6mwKH-ionLKpinlzT2rIxXwYd__wmoOaL68bpfYCGJfRghtVtM_5xet97y_iXqSjBtlLt6BHINayHN4Gfj90I22X9O8tPie2wWrkSnVxVVBOsVoy3VQRaCTlCuFUAamKFgEZWzAwVgUROgKD9Svr96_yjc40d59Ty5FT2vwUARMLYTub6r7-O6jEt0R-6jHBZpkYRFdne4xyEqMMKYkDqtQ1hhYqYihIg0FSxzfEfvYQiTKIzCqIiSBK6ToskrQqocRkVI8ihIQtIiytb286-Q-zv73HUfRVFRRHcMVYQp-8eGEHLyBGxrAGGQvruT99b5Vb9XQRIyqrS6wGiqmf0rxc8fvjx-DdJ3_-S7310v2f3PP-x5Y4d7-L8BAAD__wx6nx8">