summaryrefslogtreecommitdiffstats
path: root/llvm/support/tools
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-08-07 05:39:09 +0000
committerChris Lattner <sabre@nondot.org>2003-08-07 05:39:09 +0000
commit377f096678f61c2e893c1f84302573a885935b35 (patch)
treea9aebfce1f3152ff6ed1951e9b116cd08ed96fdf /llvm/support/tools
parent9f993091eade7f4015b5710a33bd495f9fb43a8d (diff)
downloadbcm5719-llvm-377f096678f61c2e893c1f84302573a885935b35.tar.gz
bcm5719-llvm-377f096678f61c2e893c1f84302573a885935b35.zip
Start using the CodeGeneratorWrappers
llvm-svn: 7666
Diffstat (limited to 'llvm/support/tools')
-rw-r--r--llvm/support/tools/TableGen/InstrInfoEmitter.cpp12
-rw-r--r--llvm/support/tools/TableGen/RegisterInfoEmitter.cpp20
2 files changed, 16 insertions, 16 deletions
diff --git a/llvm/support/tools/TableGen/InstrInfoEmitter.cpp b/llvm/support/tools/TableGen/InstrInfoEmitter.cpp
index ad501dc4261..c794cd04418 100644
--- a/llvm/support/tools/TableGen/InstrInfoEmitter.cpp
+++ b/llvm/support/tools/TableGen/InstrInfoEmitter.cpp
@@ -6,6 +6,7 @@
//===----------------------------------------------------------------------===//
#include "InstrInfoEmitter.h"
+#include "CodeGenWrappers.h"
#include "Record.h"
// runEnums - Print out enum values for all of the instructions.
@@ -23,9 +24,10 @@ void InstrInfoEmitter::runEnums(std::ostream &OS) {
OS << "namespace " << Namespace << " {\n";
OS << " enum {\n";
+ CodeGenTarget Target;
+
// We must emit the PHI opcode first...
- Record *Target = getTarget(Records);
- Record *InstrInfo = Target->getValueAsDef("InstructionSet");
+ Record *InstrInfo = Target.getInstructionSet();
Record *PHI = InstrInfo->getValueAsDef("PHIInst");
OS << " " << PHI->getName() << ", \t// 0 (fixed for all targets)\n";
@@ -55,9 +57,9 @@ void InstrInfoEmitter::printDefList(ListInit *LI, const std::string &Name,
// run - Emit the main instruction description records for the target...
void InstrInfoEmitter::run(std::ostream &OS) {
EmitSourceFileHeader("Target Instruction Descriptors", OS);
- Record *Target = getTarget(Records);
- const std::string &TargetName = Target->getName();
- Record *InstrInfo = Target->getValueAsDef("InstructionSet");
+ CodeGenTarget Target;
+ const std::string &TargetName = Target.getName();
+ Record *InstrInfo = Target.getInstructionSet();
Record *PHI = InstrInfo->getValueAsDef("PHIInst");
std::vector<Record*> Instructions =
diff --git a/llvm/support/tools/TableGen/RegisterInfoEmitter.cpp b/llvm/support/tools/TableGen/RegisterInfoEmitter.cpp
index 396f3409498..f1f8a86bd4f 100644
--- a/llvm/support/tools/TableGen/RegisterInfoEmitter.cpp
+++ b/llvm/support/tools/TableGen/RegisterInfoEmitter.cpp
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "RegisterInfoEmitter.h"
+#include "CodeGenWrappers.h"
#include "Record.h"
#include "Support/StringExtras.h"
#include <set>
@@ -36,7 +37,7 @@ void RegisterInfoEmitter::runEnums(std::ostream &OS) {
void RegisterInfoEmitter::runHeader(std::ostream &OS) {
EmitSourceFileHeader("Register Information Header Fragment", OS);
- const std::string &TargetName = getTarget(Records)->getName();
+ const std::string &TargetName = CodeGenTarget().getName();
std::string ClassName = TargetName + "GenRegisterInfo";
OS << "#include \"llvm/Target/MRegisterInfo.h\"\n\n";
@@ -193,20 +194,20 @@ void RegisterInfoEmitter::run(std::ostream &OS) {
OS << " };\n"; // End of register descriptors...
OS << "}\n\n"; // End of anonymous namespace...
- Record *Target = getTarget(Records);
+ CodeGenTarget Target;
- OS << "namespace " << Target->getName() << " { // Register classes\n";
+ OS << "namespace " << Target.getName() << " { // Register classes\n";
for (unsigned i = 0, e = RegisterClasses.size(); i != e; ++i) {
const std::string &Name = RegisterClasses[i]->getName();
if (Name.size() < 9 || Name[9] != '.') // Ignore anonymous classes
OS << " TargetRegisterClass *" << Name << "RegisterClass = &"
<< Name << "Instance;\n";
}
- OS << "} // end of namespace " << Target->getName() << "\n\n";
+ OS << "} // end of namespace " << Target.getName() << "\n\n";
- std::string ClassName = Target->getName() + "GenRegisterInfo";
+ std::string ClassName = Target.getName() + "GenRegisterInfo";
// Emit the constructor of the class...
OS << ClassName << "::" << ClassName
@@ -219,11 +220,8 @@ void RegisterInfoEmitter::run(std::ostream &OS) {
OS << "const unsigned* " << ClassName << "::getCalleeSaveRegs() const {\n"
<< " static const unsigned CalleeSaveRegs[] = {\n ";
- ListInit *LI = Target->getValueAsListInit("CalleeSavedRegisters");
- for (unsigned i = 0, e = LI->getSize(); i != e; ++i)
- if (DefInit *DI = dynamic_cast<DefInit*>(LI->getElement(i)))
- OS << getQualifiedName(DI->getDef()) << ", ";
- else
- throw "Expected register definition in CalleeSavedRegisters list!";
+ const std::vector<Record*> &CSR = Target.getCalleeSavedRegisters();
+ for (unsigned i = 0, e = CSR.size(); i != e; ++i)
+ OS << getQualifiedName(CSR[i]) << ", ";
OS << " 0\n };\n return CalleeSaveRegs;\n}\n\n";
}
OpenPOWER on IntegriCloud