In case Rec is a definition and not a class, do the proper comparison!
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Thu, 17 Jun 2010 23:00:16 +0000 (23:00 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Thu, 17 Jun 2010 23:00:16 +0000 (23:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106246 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/Record.cpp

index f0147d328b8ea32cb45e7e62927797ce81ca2a15..5a69edb615de207ac133c5025910f50b97bf2cd8 100644 (file)
@@ -270,7 +270,15 @@ Init *RecordRecTy::convertValue(TypedInit *TI) {
 }
 
 bool RecordRecTy::baseClassOf(const RecordRecTy *RHS) const {
-  return Rec == RHS->getRecord() || RHS->getRecord()->isSubClassOf(Rec);
+  if (Rec == RHS->getRecord() || RHS->getRecord()->isSubClassOf(Rec))
+    return true;
+
+  const std::vector<Record*> &SC = Rec->getSuperClasses();
+  for (unsigned i = 0, e = SC.size(); i != e; ++i)
+    if (RHS->getRecord()->isSubClassOf(SC[i]))
+      return true;
+
+  return false;
 }