diff options
Diffstat (limited to 'utils/TableGen/Record.h')
-rw-r--r-- | utils/TableGen/Record.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index f933d4ff52..4573af0ee7 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -21,6 +21,7 @@ class IntRecTy; class StringRecTy; class ListRecTy; class CodeRecTy; +class DagRecTy; class RecordRecTy; // Init subclasses... @@ -82,6 +83,7 @@ public: // These methods should only be called by subclasses of RecTy. virtual bool baseClassOf(const StringRecTy *RHS) const { return false; } virtual bool baseClassOf(const ListRecTy *RHS) const { return false; } virtual bool baseClassOf(const CodeRecTy *RHS) const { return false; } + virtual bool baseClassOf(const DagRecTy *RHS) const { return false; } virtual bool baseClassOf(const RecordRecTy *RHS) const { return false; } }; @@ -214,6 +216,21 @@ struct CodeRecTy : public RecTy { virtual bool baseClassOf(const CodeRecTy *RHS) const { return true; } }; +/// DagRecTy - 'dag' - Represent a dag fragment +/// +struct DagRecTy : public RecTy { + Init *convertValue(UnsetInit *UI) { return (Init*)UI; } + //Init *convertValue( DagInit *CI) { return (Init*)CI; } + Init *convertValue(TypedInit *TI); + + void print(std::ostream &OS) const { OS << "dag"; } + + bool typeIsConvertibleTo(const RecTy *RHS) const { + return RHS->baseClassOf(this); + } + virtual bool baseClassOf(const DagRecTy *RHS) const { return true; } +}; + /// RecordRecTy - '<classname>' - Represent an instance of a class, such as: /// (R32 X = EAX). |