diff options
| author | 2019-01-27 16:42:12 +0000 | |
|---|---|---|
| committer | 2019-01-27 16:42:12 +0000 | |
| commit | b773203fb58f3ef282fb69c832d8710cab5bc82d (patch) | |
| tree | e75913f147570fbd75169647b144df85b88a038c /gnu/llvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h | |
| parent | tweak errno in previous (diff) | |
| download | wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.tar.xz wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.zip | |
Import LLVM 7.0.1 release including clang, lld and lldb.
Diffstat (limited to 'gnu/llvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h')
| -rw-r--r-- | gnu/llvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/gnu/llvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h b/gnu/llvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h index 1fcbb7791d4..a60b10fc530 100644 --- a/gnu/llvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h +++ b/gnu/llvm/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. |
