summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-05-01 23:46:16 +0000
committerChris Lattner <sabre@nondot.org>2006-05-01 23:46:16 +0000
commit4b177f089e61e5fbb504add9d4463241c7ee34c8 (patch)
tree2dc3cb8e2f027b52eed2029a585939c1467d81a1
parent5104e3b833bdc3cb4ae89d5077623761c261816a (diff)
downloadbcm5719-llvm-4b177f089e61e5fbb504add9d4463241c7ee34c8.tar.gz
bcm5719-llvm-4b177f089e61e5fbb504add9d4463241c7ee34c8.zip
Put instruction names into the first non TargetInstrInfo namespace found.
llvm-svn: 28043
-rw-r--r--llvm/utils/TableGen/InstrInfoEmitter.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/llvm/utils/TableGen/InstrInfoEmitter.cpp b/llvm/utils/TableGen/InstrInfoEmitter.cpp
index 35fbed37931..d39a51f5e90 100644
--- a/llvm/utils/TableGen/InstrInfoEmitter.cpp
+++ b/llvm/utils/TableGen/InstrInfoEmitter.cpp
@@ -28,23 +28,31 @@ void InstrInfoEmitter::runEnums(std::ostream &OS) {
// We must emit the PHI opcode first...
Record *InstrInfo = Target.getInstructionSet();
- std::string Namespace = Target.inst_begin()->second.Namespace;
-
- if (!Namespace.empty())
- OS << "namespace " << Namespace << " {\n";
- OS << " enum {\n";
+ std::string Namespace;
+ for (CodeGenTarget::inst_iterator II = Target.inst_begin(),
+ E = Target.inst_end(); II != E; ++II) {
+ if (II->second.Namespace != "TargetInstrInfo") {
+ Namespace = II->second.Namespace;
+ break;
+ }
+ }
+
+ if (Namespace.empty()) {
+ std::cerr << "No instructions defined!\n";
+ exit(1);
+ }
std::vector<const CodeGenInstruction*> NumberedInstructions;
Target.getInstructionsByEnumValue(NumberedInstructions);
+ OS << "namespace " << Namespace << " {\n";
+ OS << " enum {\n";
for (unsigned i = 0, e = NumberedInstructions.size(); i != e; ++i) {
OS << " " << NumberedInstructions[i]->TheDef->getName()
- << ", \t// " << i << "\n";
+ << "\t= " << i << ",\n";
}
- OS << " INSTRUCTION_LIST_END\n";
- OS << " };\n";
- if (!Namespace.empty())
- OS << "}\n";
+ OS << " INSTRUCTION_LIST_END = " << NumberedInstructions.size() << "\n";
+ OS << " };\n}\n";
OS << "} // End llvm namespace \n";
}
OpenPOWER on IntegriCloud