diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp b/llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp index f6023f3a40a2..57346087d017 100644 --- a/llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp +++ b/llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp @@ -286,8 +286,15 @@ bool GCNNSAReassign::runOnMachineFunction(MachineFunction &MF) { } Intervals.push_back(LI); OrigRegs.push_back(VRM->getPhys(Reg)); - MinInd = I ? std::min(MinInd, LI->beginIndex()) : LI->beginIndex(); - MaxInd = I ? std::max(MaxInd, LI->endIndex()) : LI->endIndex(); + if (LI->empty()) { + // The address input is undef, so it doesn't contribute to the relevant + // range. Seed a reasonable index range if required. + if (I == 0) + MinInd = MaxInd = LIS->getInstructionIndex(*MI); + continue; + } + MinInd = I != 0 ? std::min(MinInd, LI->beginIndex()) : LI->beginIndex(); + MaxInd = I != 0 ? std::max(MaxInd, LI->endIndex()) : LI->endIndex(); } if (Intervals.empty()) |