diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-11-06 18:17:45 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-11-06 18:17:45 +0000 |
commit | 0c90e9501eab14bfcd545dc5a50d068d481cd882 (patch) | |
tree | ddb51d67a994cde26848ab0c025e2f00e78691d2 /llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | |
parent | 5cb8e67b1790cb255fb3ed4f6c462c7632813c62 (diff) | |
download | llvm-0c90e9501eab14bfcd545dc5a50d068d481cd882.zip llvm-0c90e9501eab14bfcd545dc5a50d068d481cd882.tar.gz llvm-0c90e9501eab14bfcd545dc5a50d068d481cd882.tar.bz2 |
AMDGPU: Create emergency stack slots during frame lowering
Test has a bogus verifier error which will be fixed by later commits.
llvm-svn: 252327
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIFrameLowering.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp b/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp new file mode 100644 index 0000000..a2d8fa1 --- /dev/null +++ b/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp @@ -0,0 +1,33 @@ +//===----------------------- SIFrameLowering.cpp --------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//==-----------------------------------------------------------------------===// + +#include "SIFrameLowering.h" +#include "SIRegisterInfo.h" +#include "llvm/CodeGen/MachineFrameInfo.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/RegisterScavenging.h" + +using namespace llvm; + +void SIFrameLowering::processFunctionBeforeFrameFinalized( + MachineFunction &MF, + RegScavenger *RS) const { + MachineFrameInfo *MFI = MF.getFrameInfo(); + bool MayNeedScavengingEmergencySlot = MFI->hasStackObjects(); + + assert((RS || !MayNeedScavengingEmergencySlot) && + "RegScavenger required if spilling"); + + if (MayNeedScavengingEmergencySlot) { + int ScavengeFI = MFI->CreateSpillStackObject( + AMDGPU::SGPR_32RegClass.getSize(), + AMDGPU::SGPR_32RegClass.getAlignment()); + RS->addScavengingFrameIndex(ScavengeFI); + } +} |