From: Evan Cheng Date: Thu, 11 Sep 2008 06:25:25 +0000 (+0000) Subject: Change getSubReg semantics. It now returns zero if the specified register doesn't... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=dd595c5998214c6ee07ed46f5db551b2abbfbbb3;p=oota-llvm.git Change getSubReg semantics. It now returns zero if the specified register doesn't have a subreg of the specified index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56099 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Target/TargetRegisterInfo.h b/include/llvm/Target/TargetRegisterInfo.h index 6b460547e41..8d9b7a43d11 100644 --- a/include/llvm/Target/TargetRegisterInfo.h +++ b/include/llvm/Target/TargetRegisterInfo.h @@ -457,7 +457,8 @@ public: virtual BitVector getReservedRegs(const MachineFunction &MF) const = 0; /// getSubReg - Returns the physical register number of sub-register "Index" - /// for physical register RegNo. + /// for physical register RegNo. Return zero if the sub-register does not + /// exist. virtual unsigned getSubReg(unsigned RegNo, unsigned Index) const = 0; //===--------------------------------------------------------------------===// diff --git a/utils/TableGen/RegisterInfoEmitter.cpp b/utils/TableGen/RegisterInfoEmitter.cpp index 94e30eea231..73f6f811634 100644 --- a/utils/TableGen/RegisterInfoEmitter.cpp +++ b/utils/TableGen/RegisterInfoEmitter.cpp @@ -655,12 +655,12 @@ void RegisterInfoEmitter::run(std::ostream &OS) { OS << "unsigned " << ClassName << "::getSubReg(unsigned RegNo, unsigned Index) const {\n" << " switch (RegNo) {\n" - << " default: abort(); break;\n"; + << " default:\n return 0;\n"; for (std::map > >::iterator I = SubRegVectors.begin(), E = SubRegVectors.end(); I != E; ++I) { OS << " case " << getQualifiedName(I->first) << ":\n"; OS << " switch (Index) {\n"; - OS << " default: abort(); break;\n"; + OS << " default:\n return 0;\n"; for (unsigned i = 0, e = I->second.size(); i != e; ++i) OS << " case " << (I->second)[i].first << ": return " << getQualifiedName((I->second)[i].second) << ";\n";