Drop a RecordKeeper reference that wasn't necessary.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 4 Jun 2011 07:49:55 +0000 (07:49 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 4 Jun 2011 07:49:55 +0000 (07:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132636 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/SetTheory.cpp
utils/TableGen/SetTheory.h
utils/TableGen/TableGen.cpp

index e168b549bc3ea3bc5eeb9e0ae445da38e0e7c82e..ade182557678da15d336a33f99b21a340098a4cb 100644 (file)
@@ -140,10 +140,6 @@ struct DecimateOp : public SetIntBinOp {
 
 // (sequence "Format", From, To) Generate a sequence of records by name.
 struct SequenceOp : public SetTheory::Operator {
-  RecordKeeper &Records;
-
-  SequenceOp(RecordKeeper&R) : Records(R) {}
-
   void apply(SetTheory &ST, DagInit *Expr, RecSet &Elts) {
     if (Expr->arg_size() != 3)
       throw "Bad args to (sequence \"Format\", From, To): " +
@@ -164,6 +160,9 @@ struct SequenceOp : public SetTheory::Operator {
     else
       throw "From must be an integer: " + Expr->getAsString();
 
+    RecordKeeper &Records =
+      dynamic_cast<DefInit&>(*Expr->getOperator()).getDef()->getRecords();
+
     int Step = From <= To ? 1 : -1;
     for (To += Step; From != To; From += Step) {
       std::string Name;
@@ -193,7 +192,7 @@ struct FieldExpander : public SetTheory::Expander {
 };
 } // end anonymous namespace
 
-SetTheory::SetTheory(RecordKeeper *Records) {
+SetTheory::SetTheory() {
   addOperator("add", new AddOp);
   addOperator("sub", new SubOp);
   addOperator("and", new AndOp);
@@ -202,8 +201,7 @@ SetTheory::SetTheory(RecordKeeper *Records) {
   addOperator("rotl", new RotOp(false));
   addOperator("rotr", new RotOp(true));
   addOperator("decimate", new DecimateOp);
-  if (Records)
-    addOperator("sequence", new SequenceOp(*Records));
+  addOperator("sequence", new SequenceOp);
 }
 
 void SetTheory::addOperator(StringRef Name, Operator *Op) {
index 2202f22396ad0bffceabd2145cebbb5d7ce6296a..e37a76ee68c000ff45faaceadf1519c349f95787 100644 (file)
@@ -96,8 +96,7 @@ private:
 
 public:
   /// Create a SetTheory instance with only the standard operators.
-  /// A 'sequence' operator will only be added if a RecordKeeper is given.
-  SetTheory(RecordKeeper *Records = 0);
+  SetTheory();
 
   /// addExpander - Add an expander for Records with the named super class.
   void addExpander(StringRef ClassName, Expander*);
index 925b134ca4f147e8020077d5eda1f62949229e7b..4e4da366ae071e0de8a94aa75f1477ff71a78da6 100644 (file)
@@ -380,7 +380,7 @@ int main(int argc, char **argv) {
     }
     case PrintSets:
     {
-      SetTheory Sets(&Records);
+      SetTheory Sets;
       Sets.addFieldExpander("Set", "Elements");
       std::vector<Record*> Recs = Records.getAllDerivedDefinitions("Set");
       for (unsigned i = 0, e = Recs.size(); i != e; ++i) {