diff options
author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2016-07-19 19:48:36 +0000 |
---|---|---|
committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2016-07-19 19:48:36 +0000 |
commit | 5a59b24bdd3b1836884d5792a527b84c6a74b148 (patch) | |
tree | 342a18933410bb50ea1a2f86d15f23666666d7a6 /llvm/lib/CodeGen/MachineRegisterInfo.cpp | |
parent | 0313a08a1a8634442c9eaa4dca7c619beb7ed3d3 (diff) | |
download | bcm5719-llvm-5a59b24bdd3b1836884d5792a527b84c6a74b148.tar.gz bcm5719-llvm-5a59b24bdd3b1836884d5792a527b84c6a74b148.zip |
[GlobalISel] Mark newly-created gvregs as having a bank.
Also verify that we never try to set the size of a vreg associated
to a register class.
Report an error when we encounter that in MIR. Fix a testcase that
hit that error and had a size for no reason.
llvm-svn: 276012
Diffstat (limited to 'llvm/lib/CodeGen/MachineRegisterInfo.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineRegisterInfo.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineRegisterInfo.cpp b/llvm/lib/CodeGen/MachineRegisterInfo.cpp index 613598dbe21..96786552e9b 100644 --- a/llvm/lib/CodeGen/MachineRegisterInfo.cpp +++ b/llvm/lib/CodeGen/MachineRegisterInfo.cpp @@ -114,6 +114,9 @@ MachineRegisterInfo::getSize(unsigned VReg) const { } void MachineRegisterInfo::setSize(unsigned VReg, unsigned Size) { + // Check that VReg doesn't have a class. + assert(!getRegClassOrRegBank(VReg).is<const TargetRegisterClass *>() && + "Can't set the size of a non-generic virtual register"); getVRegToSize()[VReg] = Size; } @@ -124,8 +127,8 @@ MachineRegisterInfo::createGenericVirtualRegister(unsigned Size) { // New virtual register number. unsigned Reg = TargetRegisterInfo::index2VirtReg(getNumVirtRegs()); VRegInfo.grow(Reg); - // FIXME: Should we use a dummy register class? - VRegInfo[Reg].first = static_cast<TargetRegisterClass *>(nullptr); + // FIXME: Should we use a dummy register bank? + VRegInfo[Reg].first = static_cast<RegisterBank *>(nullptr); getVRegToSize()[Reg] = Size; RegAllocHints.grow(Reg); if (TheDelegate) |