diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-05-02 18:56:28 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-05-02 18:56:28 +0000 |
commit | 6893926b69088eb65053470802e00081234684a7 (patch) | |
tree | fcf108c53c7931bf29631c19c9a1c9560024b500 /llvm/lib/CodeGen/PrologEpilogInserter.cpp | |
parent | ee9c6ba1f62df23ec74c045fa0bff63052ae57e1 (diff) | |
download | bcm5719-llvm-6893926b69088eb65053470802e00081234684a7.tar.gz bcm5719-llvm-6893926b69088eb65053470802e00081234684a7.zip |
PEI: Skip dead objects when looking at CSRs
On AMDGPU if an SGPR is spilled to a VGPR, the frame index
is deleted. If there were any CSR SGPRs, this woudl
assert when setting the offset.
llvm-svn: 301961
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/PrologEpilogInserter.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp index 570a0cd0ba9..549f07ecd9c 100644 --- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp +++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp @@ -761,6 +761,9 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) { } else if (MaxCSFrameIndex >= MinCSFrameIndex) { // Be careful about underflow in comparisons agains MinCSFrameIndex. for (unsigned i = MaxCSFrameIndex; i != MinCSFrameIndex - 1; --i) { + if (MFI.isDeadObjectIndex(i)) + continue; + unsigned Align = MFI.getObjectAlignment(i); // Adjust to alignment boundary Offset = alignTo(Offset, Align, Skew); |