summaryrefslogtreecommitdiff
path: root/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h')
-rw-r--r--lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h28
1 files changed, 17 insertions, 11 deletions
diff --git a/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h b/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h
index 1fcbb7791d4e..a60b10fc5309 100644
--- a/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h
+++ b/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This file declares WebAssembly-specific per-machine-function
+/// This file declares WebAssembly-specific per-machine-function
/// information.
///
//===----------------------------------------------------------------------===//
@@ -60,6 +60,8 @@ class WebAssemblyFunctionInfo final : public MachineFunctionInfo {
void addResult(MVT VT) { Results.push_back(VT); }
const std::vector<MVT> &getResults() const { return Results; }
+ void clearParamsAndResults() { Params.clear(); Results.clear(); }
+
void setNumLocals(size_t NumLocals) { Locals.resize(NumLocals, MVT::i32); }
void setLocal(size_t i, MVT VT) { Locals[i] = VT; }
void addLocal(MVT VT) { Locals.push_back(VT); }
@@ -81,25 +83,29 @@ class WebAssemblyFunctionInfo final : public MachineFunctionInfo {
void stackifyVReg(unsigned VReg) {
assert(MF.getRegInfo().getUniqueVRegDef(VReg));
- if (TargetRegisterInfo::virtReg2Index(VReg) >= VRegStackified.size())
- VRegStackified.resize(TargetRegisterInfo::virtReg2Index(VReg) + 1);
- VRegStackified.set(TargetRegisterInfo::virtReg2Index(VReg));
+ auto I = TargetRegisterInfo::virtReg2Index(VReg);
+ if (I >= VRegStackified.size())
+ VRegStackified.resize(I + 1);
+ VRegStackified.set(I);
}
bool isVRegStackified(unsigned VReg) const {
- if (TargetRegisterInfo::virtReg2Index(VReg) >= VRegStackified.size())
+ auto I = TargetRegisterInfo::virtReg2Index(VReg);
+ if (I >= VRegStackified.size())
return false;
- return VRegStackified.test(TargetRegisterInfo::virtReg2Index(VReg));
+ return VRegStackified.test(I);
}
void initWARegs();
void setWAReg(unsigned VReg, unsigned WAReg) {
assert(WAReg != UnusedReg);
- assert(TargetRegisterInfo::virtReg2Index(VReg) < WARegs.size());
- WARegs[TargetRegisterInfo::virtReg2Index(VReg)] = WAReg;
+ auto I = TargetRegisterInfo::virtReg2Index(VReg);
+ assert(I < WARegs.size());
+ WARegs[I] = WAReg;
}
- unsigned getWAReg(unsigned Reg) const {
- assert(TargetRegisterInfo::virtReg2Index(Reg) < WARegs.size());
- return WARegs[TargetRegisterInfo::virtReg2Index(Reg)];
+ unsigned getWAReg(unsigned VReg) const {
+ auto I = TargetRegisterInfo::virtReg2Index(VReg);
+ assert(I < WARegs.size());
+ return WARegs[I];
}
// For a given stackified WAReg, return the id number to print with push/pop.