Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Already live at def" assertion in RegisterCoalescer #120970

Open
arsenm opened this issue Dec 23, 2024 · 0 comments
Open

"Already live at def" assertion in RegisterCoalescer #120970

arsenm opened this issue Dec 23, 2024 · 0 comments
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] llvm:regalloc

Comments

@arsenm
Copy link
Contributor

arsenm commented Dec 23, 2024

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

@EugeneZelenko EugeneZelenko added the crash Prefer [crash-on-valid] or [crash-on-invalid] label Dec 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] llvm:regalloc
Projects
None yet
Development

No branches or pull requests

2 participants