[PATCH] D75718: [WebAssembly] Fixed FrameBaseLocal not being set.
Wouter van Oortmerssen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 9 17:50:08 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa7a37517751f: [WebAssembly] Fixed FrameBaseLocal not being set. (authored by aardappel).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75718/new/
https://reviews.llvm.org/D75718
Files:
llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
Index: llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
===================================================================
--- llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
+++ llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
@@ -69,6 +69,18 @@
return new WebAssemblyExplicitLocals();
}
+static void checkFrameBase(WebAssemblyFunctionInfo &MFI, unsigned Local,
+ unsigned Reg) {
+ // Mark a local for the frame base vreg.
+ if (MFI.isFrameBaseVirtual() && Reg == MFI.getFrameBaseVreg()) {
+ LLVM_DEBUG({
+ dbgs() << "Allocating local " << Local << "for VReg "
+ << Register::virtReg2Index(Reg) << '\n';
+ });
+ MFI.setFrameBaseLocal(Local);
+ }
+}
+
/// Return a local id number for the given register, assigning it a new one
/// if it doesn't yet have one.
static unsigned getLocalId(DenseMap<unsigned, unsigned> &Reg2Local,
@@ -76,14 +88,7 @@
unsigned Reg) {
auto P = Reg2Local.insert(std::make_pair(Reg, CurLocal));
if (P.second) {
- // Mark the local allocated for the frame base vreg.
- if (MFI.isFrameBaseVirtual() && Reg == MFI.getFrameBaseVreg()) {
- LLVM_DEBUG({
- dbgs() << "Allocating local " << CurLocal << "for VReg "
- << Register::virtReg2Index(Reg) << '\n';
- });
- MFI.setFrameBaseLocal(CurLocal);
- }
+ checkFrameBase(MFI, CurLocal, Reg);
++CurLocal;
}
return P.first->second;
@@ -227,7 +232,9 @@
break;
Register Reg = MI.getOperand(0).getReg();
assert(!MFI.isVRegStackified(Reg));
- Reg2Local[Reg] = static_cast<unsigned>(MI.getOperand(1).getImm());
+ auto Local = static_cast<unsigned>(MI.getOperand(1).getImm());
+ Reg2Local[Reg] = Local;
+ checkFrameBase(MFI, Local, Reg);
MI.eraseFromParent();
Changed = true;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D75718.249256.patch
Type: text/x-patch
Size: 1865 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200310/57e911bf/attachment.bin>
More information about the llvm-commits
mailing list