Description
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