<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120970>120970</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
"Already live at def" assertion in RegisterCoalescer
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:regalloc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
arsenm
</td>
</tr>
</table>
<pre>
[already-live-at-def.mir.zip](https://github.com/user-attachments/files/18230543/already-live-at-def.mir.zip)
```
llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -o /dev/null -run-pass=register-coalescer -verify-coalescing /Users/matt/src/llvm-project/llvm/test/CodeGen/AMDGPU/already-live-at-def.mir
Assertion failed: (SlotIndex::isEarlierInstr(Def, S->start) && "Already live at def"), function createDeadDef, file LiveInterval.cpp, line 114.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ./bin/llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -o /dev/null -run-pass=register-coalescer -verify-coalescing /Users/matt/src/llvm-project/llvm/test/CodeGen/AMDGPU/already-live-at-def.mir
1. Running pass 'Function Pass Manager' on module '/Users/matt/src/llvm-project/llvm/test/CodeGen/AMDGPU/already-live-at-def.mir'.
2. Running pass 'Register Coalescer' on function '@already_live_at_def'
#0 0x00000001090126fc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x106b066fc)
#1 0x0000000109012c6c PrintStackTraceSignalHandler(void*) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x106b06c6c)
#2 0x0000000109010a64 llvm::sys::RunSignalHandlers() (/Users/matt/src/llvm-project/build_debug/bin/llc+0x106b04a64)
#3 0x0000000109013584 SignalHandler(int) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x106b07584)
#4 0x00000001850a0184 (/usr/lib/system/libsystem_platform.dylib+0x180484184)
#5 0x000000018506af70 (/usr/lib/system/libsystem_pthread.dylib+0x18044ef70)
#6 0x0000000184f77908 (/usr/lib/system/libsystem_c.dylib+0x18035b908)
#7 0x0000000184f76c1c (/usr/lib/system/libsystem_c.dylib+0x18035ac1c)
#8 0x0000000106b518f8 (anonymous namespace)::CalcLiveRangeUtilBase<(anonymous namespace)::CalcLiveRangeUtilVector, llvm::LiveRange::Segment*, llvm::SmallVector<llvm::LiveRange::Segment, 2u>>::createDeadDef(llvm::SlotIndex, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>*, llvm::VNInfo*) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x1046458f8)
#9 0x0000000106b50f70 llvm::LiveRange::createDeadDef(llvm::SlotIndex, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x104644f70)
#10 0x0000000106fd0754 (anonymous namespace)::RegisterCoalescer::reMaterializeTrivialDef(llvm::CoalescerPair const&, llvm::MachineInstr*, bool&) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x104ac4754)
#11 0x0000000106fcd000 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&, llvm::SmallPtrSetImpl<llvm::MachineInstr*>&) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x104ac1000)
#12 0x0000000106fca1c4 (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x104abe1c4)
#13 0x0000000106fc73c8 (anonymous namespace)::RegisterCoalescer::joinAllIntervals() (/Users/matt/src/llvm-project/build_debug/bin/llc+0x104abb3c8)
#14 0x0000000106fc4f10 (anonymous namespace)::RegisterCoalescer::runOnMachineFunction(llvm::MachineFunction&) (/Users/matt/src/llvm-project/build_debug/bin/llc+0x104ab8f10)
```
If the unused $vgpr0 block live in is removed, the assert is avoided but there is a verifier error after coalescing
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWF1v47oR_TX0C2GDoj794AetHd8G2LRBcvf2MRhRI5l3KVIgKXd9f31B2Yll72cDFygaKIgkkjOHZ85oOAHnZKsRVyT9QNLNDAa_M3YF1qHuZpWpD2EElEWoD3Ml9zgHP6-xWXTSLv6SPUk3hBc773tH4pLwLeHbVvrdUC2E6QjfDg7tHLwHsetQe0f4tpEKw9-o4DFLk5jw7Y888CVh5enK2OlipVKCzjtvZa-QxBvo6lboOXR1-N05oPNO9AOJN23zZZlwOjeU8G2Ne8K3elCKzu2g5z04R-KNxVY6j3YuDCh0Ai2d79HK5vD6Ruo2rP_k0AbsHXhP-NZZQfhWqX037635E4U_PRK-9ejC09rU-Btqwrflw-a3x0_f3y1hZekcWi-Npg1IhTWJS0p48ayMv9c1fgkcx6V0d2CVRHuvnbeEFxtsCF_T5zmJ75wH6wlfUsIzwjNKOC-P_mjwR8HTOkzngVi-ps2gxehRWASPG4T6ZC7EiX6Ue7zXHu0e1EL0fRhQUiONomRBWPn48a58vqNuqDrpKdBqaKnF3lhPvaE_EMaJpSvupHPDKA4KuqZSCzXUSP0OqbDgdrQC8dlbEBh8P3sQn2k9dH1wwUq2IGz5aE1roaNg2-GouLikC8K3ldSjv_9D2URh40-D1sFdwEYJz7evgX0MLx5AQ4uW8JwaTTtTDwrDrP82OJ6HSPFvAXw6sUfXr-yd0L1JMuBL2Mn0SzD9Av5llG9OWEiNmFH2hR1_IrZkEc8aQUe0Y6q4gzvePFqp_SiY34N8CC_Okyz868U4bxG6MWnWVOpTChW_yE81SFW_1FgN7VRqhH9gXyKWVSzLGnH8lAXU0TVqkQl6BfFZthrU30DXKjBT7I2sCS9vjUtkE1z8CheDLPkWm0-DvoDnRkQ3BZZAlpyBxVfA4rRI6DVDt49anhYTEMkERJEyYFGRnLwNzoa1sgquDs5jd3w83r_0CnxjbLeoD-OcYL9gSZFEU_vppf0Mmpz9on2_CzlyZT7BJmdn89nUfNLk-ZIVv2ZeXBqO02rJirPh_MpwJiLxTsMgookci2nUsyqNimZEDNroQ2cGRzV06PoxoZdHaa5BiVC0nkC3-MlL9QEcknj9ny77A4U3dix3b_p_m3B8fMY2VJgxKafTnjtQr-vj9c-XrykfSHw3XmHgqhJPvlTng8CFww9D1z96WyplBHhj77teXXh-gDD0Nh5WJ2yZDeryLuLFoAKM6x398fd73Zgbf32SLEmLZqKj5VW4WdD_d-n7H2ApuzEdyVu-hhpxUdqypmZ5mvxM_a819VxSjxUOH8CjlaDkX_i7lXsJ6pq1tyWPIC0VRodSn11S-ABiJzWezp2jSCpj1K2ZAJHkaXJmIrpkQtSMsXcy8aeRem36w8XWf7StrxL70dtn9N8Qz6WN2-sDRMTYRB_8ihWIxHv1IUx_eH31T2M_f5Qh-FOGBg-VwtJaODxh89Od33LbFUZiIob4att5LH5aFH4ghlKp1_7m1qeYBKoqFsUZenIFPWmi9-rYDvof-sT860n_W5o-j91YjFXRROzcnE86c8LK-2bs2QY9OKwp4cm-7S2jlTLi87ENlZpKRy12Zo91yLIwH8b2NwxAOO1iTavBhxGL40s6NlcSLUVrjaXQhPZh0mrN6lVcL-MlzHAV5XGyzFJeRLPdKk1ZXcQ5b6KmjnmVsgJiHhXpUogKmrqeyRVnPIl4iFJSsGhRFAUkdbXEPMtYxguSMOxAqkXgaWFsOxt71VXE2TJnMwUVKjf-H4XzUxQstmNFCc12upnZ1UhxNbSOJExJ593ZmJde4eq7zfqJmtAUSU2_0sRssGr1_mb7tIf9iv87AAD__7jDppA">