Changes in directory llvm/utils/TableGen:
RegisterInfoEmitter.cpp updated: 1.39 -> 1.40 --- Log message: Add dwarf register numbering to register data. --- Diffs of the changes: (+18 -1) RegisterInfoEmitter.cpp | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletion(-) Index: llvm/utils/TableGen/RegisterInfoEmitter.cpp diff -u llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.39 llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.40 --- llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.39 Tue Dec 27 04:56:22 2005 +++ llvm/utils/TableGen/RegisterInfoEmitter.cpp Fri Mar 24 15:15:58 2006 @@ -60,7 +60,8 @@ << " " << ClassName << "(int CallFrameSetupOpcode = -1, int CallFrameDestroyOpcode = -1);\n" << " const unsigned* getCalleeSaveRegs() const;\n" - << "const TargetRegisterClass* const *getCalleeSaveRegClasses() const;\n" + << " const TargetRegisterClass* const *getCalleeSaveRegClasses() const;\n" + << " int getDwarfRegNum(unsigned RegNum) const;\n" << "};\n\n"; const std::vector<CodeGenRegisterClass> &RegisterClasses = @@ -277,6 +278,22 @@ OS << "&" << getQualifiedName(RC->TheDef) << "RegClass, "; } OS << " 0\n };\n return CalleeSaveRegClasses;\n}\n\n"; + + // Emit information about the dwarf register numbers. + OS << "int " << ClassName << "::getDwarfRegNum(unsigned RegNum) const {\n"; + OS << " static const int DwarfRegNums[] = { -1, // NoRegister"; + for (unsigned i = 0, e = Registers.size(); i != e; ++i) { + if (!(i % 16)) OS << "\n "; + const CodeGenRegister &Reg = Registers[i]; + int DwarfRegNum = Reg.TheDef->getValueAsInt("DwarfNumber"); + OS << DwarfRegNum; + if ((i + 1) != e) OS << ", "; + } + OS << "\n };\n"; + OS << " assert(RegNum < (sizeof(DwarfRegNums)/sizeof(int)) &&\n"; + OS << " \"RegNum exceeds number of registers\");\n"; + OS << " return DwarfRegNums[RegNum];\n"; + OS << "}\n\n"; OS << "} // End llvm namespace \n"; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits