diff options
author | Derek Schuff <dschuff@google.com> | 2015-12-16 20:43:08 +0000 |
---|---|---|
committer | Derek Schuff <dschuff@google.com> | 2015-12-16 20:43:08 +0000 |
commit | 83717cc2976e644027065abb6ea375fa26dbfebe (patch) | |
tree | fdd847e3789b566a02eaf064d02c0501291d187e /llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp | |
parent | 45cd5a79b24ea75b4d746eae53d3eb8f84a63c2e (diff) | |
download | llvm-83717cc2976e644027065abb6ea375fa26dbfebe.zip llvm-83717cc2976e644027065abb6ea375fa26dbfebe.tar.gz llvm-83717cc2976e644027065abb6ea375fa26dbfebe.tar.bz2 |
Iterate over phys regs instead
llvm-svn: 255816
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index e853b76..084c4ed 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -91,7 +91,10 @@ private: //===----------------------------------------------------------------------===// MVT WebAssemblyAsmPrinter::getRegType(unsigned RegNo) const { - const TargetRegisterClass *TRC = MRI->getRegClass(RegNo); + const TargetRegisterClass *TRC = + TargetRegisterInfo::isVirtualRegister(RegNo) ? + MRI->getRegClass(RegNo) : + MRI->getTargetRegisterInfo()->getMinimalPhysRegClass(RegNo); for (MVT T : {MVT::i32, MVT::i64, MVT::f32, MVT::f64}) if (TRC->hasType(T)) return T; @@ -182,9 +185,11 @@ void WebAssemblyAsmPrinter::EmitFunctionBodyStart() { Local.addOperand(MCOperand::createImm(getRegType(VReg).SimpleTy)); AnyWARegs = true; } - if (MF->getFrameInfo()->getStackSize() > 0) { - // TODO: wasm64 - Local.addOperand(MCOperand::createImm(MVT::i32)); + auto &PhysRegs = MFI->getPhysRegs(); + for (unsigned PReg = 0; PReg < PhysRegs.size(); ++PReg) { + if (PhysRegs[PReg] == -1U) + continue; + Local.addOperand(MCOperand::createImm(getRegType(PReg).SimpleTy)); AnyWARegs = true; } if (AnyWARegs) |