diff options
author | Derek Schuff <dschuff@google.com> | 2016-02-23 21:25:17 +0000 |
---|---|---|
committer | Derek Schuff <dschuff@google.com> | 2016-02-23 21:25:17 +0000 |
commit | b21570cc1d1d3a519512c25bebedca33d0a1e6e5 (patch) | |
tree | 62e8735c5ad6cb793812202eddf9b7452e5d882d /llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp | |
parent | 120f6301ed5cd3e0c54e912d4b303281753462d3 (diff) | |
download | bcm5719-llvm-b21570cc1d1d3a519512c25bebedca33d0a1e6e5.tar.gz bcm5719-llvm-b21570cc1d1d3a519512c25bebedca33d0a1e6e5.zip |
[WebAssembly] Stackify code emitted by eliminateFrameIndex
llvm-svn: 261685
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp index 607fd6e79c2..bebc68eb6a1 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp @@ -84,14 +84,18 @@ void WebAssemblyRegisterInfo::eliminateFrameIndex( unsigned FIRegOperand = WebAssembly::SP32; if (FrameOffset) { - FIRegOperand = MRI.createVirtualRegister(&WebAssembly::I32RegClass); + auto *WFI = MF.getInfo<WebAssemblyFunctionInfo>(); + unsigned OffsetOp = MRI.createVirtualRegister(&WebAssembly::I32RegClass); BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(WebAssembly::CONST_I32), - FIRegOperand) + OffsetOp) .addImm(FrameOffset); + WFI->stackifyVReg(OffsetOp); + FIRegOperand = MRI.createVirtualRegister(&WebAssembly::I32RegClass); BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(WebAssembly::ADD_I32), FIRegOperand) .addReg(WebAssembly::SP32) - .addReg(FIRegOperand); + .addReg(OffsetOp); + WFI->stackifyVReg(FIRegOperand); } MI.getOperand(FIOperandNum).ChangeToRegister(FIRegOperand, /*IsDef=*/false); } |