diff options
| -rw-r--r-- | llvm/utils/TableGen/Record.cpp | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/llvm/utils/TableGen/Record.cpp b/llvm/utils/TableGen/Record.cpp index f0147d328b8..5a69edb615d 100644 --- a/llvm/utils/TableGen/Record.cpp +++ b/llvm/utils/TableGen/Record.cpp @@ -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;  } | 

