MIRParser: generic register operands with types
authorMatthias Braun <matze@braunis.de>
Tue, 11 Oct 2016 04:22:29 +0000 (04:22 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 11 Oct 2016 04:22:29 +0000 (04:22 +0000)
This should fix the fallout of r283848.

llvm-svn: 283850

llvm/lib/CodeGen/MIRParser/MIParser.cpp
llvm/lib/CodeGen/MachineRegisterInfo.cpp

index 98bc8a1..0f58e61 100644 (file)
@@ -990,7 +990,7 @@ bool MIParser::parseRegisterOperand(MachineOperand &Dest,
     // Virtual registers may have a size with GlobalISel.
     if (!TargetRegisterInfo::isVirtualRegister(Reg))
       return error("unexpected size on physical register");
-    if (MRI.getRegClassOrRegBank(Reg).is<const TargetRegisterClass *>())
+    if (RegInfo->Kind != VRegInfo::GENERIC)
       return error("unexpected size on non-generic virtual register");
 
     LLT Ty;
index 5b42cd0..96a5888 100644 (file)
@@ -124,7 +124,8 @@ LLT MachineRegisterInfo::getType(unsigned VReg) const {
 
 void MachineRegisterInfo::setType(unsigned VReg, LLT Ty) {
   // Check that VReg doesn't have a class.
-  assert(!getRegClassOrRegBank(VReg).is<const TargetRegisterClass *>() &&
+  assert(getRegClassOrRegBank(VReg).isNull() ||
+         !getRegClassOrRegBank(VReg).is<const TargetRegisterClass *>() &&
          "Can't set the size of a non-generic virtual register");
   getVRegToType()[VReg] = Ty;
 }