[WebAssembly] Print an extra local decl when the user stack pointer is used
[oota-llvm.git] / lib / Target / WebAssembly / WebAssemblyAsmPrinter.cpp
index 079c864c7bc1c15e9a7bc5c8d238fad2829ea0af..e853b76d0dd43183a65e63e0fec732d3d62a9b79 100644 (file)
@@ -26,6 +26,7 @@
 #include "llvm/CodeGen/Analysis.h"
 #include "llvm/CodeGen/AsmPrinter.h"
 #include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
 #include "llvm/CodeGen/MachineInstr.h"
 #include "llvm/IR/DataLayout.h"
 #include "llvm/MC/MCContext.h"
@@ -181,6 +182,11 @@ void WebAssemblyAsmPrinter::EmitFunctionBodyStart() {
     Local.addOperand(MCOperand::createImm(getRegType(VReg).SimpleTy));
     AnyWARegs = true;
   }
+  if (MF->getFrameInfo()->getStackSize() > 0) {
+    // TODO: wasm64
+    Local.addOperand(MCOperand::createImm(MVT::i32));
+    AnyWARegs = true;
+  }
   if (AnyWARegs)
     EmitToStreamer(*OutStreamer, Local);