summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@google.com>2016-02-23 21:25:17 +0000
committerDerek Schuff <dschuff@google.com>2016-02-23 21:25:17 +0000
commitb21570cc1d1d3a519512c25bebedca33d0a1e6e5 (patch)
tree62e8735c5ad6cb793812202eddf9b7452e5d882d /llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp
parent120f6301ed5cd3e0c54e912d4b303281753462d3 (diff)
downloadbcm5719-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.cpp10
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);
}
OpenPOWER on IntegriCloud