X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FWebAssembly%2FWebAssemblyFrameLowering.cpp;h=8a2cf1ad46e2fd32f9959dfdf9697bfabb596a79;hb=7cbf72b4896c055cae285d7e488b8de18aa835f7;hp=330695e9f67d372274d16688403ae382d2aace1f;hpb=a74341308f19b7cd1691eddb3bd7be99fa8204a6;p=oota-llvm.git diff --git a/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp b/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp index 330695e9f67..8a2cf1ad46e 100644 --- a/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp +++ b/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp @@ -32,14 +32,19 @@ #include "llvm/Support/Debug.h" using namespace llvm; -#define DEBUG_TYPE "frame-info" +#define DEBUG_TYPE "wasm-frame-info" // TODO: Implement a red zone? /// Return true if the specified function should have a dedicated frame pointer /// register. bool WebAssemblyFrameLowering::hasFP(const MachineFunction &MF) const { - llvm_unreachable("TODO: implement hasFP"); + const MachineFrameInfo *MFI = MF.getFrameInfo(); + const auto *RegInfo = + MF.getSubtarget().getRegisterInfo(); + return MFI->hasCalls() || MFI->hasVarSizedObjects() || + MFI->isFrameAddressTaken() || MFI->hasStackMap() || + MFI->hasPatchPoint() || RegInfo->needsStackRealignment(MF); } /// Under normal circumstances, when a frame pointer is not required, we reserve @@ -60,15 +65,10 @@ void WebAssemblyFrameLowering::eliminateCallFramePseudoInstr( void WebAssemblyFrameLowering::emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const { - llvm_unreachable("TODO: implement emitPrologue"); + // FIXME: Implement WebAssemblyFrameLowering::emitPrologue. } void WebAssemblyFrameLowering::emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const { llvm_unreachable("TODO: implement emitEpilogue"); } - -void WebAssemblyFrameLowering::processFunctionBeforeCalleeSavedScan( - MachineFunction &MF, RegScavenger *RS) const { - llvm_unreachable("TODO: implement processFunctionBeforeCalleeSavedScan"); -}