[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