[NVPTX] Use MBB.begin() instead MBB.front() in NVPTXFrameLowering::emitPrologue
authorShivam Gupta <shivam98.tkg@gmail.com>
Sat, 10 Sep 2022 18:59:10 +0000 (00:29 +0530)
committerShivam Gupta <shivam98.tkg@gmail.com>
Wed, 14 Sep 2022 03:00:55 +0000 (08:30 +0530)
commite2632fbcdd8d8a5fff6c3ea4f4104cb63019f2c9
tree4f6e3577addb5e7979b31359ee1bfa83fd5b705b
parent1b56b2b2678cde21f7c20e83f881ded9b96518e4
[NVPTX] Use MBB.begin() instead MBB.front() in NVPTXFrameLowering::emitPrologue

The second argument of `NVPTXFrameLowering::emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB)` is the first MBB of the MF. In that function, it assumes the first MBB always contains instructions, so it gets the first instruction by MachineInstr *MI = &MBB.front();. However, with the reproducer/test case attached, all instructions in the first MBB is cleared in a previous pass for stack coloring. As a consequence, MBB.front() triggers the assertion that the first node is actually a sentinel node. Hence we are using MachineBasicBlock::iterator to iterate over MBB.

Fix #52623.

Differential Revision: https://reviews.llvm.org/D132663
llvm/lib/Target/NVPTX/NVPTXFrameLowering.cpp
llvm/test/CodeGen/NVPTX/bug52623.ll [new file with mode: 0644]