diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-05-18 17:31:12 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-05-18 17:31:12 +0000 |
| commit | 4843178d6bd2083b88908ada581188c2b7aa226a (patch) | |
| tree | bffeedfb10177e905ee0d7459419f30d19b4983e | |
| parent | d5563f420a17f93858fbcc76a7fdfc4d47dbe16a (diff) | |
| download | bcm5719-llvm-4843178d6bd2083b88908ada581188c2b7aa226a.tar.gz bcm5719-llvm-4843178d6bd2083b88908ada581188c2b7aa226a.zip | |
Teach the machine code verifier to use getSubRegisterRegClass().
The old approach was wrong. It had an off-by-one error.
llvm-svn: 104034
| -rw-r--r-- | llvm/lib/CodeGen/MachineVerifier.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp index fdfe2cb3002..8baf01c9073 100644 --- a/llvm/lib/CodeGen/MachineVerifier.cpp +++ b/llvm/lib/CodeGen/MachineVerifier.cpp @@ -635,11 +635,14 @@ MachineVerifier::visitMachineOperand(const MachineOperand *MO, unsigned MONum) { // Virtual register. const TargetRegisterClass *RC = MRI->getRegClass(Reg); if (SubIdx) { - if (RC->subregclasses_begin()+SubIdx >= RC->subregclasses_end()) { + const TargetRegisterClass *SRC = RC->getSubRegisterRegClass(SubIdx); + if (!SRC) { report("Invalid subregister index for virtual register", MO, MONum); + *OS << "Register class " << RC->getName() + << " does not support subreg index " << SubIdx << "\n"; return; } - RC = *(RC->subregclasses_begin()+SubIdx); + RC = SRC; } if (const TargetRegisterClass *DRC = TOI.getRegClass(TRI)) { if (RC != DRC && !RC->hasSuperClass(DRC)) { |

