diff options
author | Chris Lattner <sabre@nondot.org> | 2004-10-03 19:34:31 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-10-03 19:34:31 +0000 |
commit | 560a79f1ea4d1a04bd1da7fd0ca57cfe80620c5a (patch) | |
tree | 2f07910a0fb3c2713b862a5b097fd68e9fab5a3b /utils/TableGen/CodeGenTarget.cpp | |
parent | 0fa206615ae25d3a9120a1d7e61667c88cba3ae1 (diff) |
Add initial support for variants. This just parses the new format, no
functionality is added
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16636 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenTarget.cpp')
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index f7225f081d..4c882ad555 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -16,8 +16,14 @@ #include "CodeGenTarget.h" #include "Record.h" +#include "llvm/ADT/StringExtras.h" +#include "llvm/Support/CommandLine.h" using namespace llvm; +static cl::opt<unsigned> +AsmWriterNum("asmwriternum", cl::init(0), + cl::desc("Make -gen-asm-writer emit assembly writer #N")); + /// getValueType - Return the MCV::ValueType that the specified TableGen record /// corresponds to. MVT::ValueType llvm::getValueType(Record *Rec) { @@ -100,7 +106,12 @@ Record *CodeGenTarget::getInstructionSet() const { /// getAsmWriter - Return the AssemblyWriter definition for this target. /// Record *CodeGenTarget::getAsmWriter() const { - return TargetRec->getValueAsDef("AssemblyWriter"); + ListInit *LI = TargetRec->getValueAsListInit("AssemblyWriters"); + if (AsmWriterNum >= LI->getSize()) + throw "Target does not have an AsmWriter #" + utostr(AsmWriterNum) + "!"; + DefInit *DI = dynamic_cast<DefInit*>(LI->getElement(AsmWriterNum)); + if (!DI) throw std::string("AssemblyWriter list should be a list of defs!"); + return DI->getDef(); } void CodeGenTarget::ReadRegisters() const { |