From 99ba1f7b8deaf2a296c98600dbf593754cbd43a2 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 20 Nov 2007 22:25:16 +0000 Subject: [PATCH] Add the ability to convert a tblgen type to a string. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44257 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/Record.cpp | 12 ++++++++++++ utils/TableGen/Record.h | 12 +++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index 4cba8891c39..d7eb98a72ec 100644 --- a/utils/TableGen/Record.cpp +++ b/utils/TableGen/Record.cpp @@ -14,6 +14,7 @@ #include "Record.h" #include "llvm/Support/DataTypes.h" #include "llvm/Support/Streams.h" +#include "llvm/ADT/StringExtras.h" #include using namespace llvm; @@ -46,6 +47,10 @@ Init *BitRecTy::convertValue(TypedInit *VI) { return 0; } +std::string BitsRecTy::getAsString() const { + return "bits<" + utostr(Size) + ">"; +} + Init *BitsRecTy::convertValue(UnsetInit *UI) { BitsInit *Ret = new BitsInit(Size); @@ -146,6 +151,10 @@ Init *StringRecTy::convertValue(TypedInit *TI) { return 0; } +std::string ListRecTy::getAsString() const { + return "list<" + Ty->getAsString() + ">"; +} + void ListRecTy::print(std::ostream &OS) const { OS << "list<" << *Ty << ">"; } @@ -196,6 +205,9 @@ Init *DagRecTy::convertValue(BinOpInit *BO) { return 0; } +std::string RecordRecTy::getAsString() const { + return Rec->getName(); +} void RecordRecTy::print(std::ostream &OS) const { OS << Rec->getName(); diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index 5e88e50d3e4..c6005c52216 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -62,6 +62,7 @@ class RecordVal; struct RecTy { virtual ~RecTy() {} + virtual std::string getAsString() const = 0; virtual void print(std::ostream &OS) const = 0; void dump() const; @@ -127,6 +128,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} + std::string getAsString() const { return "bit"; } void print(std::ostream &OS) const { OS << "bit"; } bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -169,7 +171,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} - + std::string getAsString() const; void print(std::ostream &OS) const { OS << "bits<" << Size << ">"; } bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -208,7 +210,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} - + std::string getAsString() const { return "int"; } void print(std::ostream &OS) const { OS << "int"; } bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -245,6 +247,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} + std::string getAsString() const { return "string"; } void print(std::ostream &OS) const { OS << "string"; } bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -288,6 +291,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} + std::string getAsString() const; void print(std::ostream &OS) const; bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -325,7 +329,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} - + std::string getAsString() const { return "code"; } void print(std::ostream &OS) const { OS << "code"; } bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -360,6 +364,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} + std::string getAsString() const { return "dag"; } void print(std::ostream &OS) const { OS << "dag"; } bool typeIsConvertibleTo(const RecTy *RHS) const { @@ -402,6 +407,7 @@ public: virtual Init *convertValue( VarInit *VI) { return RecTy::convertValue(VI);} virtual Init *convertValue( FieldInit *FI) { return RecTy::convertValue(FI);} + std::string getAsString() const; void print(std::ostream &OS) const; bool typeIsConvertibleTo(const RecTy *RHS) const {