[llvm-commits] CVS: llvm/utils/TableGen/FileLexer.l FileParser.y Record.cpp Record.h
Chris Lattner
lattner at cs.uiuc.edu
Mon Aug 4 00:29:30 PDT 2003
Changes in directory llvm/utils/TableGen:
FileLexer.l updated: 1.7 -> 1.8
FileParser.y updated: 1.17 -> 1.18
Record.cpp updated: 1.22 -> 1.23
Record.h updated: 1.27 -> 1.28
---
Log message:
Add initial support for a new 'dag' type
---
Diffs of the changes:
Index: llvm/utils/TableGen/FileLexer.l
diff -u llvm/utils/TableGen/FileLexer.l:1.7 llvm/utils/TableGen/FileLexer.l:1.8
--- llvm/utils/TableGen/FileLexer.l:1.7 Sun Aug 3 13:12:59 2003
+++ llvm/utils/TableGen/FileLexer.l Sun Aug 3 23:50:57 2003
@@ -154,6 +154,7 @@
string { return STRING; }
list { return LIST; }
code { return CODE; }
+dag { return DAG; }
class { return CLASS; }
def { return DEF; }
Index: llvm/utils/TableGen/FileParser.y
diff -u llvm/utils/TableGen/FileParser.y:1.17 llvm/utils/TableGen/FileParser.y:1.18
--- llvm/utils/TableGen/FileParser.y:1.17 Sun Aug 3 13:17:22 2003
+++ llvm/utils/TableGen/FileParser.y Sun Aug 3 23:50:57 2003
@@ -168,7 +168,7 @@
std::vector<SubClassRefTy> *SubClassList;
};
-%token INT BIT STRING BITS LIST CODE CLASS DEF FIELD SET IN
+%token INT BIT STRING BITS LIST CODE DAG CLASS DEF FIELD SET IN
%token <IntVal> INTVAL
%token <StrVal> ID STRVAL CODEFRAGMENT
@@ -209,6 +209,8 @@
$$ = new ListRecTy($3);
} | CODE { // code type
$$ = new CodeRecTy();
+ } | DAG { // dag type
+ $$ = new DagRecTy();
} | ClassID { // Record Type
$$ = new RecordRecTy($1);
};
Index: llvm/utils/TableGen/Record.cpp
diff -u llvm/utils/TableGen/Record.cpp:1.22 llvm/utils/TableGen/Record.cpp:1.23
--- llvm/utils/TableGen/Record.cpp:1.22 Sun Aug 3 16:58:13 2003
+++ llvm/utils/TableGen/Record.cpp Sun Aug 3 23:50:57 2003
@@ -146,6 +146,13 @@
return 0;
}
+Init *DagRecTy::convertValue(TypedInit *TI) {
+ if (TI->getType()->typeIsConvertibleTo(this))
+ return TI;
+ return 0;
+}
+
+
void RecordRecTy::print(std::ostream &OS) const {
OS << Rec->getName();
}
Index: llvm/utils/TableGen/Record.h
diff -u llvm/utils/TableGen/Record.h:1.27 llvm/utils/TableGen/Record.h:1.28
--- llvm/utils/TableGen/Record.h:1.27 Sun Aug 3 16:58:13 2003
+++ llvm/utils/TableGen/Record.h Sun Aug 3 23:50:57 2003
@@ -21,6 +21,7 @@
class StringRecTy;
class ListRecTy;
class CodeRecTy;
+class DagRecTy;
class RecordRecTy;
// Init subclasses...
@@ -82,6 +83,7 @@
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; }
};
@@ -212,6 +214,21 @@
return RHS->baseClassOf(this);
}
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; }
};
More information about the llvm-commits
mailing list