[llvm-commits] CVS: llvm/utils/TableGen/Record.cpp

Chris Lattner lattner at cs.uiuc.edu
Mon Dec 2 10:45:00 PST 2002


Changes in directory llvm/utils/TableGen:

Record.cpp updated: 1.1 -> 1.2

---
Log message:

* Move BitsInit::resolveReferences up with the rest of BitsInit code
* Initial support for field expressions



---
Diffs of the changes:

Index: llvm/utils/TableGen/Record.cpp
diff -u llvm/utils/TableGen/Record.cpp:1.1 llvm/utils/TableGen/Record.cpp:1.2
--- llvm/utils/TableGen/Record.cpp:1.1	Sun Dec  1 19:23:04 2002
+++ llvm/utils/TableGen/Record.cpp	Mon Dec  2 10:43:30 2002
@@ -206,6 +206,26 @@
   return false;
 }
 
+Init *BitsInit::resolveReferences(Record &R) {
+  bool Changed = false;
+  BitsInit *New = new BitsInit(getNumBits());
+
+  for (unsigned i = 0, e = Bits.size(); i != e; ++i) {
+    Init *B;
+    New->setBit(i, getBit(i));
+    do {
+      B = New->getBit(i);
+      New->setBit(i, B->resolveReferences(R));
+      Changed |= B != New->getBit(i);
+    } while (B != New->getBit(i));
+  }
+
+  if (Changed)
+    return New;
+  delete New;
+  return this;
+}
+
 Init *IntInit::convertInitializerBitRange(const std::vector<unsigned> &Bits) {
   BitsInit *BI = new BitsInit(Bits.size());
 
@@ -244,26 +264,12 @@
   return BI;
 }
 
-Init *BitsInit::resolveReferences(Record &R) {
-  bool Changed = false;
-  BitsInit *New = new BitsInit(getNumBits());
-
-  for (unsigned i = 0, e = Bits.size(); i != e; ++i) {
-    Init *B;
-    New->setBit(i, getBit(i));
-    do {
-      B = New->getBit(i);
-      New->setBit(i, B->resolveReferences(R));
-      Changed |= B != New->getBit(i);
-    } while (B != New->getBit(i));
-  }
-
-  if (Changed)
-    return New;
-  delete New;
-  return this;
+RecTy *VarInit::getFieldType(const std::string &FieldName) const {
+  if (RecordRecTy *RTy = dynamic_cast<RecordRecTy*>(Ty))
+    if (const RecordVal *RV = RTy->getRecord()->getValue(FieldName))
+      return RV->getType();
+  return 0;
 }
-
 
 
 Init *VarBitInit::resolveReferences(Record &R) {





More information about the llvm-commits mailing list