MIR Serialization: Serialize the virtual register operands.

Reviewers: Duncan P. N. Exon Smith

Differential Revision: http://reviews.llvm.org/D11005


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241959 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alex Lorenz
2015-07-10 22:51:20 +00:00
parent c3b47b30ab
commit 1cca87a981
8 changed files with 149 additions and 17 deletions

View File

@ -288,6 +288,17 @@ bool MIParser::parseRegister(unsigned &Reg) {
return error(Twine("unknown register name '") + Name + "'");
break;
}
case MIToken::VirtualRegister: {
unsigned ID;
if (getUnsigned(ID))
return true;
const auto RegInfo = PFS.VirtualRegisterSlots.find(ID);
if (RegInfo == PFS.VirtualRegisterSlots.end())
return error(Twine("use of undefined virtual register '%") + Twine(ID) +
"'");
Reg = RegInfo->second;
break;
}
// TODO: Parse other register kinds.
default:
llvm_unreachable("The current token should be a register");
@ -425,6 +436,7 @@ bool MIParser::parseMachineOperand(MachineOperand &Dest) {
case MIToken::kw_undef:
case MIToken::underscore:
case MIToken::NamedRegister:
case MIToken::VirtualRegister:
return parseRegisterOperand(Dest);
case MIToken::IntegerLiteral:
return parseImmediateOperand(Dest);