reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

tools/clang/include/clang/AST/DeclTemplate.h
 1640 class ClassTemplateSpecializationDecl

Declarations

gen/tools/clang/include/clang/AST/DeclNodes.inc
  257 CXXRECORD(CXXRecord, RecordDecl)
tools/clang/include/clang/AST/APValue.h
   27   class CXXRecordDecl;
tools/clang/include/clang/AST/ASTConsumer.h
   19   class CXXRecordDecl;
tools/clang/include/clang/AST/ASTContext.h
   95 class CXXRecordDecl;
tools/clang/include/clang/AST/ASTMutationListener.h
   21   class CXXRecordDecl;
tools/clang/include/clang/AST/BaseSubobject.h
   25 class CXXRecordDecl;
tools/clang/include/clang/AST/CanonicalType.h
   33 class CXXRecordDecl;
tools/clang/include/clang/AST/ComparisonCategories.h
   32 class CXXRecordDecl;
tools/clang/include/clang/AST/DependentDiagnostic.h
   32 class CXXRecordDecl;
tools/clang/include/clang/AST/ExternalASTSource.h
   44 class CXXRecordDecl;
tools/clang/include/clang/AST/NestedNameSpecifier.h
   29 class CXXRecordDecl;
tools/clang/include/clang/AST/RecordLayout.h
   29 class CXXRecordDecl;
tools/clang/include/clang/AST/Type.h
  103 class CXXRecordDecl;
tools/clang/include/clang/AST/TypeLoc.h
   37 class CXXRecordDecl;
tools/clang/include/clang/AST/VTTBuilder.h
   30 class CXXRecordDecl;
tools/clang/include/clang/AST/VTableBuilder.h
   26   class CXXRecordDecl;
tools/clang/include/clang/Analysis/CFG.h
   48 class CXXRecordDecl;
tools/clang/include/clang/CodeGen/CodeGenABITypes.h
   40 class CXXRecordDecl;
tools/clang/include/clang/Sema/DeclSpec.h
   40   class CXXRecordDecl;
tools/clang/include/clang/Sema/ExternalSemaSource.h
   30 class CXXRecordDecl;
tools/clang/include/clang/Sema/MultiplexExternalSemaSource.h
   23   class CXXRecordDecl;
tools/clang/include/clang/Sema/ScopeInfo.h
   46 class CXXRecordDecl;
tools/clang/include/clang/Serialization/ASTWriter.h
   66 class CXXRecordDecl;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
   46 class CXXRecordDecl;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
   39 class CXXRecordDecl;
tools/clang/lib/CodeGen/CGCXXABI.h
   32 class CXXRecordDecl;
tools/clang/lib/CodeGen/CGVTables.h
   25   class CXXRecordDecl;
tools/lldb/include/lldb/Core/ClangForward.h
   38 class CXXRecordDecl;
tools/lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.h
   20 class CXXRecordDecl;

References

gen/tools/clang/include/clang/Sema/AttrParsedAttrImpl.inc
  784   if (!D || (!isa<FunctionDecl>(D) && !isa<CXXRecordDecl>(D))) {
  872   if (!D || (!isa<CXXRecordDecl>(D))) {
  885   if (!D || (!isa<CXXRecordDecl>(D))) {
  898   if (!D || (!isa<CXXRecordDecl>(D))) {
  924   if (!D || (!isa<FunctionDecl>(D) && !isa<VarDecl>(D) && !isa<CXXRecordDecl>(D) && !isa<ObjCInterfaceDecl>(D))) {
  954   if (!D || (!isa<FunctionDecl>(D) && !isa<VarDecl>(D) && !isa<CXXRecordDecl>(D) && !isa<ObjCInterfaceDecl>(D))) {
 1015   if (!D || (!isa<CXXRecordDecl>(D))) {
 1055   if (!D || (!isa<VarDecl>(D) && !isa<FunctionDecl>(D) && !isa<CXXRecordDecl>(D))) {
 1275   if (!D || (!isa<VarDecl>(D) && !isa<FunctionDecl>(D) && !isa<CXXRecordDecl>(D))) {
 1303   if (!D || (!isa<CXXRecordDecl>(D))) {
 1433   if (!D || (!isa<CXXRecordDecl>(D))) {
 2931   if (!D || (!isa<CXXRecordDecl>(D))) {
 3044   if (!D || (!isa<CXXRecordDecl>(D))) {
 3121   if (!D || (!isa<VarDecl>(D) && !isa<FunctionDecl>(D) && !isa<CXXRecordDecl>(D))) {
 3552     return isa<RecordDecl>(D) || isa<CXXRecordDecl>(D);
include/llvm/ADT/DenseMapInfo.h
   39   static inline T* getEmptyKey() {
   41     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   45   static inline T* getTombstoneKey() {
   47     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   51   static unsigned getHashValue(const T *PtrVal) {
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/ADT/STLExtras.h
   75       typename std::add_pointer<typename std::add_const<T>::type>::type;
include/llvm/ADT/SmallSet.h
  249 class SmallSet<PointeeType*, N> : public SmallPtrSet<PointeeType*, N> {};
include/llvm/Support/Casting.h
   34   using SimpleType = From; // The real type this represents...
   37   static SimpleType &getSimplifiedValue(From &Val) { return Val; }
   41   using NonConstSimpleType = typename simplify_type<From>::SimpleType;
   47   static RetType getSimplifiedValue(const From& Val) {
   57   static inline bool doit(const From &Val) {
   58     return To::classof(&Val);
   66   static inline bool doit(const From &) { return true; }
   76   static inline bool doit(const From &Val) {
   77     return isa_impl<To, From>::doit(Val);
   77     return isa_impl<To, From>::doit(Val);
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
  106     return isa_impl<To, From>::doit(*Val);
  122     return isa_impl_wrap<To, SimpleFrom,
  132     return isa_impl_cl<To,FromTy>::doit(Val);
  141 template <class X, class Y> LLVM_NODISCARD inline bool isa(const Y &Val) {
  142   return isa_impl_wrap<X, const Y,
  142   return isa_impl_wrap<X, const Y,
  143                        typename simplify_type<const Y>::SimpleType>::doit(Val);
  165   using ret_type = To &;       // Normal case, return Ty&
  168   using ret_type = const To &; // Normal case, return Ty&
  172   using ret_type = To *;       // Pointer arg case, return Ty*
  176   using ret_type = const To *; // Constant pointer arg case, return const Ty*
  198   using ret_type = typename cast_retty<To, SimpleFrom>::ret_type;
  204   using ret_type = typename cast_retty_impl<To,FromTy>::ret_type;
  210       To, From, typename simplify_type<From>::SimpleType>::ret_type;
  227   static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  228     typename cast_retty<To, FromTy>::ret_type Res2
  256 inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  258   return cast_convert_val<X, Y,
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  265   return cast_convert_val<X, Y*,
  266                           typename simplify_type<Y*>::SimpleType>::doit(Val);
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  306 cast_or_null(Y *Val) {
  309   return cast<X>(Val);
  337 LLVM_NODISCARD inline typename cast_retty<X, Y>::ret_type dyn_cast(Y &Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  367 dyn_cast_or_null(Y *Val) {
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
   91   typedef PointerLikeTypeTraits<T *> NonConst;
   93   static inline const void *getAsVoidPointer(const T *P) {
   96   static inline const T *getFromVoidPointer(const void *P) {
include/llvm/Support/type_traits.h
   55 struct add_const_past_pointer { using type = const T; };
tools/clang/include/clang/AST/APValue.h
  327           ArrayRef<const CXXRecordDecl*> Path) : Kind(None) {
  532   ArrayRef<const CXXRecordDecl*> getMemberPointerPath() const;
  643                          ArrayRef<const CXXRecordDecl*> Path);
tools/clang/include/clang/AST/ASTConsumer.h
  107   virtual void AssignInheritanceModel(CXXRecordDecl *RD) {}
  118   virtual void HandleVTable(CXXRecordDecl *RD) {}
tools/clang/include/clang/AST/ASTContext.h
  263   llvm::DenseMap<const CXXRecordDecl*, LazyDeclPtr> KeyFunctions;
 1426   QualType getInjectedClassNameType(CXXRecordDecl *Decl, QualType TST) const;
 2228   const CXXMethodDecl *getCurrentKeyFunction(const CXXRecordDecl *RD);
 2249   CharUnits getOffsetOfBaseWithVBPtr(const CXXRecordDecl *RD) const;
 2259   bool isNearlyEmpty(const CXXRecordDecl *RD) const;
 2794   getCopyConstructorForExceptionObject(CXXRecordDecl *RD);
 2796   void addCopyConstructorForExceptionObject(CXXRecordDecl *RD,
tools/clang/include/clang/AST/ASTLambda.h
   28   const CXXRecordDecl *LambdaClass = MD->getParent();
   40   const CXXRecordDecl *LambdaClass = MD->getParent();
tools/clang/include/clang/AST/ASTMutationListener.h
   57   virtual void AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) {}
tools/clang/include/clang/AST/ASTTypeTraits.h
   65     return ASTNodeKind(KindToKindId<T>::Id);
   65     return ASTNodeKind(KindToKindId<T>::Id);
   65     return ASTNodeKind(KindToKindId<T>::Id);
  234   static DynTypedNode create(const T &Node) {
  235     return BaseConverter<T>::create(Node);
  251   const T *get() const {
  252     return BaseConverter<T>::get(NodeKind, Storage.buffer);
  259   const T &getUnchecked() const {
  260     return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
  394     static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
  395       if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
  399     static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
  401       return *cast<T>(static_cast<const BaseT *>(
  469     : public DynCastPtrConverter<T, Decl> {};
tools/clang/include/clang/AST/BaseSubobject.h
   32   const CXXRecordDecl *Base;
   39   BaseSubobject(const CXXRecordDecl *Base, CharUnits BaseOffset)
   43   const CXXRecordDecl *getBase() const { return Base; }
   60       DenseMapInfo<const clang::CXXRecordDecl *>::getEmptyKey(),
   66       DenseMapInfo<const clang::CXXRecordDecl *>::getTombstoneKey(),
   71     using PairTy = std::pair<const clang::CXXRecordDecl *, clang::CharUnits>;
tools/clang/include/clang/AST/CXXInheritance.h
   51   const CXXRecordDecl *Class;
  122   CXXRecordDecl *Origin = nullptr;
  143   llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedDependentRecords;
  175   bool lookupInBases(ASTContext &Context, const CXXRecordDecl *Record,
  176                      CXXRecordDecl::BaseMatchesCallback BaseMatches,
  228   CXXRecordDecl *getOrigin() const { return Origin; }
  229   void setOrigin(CXXRecordDecl *Rec) { Origin = Rec; }
  252   const CXXRecordDecl *InVirtualSubobject = nullptr;
  257                       const CXXRecordDecl *InVirtualSubobject)
  373   : public llvm::SmallSet<const CXXRecordDecl*, 32> {};
tools/clang/include/clang/AST/ComparisonCategories.h
   72   ComparisonCategoryInfo(const ASTContext &Ctx, CXXRecordDecl *RD,
  111   CXXRecordDecl *Record = nullptr;
tools/clang/include/clang/AST/DeclBase.h
 2474   static const ToTy *doit(const DeclContext *Val) {
 2478   static ToTy *doit(DeclContext *Val) {
 2491     return To::classofKind(Val.getDeclKind());
 2514   static const ToTy *doit(const ::clang::DeclContext *Val) {
 2515     return ::clang::cast_convert_decl_context<ToTy>::doit(Val);
 2521   static ToTy *doit(::clang::DeclContext *Val) {
 2522     return ::clang::cast_convert_decl_context<ToTy>::doit(Val);
 2536   static ::clang::DeclContext *doit(const FromTy *Val) {
 2537     return FromTy::castToDeclContext(Val);
tools/clang/include/clang/AST/DeclCXX.h
  327     CXXRecordDecl *Definition;
  335     DefinitionData(CXXRecordDecl *D);
  412     LambdaDefinitionData(CXXRecordDecl *D, TypeSourceInfo *Info, bool Dependent,
  461   void addedClassSubobject(CXXRecordDecl *Base);
  480                                                const CXXRecordDecl *X);
  485                 IdentifierInfo *Id, CXXRecordDecl *PrevDecl);
  494   CXXRecordDecl *getCanonicalDecl() override {
  495     return cast<CXXRecordDecl>(RecordDecl::getCanonicalDecl());
  498   const CXXRecordDecl *getCanonicalDecl() const {
  502   CXXRecordDecl *getPreviousDecl() {
  503     return cast_or_null<CXXRecordDecl>(
  507   const CXXRecordDecl *getPreviousDecl() const {
  511   CXXRecordDecl *getMostRecentDecl() {
  512     return cast<CXXRecordDecl>(
  516   const CXXRecordDecl *getMostRecentDecl() const {
  520   CXXRecordDecl *getMostRecentNonInjectedDecl() {
  521     CXXRecordDecl *Recent =
  531   const CXXRecordDecl *getMostRecentNonInjectedDecl() const {
  535   CXXRecordDecl *getDefinition() const {
  544   static CXXRecordDecl *Create(const ASTContext &C, TagKind TK, DeclContext *DC,
  547                                CXXRecordDecl *PrevDecl = nullptr,
  549   static CXXRecordDecl *CreateLambda(const ASTContext &C, DeclContext *DC,
  553   static CXXRecordDecl *CreateDeserialized(const ASTContext &C, unsigned ID);
 1388   CXXRecordDecl *getInstantiatedFromMemberClass() const;
 1397   void setInstantiationOfMemberClass(CXXRecordDecl *RD,
 1425   const CXXRecordDecl *getTemplateInstantiationPattern() const;
 1427   CXXRecordDecl *getTemplateInstantiationPattern() {
 1442     if (const auto *RD = dyn_cast<CXXRecordDecl>(getDeclContext()))
 1442     if (const auto *RD = dyn_cast<CXXRecordDecl>(getDeclContext()))
 1467   bool isDerivedFrom(const CXXRecordDecl *Base) const;
 1485   bool isDerivedFrom(const CXXRecordDecl *Base, CXXBasePaths &Paths) const;
 1500   bool isVirtuallyDerivedFrom(const CXXRecordDecl *Base) const;
 1504   bool isProvablyNotDerivedFrom(const CXXRecordDecl *Base) const;
 1512       llvm::function_ref<bool(const CXXRecordDecl *BaseDefinition)>;
 1576                             CXXBasePath &Path, const CXXRecordDecl *BaseRecord);
 1589                                    const CXXRecordDecl *BaseRecord);
 1909   CXXMethodDecl(Kind DK, ASTContext &C, CXXRecordDecl *RD,
 1921   static CXXMethodDecl *Create(ASTContext &C, CXXRecordDecl *RD,
 2028   const CXXRecordDecl *getParent() const {
 2029     return cast<CXXRecordDecl>(FunctionDecl::getParent());
 2034   CXXRecordDecl *getParent() {
 2036              cast<CXXRecordDecl>(FunctionDecl::getParent()));
 2053                               const CXXRecordDecl *Decl);
 2056                                     const CXXRecordDecl *Decl);
 2094   getCorrespondingMethodInClass(const CXXRecordDecl *RD,
 2098   getCorrespondingMethodInClass(const CXXRecordDecl *RD,
 2106   CXXMethodDecl *getCorrespondingMethodDeclaredInClass(const CXXRecordDecl *RD,
 2109   getCorrespondingMethodDeclaredInClass(const CXXRecordDecl *RD,
 2377   CXXConstructorDecl(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2430   Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2638   CXXDestructorDecl(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2650   static CXXDestructorDecl *Create(ASTContext &C, CXXRecordDecl *RD,
 2691   CXXConversionDecl(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2709   Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 3225   const CXXRecordDecl *getParent() const {
 3226     return cast<CXXRecordDecl>(getDeclContext());
 3228   CXXRecordDecl *getParent() {
 3229     return cast<CXXRecordDecl>(getDeclContext());
 3248   CXXRecordDecl *getNominatedBaseClass() const;
 3252   CXXRecordDecl *getConstructedBaseClass() const {
 3253     return cast<CXXRecordDecl>((ConstructedBaseClassShadowDecl
tools/clang/include/clang/AST/DeclFriend.h
  239 inline CXXRecordDecl::friend_iterator CXXRecordDecl::friend_begin() const {
  243 inline CXXRecordDecl::friend_iterator CXXRecordDecl::friend_end() const {
  247 inline CXXRecordDecl::friend_range CXXRecordDecl::friends() const {
tools/clang/include/clang/AST/DeclTemplate.h
 1641   : public CXXRecordDecl, public llvm::FoldingSetNode {
 1753            isa<CXXRecordDecl>(getLexicalDeclContext());
 2117   CXXRecordDecl *getTemplatedDecl() const {
 2597            isa<CXXRecordDecl>(getLexicalDeclContext());
tools/clang/include/clang/AST/DependentDiagnostic.h
   47                                      CXXRecordDecl *NamingClass,
  119     CXXRecordDecl *NamingClass;
tools/clang/include/clang/AST/Expr.h
   72     const CXXRecordDecl *DerivedClass;
   87                       const CXXRecordDecl *DerivedClass)
  876   bool isTemporaryObject(ASTContext &Ctx, const CXXRecordDecl *TempTy) const;
  890   const CXXRecordDecl *getBestDynamicClassType() const;
tools/clang/include/clang/AST/ExprCXX.h
  208   CXXRecordDecl *getRecordDecl() const;
 1877   Create(const ASTContext &C, CXXRecordDecl *Class, SourceRange IntroducerRange,
 1995   CXXRecordDecl *getLambdaClass() const;
 2929   inline CXXRecordDecl *getNamingClass();
 2930   const CXXRecordDecl *getNamingClass() const {
 3049   CXXRecordDecl *NamingClass;
 3065   UnresolvedLookupExpr(const ASTContext &Context, CXXRecordDecl *NamingClass,
 3086   Create(const ASTContext &Context, CXXRecordDecl *NamingClass,
 3092   Create(const ASTContext &Context, CXXRecordDecl *NamingClass,
 3113   CXXRecordDecl *getNamingClass() { return NamingClass; }
 3114   const CXXRecordDecl *getNamingClass() const { return NamingClass; }
 3873   CXXRecordDecl *getNamingClass();
 3874   const CXXRecordDecl *getNamingClass() const {
 3948 CXXRecordDecl *OverloadExpr::getNamingClass() {
tools/clang/include/clang/AST/ExternalASTSource.h
  303       llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  304       llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets);
tools/clang/include/clang/AST/JSONNodeDumper.h
  159   llvm::json::Object createCXXRecordDefinitionData(const CXXRecordDecl *RD);
  237   void VisitCXXRecordDecl(const CXXRecordDecl *RD);
tools/clang/include/clang/AST/Mangle.h
  158   virtual void mangleCXXVTable(const CXXRecordDecl *RD, raw_ostream &) = 0;
  159   virtual void mangleCXXVTT(const CXXRecordDecl *RD, raw_ostream &) = 0;
  160   virtual void mangleCXXCtorVTable(const CXXRecordDecl *RD, int64_t Offset,
  161                                    const CXXRecordDecl *Type,
  173   virtual void mangleLambdaSig(const CXXRecordDecl *Lambda, raw_ostream &) = 0;
  191   virtual void mangleCXXVFTable(const CXXRecordDecl *Derived,
  192                                 ArrayRef<const CXXRecordDecl *> BasePath,
  198   virtual void mangleCXXVBTable(const CXXRecordDecl *Derived,
  199                                 ArrayRef<const CXXRecordDecl *> BasePath,
  210   virtual void mangleCXXVirtualDisplacementMap(const CXXRecordDecl *SrcRD,
  211                                                const CXXRecordDecl *DstRD,
  227       const CXXRecordDecl *Derived, uint32_t NVOffset, int32_t VBPtrOffset,
  230   virtual void mangleCXXRTTIBaseClassArray(const CXXRecordDecl *Derived,
  233   mangleCXXRTTIClassHierarchyDescriptor(const CXXRecordDecl *Derived,
  237   mangleCXXRTTICompleteObjectLocator(const CXXRecordDecl *Derived,
  238                                      ArrayRef<const CXXRecordDecl *> BasePath,
tools/clang/include/clang/AST/NestedNameSpecifier.h
  158                                              CXXRecordDecl *RD);
  191   CXXRecordDecl *getAsRecordDecl() const;
  459   void MakeSuper(ASTContext &Context, CXXRecordDecl *RD,
tools/clang/include/clang/AST/ODRHash.h
   56   void AddCXXRecordDecl(const CXXRecordDecl *Record);
tools/clang/include/clang/AST/RecordLayout.h
   59   using VBaseOffsetsMapTy = llvm::DenseMap<const CXXRecordDecl *, VBaseInfo>;
  122     llvm::PointerIntPair<const CXXRecordDecl *, 1, bool> PrimaryBase;
  125     const CXXRecordDecl *BaseSharingVBPtr;
  128     using BaseOffsetsMapTy = llvm::DenseMap<const CXXRecordDecl *, CharUnits>;
  159                   const CXXRecordDecl *PrimaryBase,
  161                   const CXXRecordDecl *BaseSharingVBPtr,
  217   const CXXRecordDecl *getPrimaryBase() const {
  232   CharUnits getBaseClassOffset(const CXXRecordDecl *Base) const {
  240   CharUnits getVBaseClassOffset(const CXXRecordDecl *VBase) const {
  310   const CXXRecordDecl *getBaseSharingVBPtr() const {
tools/clang/include/clang/AST/RecursiveASTVisitor.h
  523   bool TraverseCXXRecordHelper(CXXRecordDecl *D);
 1378   if (const CXXRecordDecl* Cls = dyn_cast<CXXRecordDecl>(Child))
 1378   if (const CXXRecordDecl* Cls = dyn_cast<CXXRecordDecl>(Child))
 1662       if (cast<CXXRecordDecl>(RD)->isInjectedClassName())
 1851 bool RecursiveASTVisitor<Derived>::TraverseCXXRecordHelper(CXXRecordDecl *D) {
 1866 DEF_TRAVERSE_DECL(CXXRecordDecl, { TRY_TO(TraverseCXXRecordHelper(D)); })
tools/clang/include/clang/AST/TextNodeDumper.h
  320   void VisitCXXRecordDecl(const CXXRecordDecl *D);
tools/clang/include/clang/AST/Type.h
 2197   CXXRecordDecl *getAsCXXRecordDecl() const;
 2212   const CXXRecordDecl *getPointeeCXXRecordDecl() const;
 2839   CXXRecordDecl *getMostRecentCXXRecordDecl() const;
 5061   CXXRecordDecl *Decl;
 5074   InjectedClassNameType(CXXRecordDecl *D, QualType TST)
 5096   CXXRecordDecl *getDecl() const;
tools/clang/include/clang/AST/TypeLoc.h
  682   CXXRecordDecl *getDecl() const {
tools/clang/include/clang/AST/VTTBuilder.h
   33   llvm::PointerIntPair<const CXXRecordDecl *, 1, bool> BaseAndIsVirtual;
   38   VTTVTable(const CXXRecordDecl *Base, CharUnits BaseOffset, bool BaseIsVirtual)
   44   const CXXRecordDecl *getBase() const {
   75   const CXXRecordDecl *MostDerivedClass;
   90   using VisitedVirtualBasesSetTy = llvm::SmallPtrSet<const CXXRecordDecl *, 4>;
  106                         const CXXRecordDecl *VTableClass);
  119                                       const CXXRecordDecl *VTableClass,
  129   void LayoutVirtualVTTs(const CXXRecordDecl *RD,
  137   VTTBuilder(ASTContext &Ctx, const CXXRecordDecl *MostDerivedClass,
tools/clang/include/clang/AST/VTableBuilder.h
   66   static VTableComponent MakeRTTI(const CXXRecordDecl *RD) {
  118   const CXXRecordDecl *getRTTIDecl() const {
  324   virtual void computeVTableRelatedInformation(const CXXRecordDecl *RD) = 0;
  355   typedef llvm::DenseMap<const CXXRecordDecl *,
  360   typedef std::pair<const CXXRecordDecl *,
  361                     const CXXRecordDecl *> ClassPairTy;
  371   void computeVTableRelatedInformation(const CXXRecordDecl *RD) override;
  377   const VTableLayout &getVTableLayout(const CXXRecordDecl *RD) {
  385       const CXXRecordDecl *MostDerivedClass, CharUnits MostDerivedClassOffset,
  386       bool MostDerivedClassIsVirtual, const CXXRecordDecl *LayoutClass);
  399   CharUnits getVirtualBaseOffsetOffset(const CXXRecordDecl *RD,
  400                                        const CXXRecordDecl *VBase);
  411   typedef SmallVector<const CXXRecordDecl *, 1> BasePath;
  413   VPtrInfo(const CXXRecordDecl *RD)
  419   const CXXRecordDecl *ObjectWithVPtr;
  423   const CXXRecordDecl *IntroducingObject;
  437   const CXXRecordDecl *NextBaseToMangle;
  454   const CXXRecordDecl *getVBaseWithVPtr() const {
  467   llvm::DenseMap<const CXXRecordDecl *, unsigned> VBTableIndices;
  480   const CXXRecordDecl *VBase;
  493   MethodVFTableLocation(uint64_t VBTableIndex, const CXXRecordDecl *VBase,
  518   typedef llvm::DenseMap<const CXXRecordDecl *, std::unique_ptr<VPtrInfoVector>>
  522   typedef std::pair<const CXXRecordDecl *, CharUnits> VFTableIdTy;
  527   llvm::DenseMap<const CXXRecordDecl *, std::unique_ptr<VirtualBaseInfo>>
  530   void enumerateVFPtrs(const CXXRecordDecl *ForClass, VPtrInfoVector &Result);
  532   void computeVTableRelatedInformation(const CXXRecordDecl *RD) override;
  534   void dumpMethodLocations(const CXXRecordDecl *RD,
  539   computeVBTableRelatedInformation(const CXXRecordDecl *RD);
  541   void computeVTablePaths(bool ForVBTables, const CXXRecordDecl *RD,
  550   const VPtrInfoVector &getVFPtrOffsets(const CXXRecordDecl *RD);
  552   const VTableLayout &getVFTableLayout(const CXXRecordDecl *RD,
  569   unsigned getVBTableIndex(const CXXRecordDecl *Derived,
  570                            const CXXRecordDecl *VBase);
  572   const VPtrInfoVector &enumerateVBTables(const CXXRecordDecl *RD);
tools/clang/include/clang/ASTMatchers/ASTMatchFinder.h
  266 const NodeT *
  269     if (const NodeT *Node = N.getNodeAs<NodeT>(BoundTo))
  269     if (const NodeT *Node = N.getNodeAs<NodeT>(BoundTo))
tools/clang/include/clang/ASTMatchers/ASTMatchers.h
  110   const T *getNodeAs(StringRef ID) const {
  111     return MyBoundNodes.getNodeAs<T>(ID);
  389 extern const internal::VariadicDynCastAllOfMatcher<Decl, CXXRecordDecl>
 2640   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2640   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2659   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2659   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2660     return Matcher<CXXRecordDecl>(M).matches(*RD, Finder, Builder);
 2674   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2674   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2675     return Matcher<CXXRecordDecl>(M).matches(*RD, Finder, Builder);
 2692   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2692   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2693     return Matcher<CXXRecordDecl>(M).matches(*RD, Finder, Builder);
 2725   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2725   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2743   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2743   if (const auto *RD = dyn_cast<CXXRecordDecl>(&Node))
 2744     return Matcher<CXXRecordDecl>(M).matches(*RD, Finder, Builder);
 4791   const CXXRecordDecl *Parent = Node.getParent();
tools/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
  160   const T *getNodeAs(StringRef ID) const {
  165     return It->second.get<T>();
  302   virtual bool matches(const T &Node,
  309     return matches(DynNode.getUnchecked<T>(), Finder, Builder);
  345   DynTypedMatcher(MatcherInterface<T> *Implementation)
  346       : SupportedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()),
  436     return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  445   template <typename T> Matcher<T> convertTo() const {
  447     return unconditionalConvertTo<T>();
  479 class WrapperMatcherInterface : public MatcherInterface<T> {
  499   explicit Matcher(MatcherInterface<T> *Implementation)
  507           typename std::enable_if<std::is_base_of<From, T>::value &&
  508                                !std::is_same<From, T>::value>::type * = nullptr)
  520             std::is_same<T, QualType>::value &&
  529     static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
  534   bool matches(const T &Node,
  581     return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  596 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
  596 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
  979   virtual bool classIsDerivedFrom(const CXXRecordDecl *Declaration,
  994   bool matchesChildOf(const T &Node, const DynTypedMatcher &Matcher,
  997     static_assert(std::is_base_of<Decl, T>::value ||
  998                   std::is_base_of<Stmt, T>::value ||
  999                   std::is_base_of<NestedNameSpecifier, T>::value ||
 1000                   std::is_base_of<NestedNameSpecifierLoc, T>::value ||
 1001                   std::is_base_of<TypeLoc, T>::value ||
 1002                   std::is_base_of<QualType, T>::value,
 1009   bool matchesDescendantOf(const T &Node,
 1013     static_assert(std::is_base_of<Decl, T>::value ||
 1014                   std::is_base_of<Stmt, T>::value ||
 1015                   std::is_base_of<NestedNameSpecifier, T>::value ||
 1016                   std::is_base_of<NestedNameSpecifierLoc, T>::value ||
 1017                   std::is_base_of<TypeLoc, T>::value ||
 1018                   std::is_base_of<QualType, T>::value,
 1026   bool matchesAncestorOf(const T &Node,
 1030     static_assert(std::is_base_of<Decl, T>::value ||
 1031                       std::is_base_of<NestedNameSpecifierLoc, T>::value ||
 1032                       std::is_base_of<Stmt, T>::value ||
 1033                       std::is_base_of<TypeLoc, T>::value,
 1067   using head = T1;
 1073   using tail = TypeList<Ts...>;
 1084       std::is_base_of<typename AnyTypeList::head, T>::value ||
 1085       TypeListContainsSuperOf<typename AnyTypeList::tail, T>::value;
 1146     template <typename To> operator Matcher<To>() const {
 1184   operator Matcher<T>() const {
 1185     static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
 1202   operator Matcher<T>() const {
 1203     static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
 1243   operator Matcher<T>() const {
 1245                ast_type_traits::ASTNodeKind::getFromNodeKind<T>())
 1246         .template unconditionalConvertTo<T>();
 1255 class BindableMatcher : public Matcher<T> {
 1257   explicit BindableMatcher(const Matcher<T> &M) : Matcher<T>(M) {}
 1258   explicit BindableMatcher(MatcherInterface<T> *Implementation)
 1265   Matcher<T> bind(StringRef ID) const {
 1285 class HasMatcher : public WrapperMatcherInterface<T> {
 1290   bool matches(const T &Node, ASTMatchFinder *Finder,
 1304 class ForEachMatcher : public WrapperMatcherInterface<T> {
 1312   bool matches(const T& Node, ASTMatchFinder* Finder,
 1335   template <typename T> operator Matcher<T>() const {
 1337                Op, ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
 1338                getMatchers<T>(std::index_sequence_for<Ps...>()))
 1339         .template unconditionalConvertTo<T>();
 1370 inline Matcher<T> DynTypedMatcher::unconditionalConvertTo() const {
 1376 BindableMatcher<T> makeAllOfComposite(
 1377     ArrayRef<const Matcher<T> *> InnerMatchers) {
 1388   using PI = llvm::pointee_iterator<const Matcher<T> *const *>;
 1395           ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
 1397           .template unconditionalConvertTo<T>());
 1408     ArrayRef<const Matcher<InnerT> *> InnerMatchers) {
 1418 class HasDescendantMatcher : public WrapperMatcherInterface<T> {
 1426   bool matches(const T &Node, ASTMatchFinder *Finder,
 1438 class HasParentMatcher : public WrapperMatcherInterface<T> {
 1446   bool matches(const T &Node, ASTMatchFinder *Finder,
 1458 class HasAncestorMatcher : public WrapperMatcherInterface<T> {
 1466   bool matches(const T &Node, ASTMatchFinder *Finder,
 1557     : public VariadicFunction<BindableMatcher<SourceT>, Matcher<TargetT>,
 1558                               makeDynCastAllOfComposite<SourceT, TargetT>> {
tools/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
  199   ast_matchers::internal::Matcher<T> getTypedMatcher() const {
  202         ->template convertTo<T>();
  227       : MatcherOps(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()) {}
  228   typedef ast_matchers::internal::Matcher<T> MatcherT;
  232     return DynTypedMatcher(Matcher.convertTo<T>());
tools/clang/include/clang/Analysis/CFG.h
  416   CFGDeleteDtor(const CXXRecordDecl *RD, const CXXDeleteExpr *DE)
  419   const CXXRecordDecl *getCXXRecordDecl() const {
 1163   void appendDeleteDtor(CXXRecordDecl *RD, CXXDeleteExpr *DE, BumpVectorContext &C) {
tools/clang/include/clang/CodeGen/CodeGenABITypes.h
   64                                            const CXXRecordDecl *RD,
tools/clang/include/clang/Frontend/LayoutOverrideSource.h
   53        llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
   54        llvm::DenseMap<const CXXRecordDecl *,
tools/clang/include/clang/Frontend/MultiplexConsumer.h
   68   void AssignInheritanceModel(CXXRecordDecl *RD) override;
   69   void HandleVTable(CXXRecordDecl *RD) override;
tools/clang/include/clang/Sema/DeclSpec.h
  154   void MakeSuper(ASTContext &Context, CXXRecordDecl *RD,
tools/clang/include/clang/Sema/DelayedDiagnostic.h
   62                  CXXRecordDecl *NamingClass,
   72                  CXXRecordDecl *BaseClass,
   73                  CXXRecordDecl *DerivedClass,
   86   CXXRecordDecl *getNamingClass() const { return NamingClass; }
   89   CXXRecordDecl *getBaseClass() const {
   90     assert(!IsMember); return cast<CXXRecordDecl>(Target);
   92   CXXRecordDecl *getDerivedClass() const { return NamingClass; }
  122   CXXRecordDecl *NamingClass;
tools/clang/include/clang/Sema/ExternalSemaSource.h
   44   CXXRecordDecl *Record;
tools/clang/include/clang/Sema/Lookup.h
  403   CXXRecordDecl *getNamingClass() const {
  408   void setNamingClass(CXXRecordDecl *Record) {
  728   CXXRecordDecl *NamingClass = nullptr;
tools/clang/include/clang/Sema/MultiplexExternalSemaSource.h
  187                  llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  188                  llvm::DenseMap<const CXXRecordDecl *,
tools/clang/include/clang/Sema/ScopeInfo.h
  795   CXXRecordDecl *Lambda = nullptr;
tools/clang/include/clang/Sema/Sema.h
  645   typedef llvm::SmallPtrSet<const CXXRecordDecl*, 8> RecordDeclSetTy;
 1232   typedef llvm::PointerIntPair<CXXRecordDecl *, 3, CXXSpecialMember>
 2171   bool AddOverriddenMethods(CXXRecordDecl *DC, CXXMethodDecl *MD);
 2549   void DiagnoseNontrivial(const CXXRecordDecl *Record, CXXSpecialMember CSM);
 3075   typedef llvm::SmallSetVector<CXXRecordDecl *, 16> AssociatedClassSet;
 3105                           CXXRecordDecl *ActingContext, QualType ObjectType,
 3115                                   CXXRecordDecl *ActingContext,
 3135       CXXRecordDecl *ActingContext = nullptr, QualType ObjectType = QualType(),
 3140       CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
 3145       CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
 3150                              CXXRecordDecl *ActingContext,
 3471   SpecialMemberOverloadResult LookupSpecialMember(CXXRecordDecl *D,
 3554   bool LookupInSuper(LookupResult &R, CXXRecordDecl *Class);
 3563   DeclContextLookupResult LookupConstructors(CXXRecordDecl *Class);
 3564   CXXConstructorDecl *LookupDefaultConstructor(CXXRecordDecl *Class);
 3565   CXXConstructorDecl *LookupCopyingConstructor(CXXRecordDecl *Class,
 3567   CXXMethodDecl *LookupCopyingAssignment(CXXRecordDecl *Class, unsigned Quals,
 3569   CXXConstructorDecl *LookupMovingConstructor(CXXRecordDecl *Class,
 3571   CXXMethodDecl *LookupMovingAssignment(CXXRecordDecl *Class, unsigned Quals,
 3573   CXXDestructorDecl *LookupDestructor(CXXRecordDecl *Class);
 3739       CXXRecordDecl *RD, SourceRange Range, bool BestCase,
 5004   CXXRecordDecl *getStdBadAlloc() const;
 5013   ValueDecl *tryLookupCtorInitMemberDecl(CXXRecordDecl *ClassDecl,
 5310                                                      CXXRecordDecl *ClassDecl);
 5323   CXXDestructorDecl *DeclareImplicitDestructor(CXXRecordDecl *ClassDecl);
 5346   CXXConstructorDecl *DeclareImplicitCopyConstructor(CXXRecordDecl *ClassDecl);
 5360   CXXConstructorDecl *DeclareImplicitMoveConstructor(CXXRecordDecl *ClassDecl);
 5373   CXXMethodDecl *DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl);
 5386   CXXMethodDecl *DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl);
 5394   void ForceDeclarationOfImplicitMembers(CXXRecordDecl *Class);
 5670   bool FindDeallocationFunction(SourceLocation StartLoc, CXXRecordDecl *RD,
 5678                                                       CXXRecordDecl *RD);
 5785   CXXRecordDecl *getCurrentInstantiationOf(NestedNameSpecifier *NNS);
 5986   CXXRecordDecl *createLambdaClosureType(SourceRange IntroducerRange,
 5992   CXXMethodDecl *startLambdaDefinition(CXXRecordDecl *Class,
 6001       CXXRecordDecl *Class, CXXMethodDecl *Method,
 6218   CXXRecordDecl *getCurrentClass(Scope *S, const CXXScopeSpec *SS);
 6277                                      CXXRecordDecl *ClassDecl,
 6282                                            CXXRecordDecl *ClassDecl);
 6297                                               CXXRecordDecl *Record);
 6302   typedef std::pair<CXXRecordDecl*, SourceLocation> VTableUse;
 6312   llvm::DenseMap<CXXRecordDecl *, bool> VTablesUsed;
 6319   void MarkVTableUsed(SourceLocation Loc, CXXRecordDecl *Class,
 6325                                              const CXXRecordDecl *RD);
 6329   void MarkVirtualMembersReferenced(SourceLocation Loc, const CXXRecordDecl *RD,
 6339   void AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl);
 6349   void checkClassLevelDLLAttribute(CXXRecordDecl *Class);
 6350   void checkClassLevelCodeSegAttribute(CXXRecordDecl *Class);
 6355       CXXRecordDecl *Class, Attr *ClassAttr,
 6362   void inferGslPointerAttribute(NamedDecl *ND, CXXRecordDecl *UnderlyingRecord);
 6365   void inferGslOwnerPointerAttribute(CXXRecordDecl *Record);
 6370   void CheckCompletedCXXClass(CXXRecordDecl *Record);
 6374   void checkIllFormedTrivialABIStruct(CXXRecordDecl &RD);
 6441   CXXBaseSpecifier *CheckBaseSpecifier(CXXRecordDecl *Class,
 6455   bool AttachBaseSpecifiers(CXXRecordDecl *Class,
 6531                                      CXXRecordDecl *NamingClass,
 6550                                  CXXRecordDecl *NamingClass,
 6554                                      CXXRecordDecl *DecomposedClass,
 6569   bool IsSimplyAccessible(NamedDecl *Decl, CXXRecordDecl *NamingClass,
 6607   void DiagnoseAbstractType(const CXXRecordDecl *RD);
 8320                                         CXXRecordDecl *ThisContext,
 8374   SubstBaseSpecifiers(CXXRecordDecl *Instantiation,
 8375                       CXXRecordDecl *Pattern,
 8380                    CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern,
 8380                    CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern,
 8427                                CXXRecordDecl *Instantiation,
11020   bool inferCUDATargetForImplicitSpecialMember(CXXRecordDecl *ClassDecl,
11403                                   const CXXRecordDecl *RD,
11539   SmallVector<CXXRecordDecl*, 4> DelayedDllExportClasses;
tools/clang/include/clang/Serialization/ASTReader.h
 1103       std::pair<CXXRecordDecl *, struct CXXRecordDecl::DefinitionData *>;
 1103       std::pair<CXXRecordDecl *, struct CXXRecordDecl::DefinitionData *>;
 1106   llvm::SmallDenseMap<CXXRecordDecl *, llvm::SmallVector<DataPointers, 2>, 2>
 1887   T *ReadDeclAs(ModuleFile &F, const RecordData &R, unsigned &I) {
 1888     return cast_or_null<T>(GetDecl(ReadDeclID(F, R, I)));
 2541   T *readDeclAs() {
 2542     return Reader->ReadDeclAs<T>(*F, Record, Idx);
tools/clang/include/clang/Serialization/ASTWriter.h
  715   void AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) override;
  946   void AddCXXDefinitionData(const CXXRecordDecl *D);
tools/clang/include/clang/StaticAnalyzer/Core/Checker.h
   33     ((const CHECKER *)checker)->checkASTDecl(cast<DECL>(D), mgr, BR);
   37     return isa<DECL>(D);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
  614     const CXXRecordDecl *LambdaDecl = LambdaVD->getType()->getAsCXXRecordDecl();
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
 1156   llvm::PointerIntPair<const CXXRecordDecl *, 1, bool> Data;
 1158   CXXBaseObjectRegion(const CXXRecordDecl *RD, bool IsVirtual,
 1164   static void ProfileRegion(llvm::FoldingSetNodeID &ID, const CXXRecordDecl *RD,
 1168   const CXXRecordDecl *getDecl() const { return Data.getPointer(); }
 1194   const CXXRecordDecl *DerivedD;
 1196   CXXDerivedObjectRegion(const CXXRecordDecl *DerivedD, const SubRegion *SReg)
 1206   static void ProfileRegion(llvm::FoldingSetNodeID &ID, const CXXRecordDecl *RD,
 1210   const CXXRecordDecl *getDecl() const { return DerivedD; }
 1370   getCXXBaseObjectRegion(const CXXRecordDecl *BaseClass, const SubRegion *Super,
 1387   getCXXDerivedObjectRegion(const CXXRecordDecl *BaseClass,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
  305   Loc getLValue(const CXXRecordDecl *BaseClass, const SubRegion *Super,
  709   const auto *Base = BaseSpec.getType()->getAsCXXRecordDecl();
  715 inline Loc ProgramState::getLValue(const CXXRecordDecl *BaseClass,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  383   loc::MemRegionVal getCXXThis(const CXXRecordDecl *D,
tools/clang/lib/ARCMigrate/TransGCAttrs.cpp
  133     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
  133     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
tools/clang/lib/AST/APValue.cpp
  189       (DataSize - sizeof(MemberPointerBase)) / sizeof(const CXXRecordDecl*);
  190   typedef const CXXRecordDecl *PathElem;
  600     const CXXRecordDecl *CastToBase = nullptr;
  606         if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(BaseOrMember)) {
  606         if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(BaseOrMember)) {
  658       const CXXRecordDecl *CD = cast<CXXRecordDecl>(RD);
  658       const CXXRecordDecl *CD = cast<CXXRecordDecl>(RD);
  659       CXXRecordDecl::base_class_const_iterator BI = CD->bases_begin();
  691       Out << '&' << *cast<CXXRecordDecl>(VD->getDeclContext()) << "::" << *VD;
  812 ArrayRef<const CXXRecordDecl*> APValue::getMemberPointerPath() const {
  833                                 ArrayRef<const CXXRecordDecl*> Path) {
  840   memcpy(MPD->getPath(), Path.data(), Path.size()*sizeof(const CXXRecordDecl*));
tools/clang/lib/AST/ASTContext.cpp
  124   if (const auto *CRD = dyn_cast<CXXRecordDecl>(D)) {
  124   if (const auto *CRD = dyn_cast<CXXRecordDecl>(D)) {
  328   if (const auto *CRD = dyn_cast<CXXRecordDecl>(&D)) {
  328   if (const auto *CRD = dyn_cast<CXXRecordDecl>(&D)) {
  587     else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  587     else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  597         if (const CXXRecordDecl *NonVirtualBase = Ty->getAsCXXRecordDecl()) {
  612         if (const CXXRecordDecl *VirtualBase = Ty->getAsCXXRecordDecl()) {
 1156     NewDecl = CXXRecordDecl::Create(*this, TK, getTranslationUnitDecl(), Loc,
 2336 CharUnits ASTContext::getOffsetOfBaseWithVBPtr(const CXXRecordDecl *RD) const {
 2339   while (const CXXRecordDecl *Base = Layout->getBaseSharingVBPtr()) {
 2423   if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RD))
 2423   if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RD))
 2436   if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RD)) {
 2436   if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RD)) {
 3938   if (!isa<CXXRecordDecl>(D)) return false;
 3939   const auto *RD = cast<CXXRecordDecl>(D);
 3939   const auto *RD = cast<CXXRecordDecl>(D);
 3951 QualType ASTContext::getInjectedClassNameType(CXXRecordDecl *Decl,
 3956   } else if (CXXRecordDecl *PrevDecl = Decl->getPreviousDecl()) {
 6193   if (const CXXRecordDecl *record = Ty->getAsCXXRecordDecl()) {
 7149   const auto *CXXRec = dyn_cast<CXXRecordDecl>(RDecl);
 7149   const auto *CXXRec = dyn_cast<CXXRecordDecl>(RDecl);
 7156         CXXRecordDecl *base = BI.getType()->getAsCXXRecordDecl();
 7176       CXXRecordDecl *base = BI.getType()->getAsCXXRecordDecl();
 7242     if (auto *base = dyn_cast<CXXRecordDecl>(dcl)) {
 7242     if (auto *base = dyn_cast<CXXRecordDecl>(dcl)) {
10039         const CXXRecordDecl *RD = MD->getParent();
10154 bool ASTContext::isNearlyEmpty(const CXXRecordDecl *RD) const {
10285 ASTContext::getCopyConstructorForExceptionObject(CXXRecordDecl *RD) {
10287       cast<CXXRecordDecl>(RD->getFirstDecl()));
10290 void ASTContext::addCopyConstructorForExceptionObject(CXXRecordDecl *RD,
10293       cast<CXXRecordDecl>(RD->getFirstDecl()),
tools/clang/lib/AST/ASTImporter.cpp
  152     LLVM_NODISCARD Error importInto(ImportT *&To, ImportT *From) {
  152     LLVM_NODISCARD Error importInto(ImportT *&To, ImportT *From) {
  155         To = cast_or_null<ImportT>(*ToOrErr);
  162     Expected<T *> import(T *From) {
  162     Expected<T *> import(T *From) {
  166       return cast_or_null<T>(*ToOrErr);
  170     Expected<T *> import(const T *From) {
  170     Expected<T *> import(const T *From) {
  217           -> decltype(ToDeclT::Create(std::forward<Args>(args)...)) {
  218         return ToDeclT::Create(std::forward<Args>(args)...);
  229     LLVM_NODISCARD bool GetImportedOrCreateDecl(ToDeclT *&ToD, FromDeclT *FromD,
  234       CallOverloadedCreateFun<ToDeclT> OC;
  256     GetImportedOrCreateSpecialDecl(ToDeclT *&ToD, CreateFunT CreateFun,
  262       ToD = cast_or_null<ToDeclT>(Importer.GetAlreadyImportedOrNull(FromD));
  365     Error ImportImplicitMethods(const CXXRecordDecl *From, CXXRecordDecl *To);
  365     Error ImportImplicitMethods(const CXXRecordDecl *From, CXXRecordDecl *To);
 1325   Expected<CXXRecordDecl *> ToDeclOrErr = import(T->getDecl());
 1767     const CXXRecordDecl *From, CXXRecordDecl *To) {
 1767     const CXXRecordDecl *From, CXXRecordDecl *To) {
 1833   auto *ToCXX = dyn_cast<CXXRecordDecl>(To);
 1833   auto *ToCXX = dyn_cast<CXXRecordDecl>(To);
 1834   auto *FromCXX = dyn_cast<CXXRecordDecl>(From);
 1834   auto *FromCXX = dyn_cast<CXXRecordDecl>(From);
 1837     struct CXXRecordDecl::DefinitionData &ToData = ToCXX->data();
 1838     struct CXXRecordDecl::DefinitionData &FromData = FromCXX->data();
 2574   if (auto *DCXX = dyn_cast<CXXRecordDecl>(D)) {
 2574   if (auto *DCXX = dyn_cast<CXXRecordDecl>(D)) {
 2648             if (const auto *DCXX = dyn_cast<CXXRecordDecl>(D)) {
 2648             if (const auto *DCXX = dyn_cast<CXXRecordDecl>(D)) {
 2649               auto *FoundCXX = dyn_cast<CXXRecordDecl>(FoundDef);
 2649               auto *FoundCXX = dyn_cast<CXXRecordDecl>(FoundDef);
 2683   CXXRecordDecl *D2CXX = nullptr;
 2684   if (auto *DCXX = dyn_cast<CXXRecordDecl>(D)) {
 2684   if (auto *DCXX = dyn_cast<CXXRecordDecl>(D)) {
 2690               D2CXX, CXXRecordDecl::CreateLambda, D, Importer.getToContext(),
 2706               cast_or_null<CXXRecordDecl>(PrevDecl), DelayTypeCreation))
 2709           D2CXX, dyn_cast<CXXRecordDecl>(DC));
 2714                                   cast_or_null<CXXRecordDecl>(PrevDecl)))
 2740         CXXRecordDecl *Injected = nullptr;
 2742           auto *Record = dyn_cast<CXXRecordDecl>(Found);
 2742           auto *Record = dyn_cast<CXXRecordDecl>(Found);
 2752           auto *RI = cast<CXXRecordDecl>(R);
 2752           auto *RI = cast<CXXRecordDecl>(R);
 2770         CXXRecordDecl *FromInst = DCXX->getInstantiatedFromMemberClass();
 2772         if (Expected<CXXRecordDecl *> ToInstOrErr = import(FromInst))
 3166             ToFunction, D, Importer.getToContext(), cast<CXXRecordDecl>(DC),
 3187         ToFunction, D, Importer.getToContext(), cast<CXXRecordDecl>(DC),
 3205             ToFunction, D, Importer.getToContext(), cast<CXXRecordDecl>(DC),
 3213             ToFunction, D, Importer.getToContext(), cast<CXXRecordDecl>(DC),
 3523   auto *RD = cast<CXXRecordDecl>(DC);
 3523   auto *RD = cast<CXXRecordDecl>(DC);
 5028   auto *ToTemplatedDef = D->getTemplatedDecl()->getDefinition();
 5089   CXXRecordDecl *FromTemplated = D->getTemplatedDecl();
 5092   CXXRecordDecl *ToTemplated;
 5131       CXXRecordDecl *PrevTemplated =
 7377   Expected<CXXRecordDecl *> ToNamingClassOrErr = import(E->getNamingClass());
 7503   CXXRecordDecl *FromClass = E->getLambdaClass();
 7507   CXXRecordDecl *ToClass = *ToClassOrErr;
 8193                                                  cast<CXXRecordDecl>(*RDOrErr));
tools/clang/lib/AST/ASTStructuralEquivalence.cpp
 1091                                 CXXRecordDecl *D1, CXXRecordDecl *D2) {
 1091                                 CXXRecordDecl *D1, CXXRecordDecl *D2) {
 1175   if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
 1175   if (auto *D1CXX = dyn_cast<CXXRecordDecl>(D1)) {
 1176     if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) {
 1176     if (auto *D2CXX = dyn_cast<CXXRecordDecl>(D2)) {
 1204       for (CXXRecordDecl::base_class_iterator Base1 = D1CXX->bases_begin(),
 1240       CXXRecordDecl::friend_iterator Friend2 = D2CXX->friend_begin(),
 1242       for (CXXRecordDecl::friend_iterator Friend1 = D1CXX->friend_begin(),
tools/clang/lib/AST/CXXABI.h
   49   virtual bool isNearlyEmpty(const CXXRecordDecl *RD) const = 0;
   56   virtual void addCopyConstructorForExceptionObject(CXXRecordDecl *,
   61   getCopyConstructorForExceptionObject(CXXRecordDecl *) = 0;
tools/clang/lib/AST/CXXInheritance.cpp
   91 bool CXXRecordDecl::isDerivedFrom(const CXXRecordDecl *Base) const {
   97 bool CXXRecordDecl::isDerivedFrom(const CXXRecordDecl *Base,
  104   const CXXRecordDecl *BaseDecl = Base->getCanonicalDecl();
  112 bool CXXRecordDecl::isVirtuallyDerivedFrom(const CXXRecordDecl *Base) const {
  124   const CXXRecordDecl *BaseDecl = Base->getCanonicalDecl();
  132 bool CXXRecordDecl::isProvablyNotDerivedFrom(const CXXRecordDecl *Base) const {
  133   const CXXRecordDecl *TargetDecl = Base->getCanonicalDecl();
  152   SmallVector<const CXXRecordDecl*, 8> Queue;
  154   const CXXRecordDecl *Record = this;
  165       CXXRecordDecl *Base =
  166             cast_or_null<CXXRecordDecl>(Ty->getDecl()->getDefinition());
  192                                  const CXXRecordDecl *Record,
  193                                  CXXRecordDecl::BaseMatchesCallback BaseMatches,
  261         ScratchPath.Access = CXXRecordDecl::MergeAccess(AccessToHere,
  280       CXXRecordDecl *BaseRecord;
  287             BaseRecord = cast<CXXRecordDecl>(RT->getDecl());
  303         BaseRecord = cast<CXXRecordDecl>(
  368       CXXRecordDecl *VBase = nullptr;
  370         VBase = cast<CXXRecordDecl>(Record->getDecl());
  379         CXXRecordDecl *HidingClass = nullptr;
  382           HidingClass = cast<CXXRecordDecl>(Record->getDecl());
  398                                   const CXXRecordDecl *BaseRecord) {
  407                                          const CXXRecordDecl *BaseRecord) {
  468   CXXRecordDecl *RD = TD->getTemplatedDecl();
  541             return CXXRecordDecl::FindOrdinaryMemberInDependentClasses(
  583   llvm::DenseMap<const CXXRecordDecl *, unsigned> SubobjectCount;
  586   llvm::DenseMap<const CXXRecordDecl *, CXXFinalOverriderMap *> VirtualOverriders;
  593   void Collect(const CXXRecordDecl *RD, bool VirtualBase,
  594                const CXXRecordDecl *InVirtualSubobject,
  600 void FinalOverriderCollector::Collect(const CXXRecordDecl *RD,
  602                                       const CXXRecordDecl *InVirtualSubobject,
  607       = ++SubobjectCount[cast<CXXRecordDecl>(RD->getCanonicalDecl())];
  611       const CXXRecordDecl *BaseDecl = cast<CXXRecordDecl>(RT->getDecl());
  611       const CXXRecordDecl *BaseDecl = cast<CXXRecordDecl>(RT->getDecl());
  723   for (llvm::DenseMap<const CXXRecordDecl *, CXXFinalOverriderMap *>::iterator
  769 AddIndirectPrimaryBases(const CXXRecordDecl *RD, ASTContext &Context,
  780     const CXXRecordDecl *BaseDecl =
  781       cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
  802     const CXXRecordDecl *BaseDecl =
  803       cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
tools/clang/lib/AST/ComparisonCategories.cpp
   29   auto *Record = VD->getType()->getAsCXXRecordDecl();
   79 static CXXRecordDecl *lookupCXXRecordDecl(const ASTContext &Ctx,
   85     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Lookup.front()))
   85     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Lookup.front()))
   97     if (CXXRecordDecl *RD = lookupCXXRecordDecl(Ctx, NS, Kind))
  107   auto *RD = Ty->getAsCXXRecordDecl();
  112   const auto *CanonRD = RD->getCanonicalDecl();
tools/clang/lib/AST/Decl.cpp
  188 std::enable_if<!std::is_base_of<RedeclarableTemplateDecl, T>::value, bool>::type
  189 isExplicitMemberSpecialization(const T *D) {
  989   } else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  989   } else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 1109   if (const auto *RD = dyn_cast<CXXRecordDecl>(ND)) {
 1109   if (const auto *RD = dyn_cast<CXXRecordDecl>(ND)) {
 1110     CXXRecordDecl *InstantiatedFrom = RD->getInstantiatedFromMemberClass();
 1121     const auto *TD = spec->getSpecializedTemplate()->getTemplatedDecl();
 1316 static inline const CXXRecordDecl*
 1317 getOutermostEnclosingLambda(const CXXRecordDecl *Record) {
 1318   const CXXRecordDecl *Ret = Record;
 1323     Record = dyn_cast_or_null<CXXRecordDecl>(
 1386       const auto *Record = cast<CXXRecordDecl>(D);
 1386       const auto *Record = cast<CXXRecordDecl>(D);
 1404         const CXXRecordDecl *OuterMostLambda =
 2868     if (auto *Parent = dyn_cast<CXXRecordDecl>(getDeclContext()))
 2868     if (auto *Parent = dyn_cast<CXXRecordDecl>(getDeclContext()))
 2945   if (isa<CXXRecordDecl>(getDeclContext()))
 3010   auto *RD = getParamDecl(1)->getType()->getAsCXXRecordDecl();
 3984   const auto *CXXRD = cast<CXXRecordDecl>(RD);
 3984   const auto *CXXRD = cast<CXXRecordDecl>(RD);
 4078   if (auto *D = dyn_cast<CXXRecordDecl>(this)) {
 4078   if (auto *D = dyn_cast<CXXRecordDecl>(this)) {
 4079     struct CXXRecordDecl::DefinitionData *Data =
 4080       new (getASTContext()) struct CXXRecordDecl::DefinitionData(D);
 4082       cast<CXXRecordDecl>(I)->DefinitionData = Data;
 4111   if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(this))
 4111   if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(this))
 4333   if (auto RD = dyn_cast<CXXRecordDecl>(this))
 4400   const auto *CXXRD = dyn_cast<CXXRecordDecl>(this);
 4400   const auto *CXXRD = dyn_cast<CXXRecordDecl>(this);
tools/clang/lib/AST/DeclBase.cpp
  233   else if (auto *RD = dyn_cast<CXXRecordDecl>(this))
  926       !isa<CXXRecordDecl>(getDeclContext()) ||
  935       isa<CXXRecordDecl>(this) ||
 1096   if (const auto *Record = dyn_cast<CXXRecordDecl>(this)) {
 1096   if (const auto *Record = dyn_cast<CXXRecordDecl>(this)) {
 1510   if (auto *Record = dyn_cast<CXXRecordDecl>(this))
 1510   if (auto *Record = dyn_cast<CXXRecordDecl>(this))
tools/clang/lib/AST/DeclCXX.cpp
   73 CXXRecordDecl::DefinitionData::DefinitionData(CXXRecordDecl *D)
  120                              CXXRecordDecl *PrevDecl)
  125 CXXRecordDecl *CXXRecordDecl::Create(const ASTContext &C, TagKind TK,
  128                                      CXXRecordDecl *PrevDecl,
  130   auto *R = new (C, DC) CXXRecordDecl(CXXRecord, TK, C, DC, StartLoc, IdLoc, Id,
  130   auto *R = new (C, DC) CXXRecordDecl(CXXRecord, TK, C, DC, StartLoc, IdLoc, Id,
  140 CXXRecordDecl *
  145   auto *R = new (C, DC) CXXRecordDecl(CXXRecord, TTK_Class, C, DC, Loc, Loc,
  145   auto *R = new (C, DC) CXXRecordDecl(CXXRecord, TTK_Class, C, DC, Loc, Loc,
  157 CXXRecordDecl *
  159   auto *R = new (C, ID) CXXRecordDecl(
  159   auto *R = new (C, ID) CXXRecordDecl(
  169 static bool hasRepeatedBaseClass(const CXXRecordDecl *StartRD) {
  170   llvm::SmallPtrSet<const CXXRecordDecl*, 8> SeenBaseTypes;
  171   SmallVector<const CXXRecordDecl*, 8> WorkList = {StartRD};
  173     const CXXRecordDecl *RD = WorkList.pop_back_val();
  175       if (const CXXRecordDecl *B = BaseSpec.getType()->getAsCXXRecordDecl()) {
  221     auto *BaseClassDecl =
  222         cast<CXXRecordDecl>(BaseType->castAs<RecordType>()->getDecl());
  293         if (CXXRecordDecl *VBaseDecl = VBase.getType()->getAsCXXRecordDecl())
  494 void CXXRecordDecl::addedClassSubobject(CXXRecordDecl *Subobj) {
  573     ASTContext &Ctx, const CXXRecordDecl *XFirst) {
  577   llvm::SmallPtrSet<const CXXRecordDecl*, 8> Bases;
  578   llvm::SmallPtrSet<const CXXRecordDecl*, 8> M;
  579   SmallVector<const CXXRecordDecl*, 8> WorkList;
  619     const CXXRecordDecl *X = WorkList.pop_back_val();
  640       if (auto *RD = T->getAsCXXRecordDecl())
 1052       if (CXXRecordDecl *FieldType = T->getAsCXXRecordDecl()) {
 1099       auto *FieldRec = cast<CXXRecordDecl>(RecordTy->getDecl());
 1099       auto *FieldRec = cast<CXXRecordDecl>(RecordTy->getDecl());
 1403 static NamedDecl* getLambdaCallOperatorHelper(const CXXRecordDecl &RD) {
 1515                                       CXXRecordDecl *Record,
 1530   CXXRecordDecl::conversion_iterator ConvI = Record->conversion_begin();
 1531   CXXRecordDecl::conversion_iterator ConvE = Record->conversion_end();
 1536     for (CXXRecordDecl::conversion_iterator I = ConvI; I != ConvE; ++I) {
 1550           = CXXRecordDecl::MergeAccess(Access, I.getAccess());
 1566       = CXXRecordDecl::MergeAccess(Access, I.getAccessSpecifier());
 1569     auto *Base = cast<CXXRecordDecl>(RT->getDecl());
 1569     auto *Base = cast<CXXRecordDecl>(RT->getDecl());
 1580                                       CXXRecordDecl *Record,
 1596   CXXRecordDecl::conversion_iterator ConvI = Record->conversion_begin();
 1597   CXXRecordDecl::conversion_iterator ConvE = Record->conversion_end();
 1607     CollectVisibleConversions(Context, cast<CXXRecordDecl>(RT->getDecl()),
 1622 llvm::iterator_range<CXXRecordDecl::conversion_iterator>
 1666 CXXRecordDecl *CXXRecordDecl::getInstantiatedFromMemberClass() const {
 1668     return cast<CXXRecordDecl>(MSInfo->getInstantiatedFrom());
 1678 CXXRecordDecl::setInstantiationOfMemberClass(CXXRecordDecl *RD,
 1720 const CXXRecordDecl *CXXRecordDecl::getTemplateInstantiationPattern() const {
 1723     if (auto *Def = D->getDefinition())
 1753       const CXXRecordDecl *RD = this;
 1754       while (auto *NewRD = RD->getInstantiatedFromMemberClass())
 1786     if (const CXXRecordDecl *RD = Base.getType()->getAsCXXRecordDecl())
 1792     if (const CXXRecordDecl *RD =
 1855   const auto *Base = BaseSpec.getType()->getAsCXXRecordDecl();
 1912     const auto *BaseDecl =
 1913         cast<CXXRecordDecl>(B.getType()->castAs<RecordType>()->getDecl());
 1990 CXXMethodDecl::getCorrespondingMethodDeclaredInClass(const CXXRecordDecl *RD,
 2021 CXXMethodDecl::getCorrespondingMethodInClass(const CXXRecordDecl *RD,
 2030     const auto *Base = cast<CXXRecordDecl>(RT->getDecl());
 2030     const auto *Base = cast<CXXRecordDecl>(RT->getDecl());
 2039 CXXMethodDecl *CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD,
 2082   const CXXRecordDecl *BestDynamicDecl = Base->getBestDynamicClassType();
 2292                                   const CXXRecordDecl *Decl) {
 2298                                     const CXXRecordDecl *Decl) {
 2305                                           const CXXRecordDecl *Decl) {
 2343   const CXXRecordDecl *P = getParent();
 2432     ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2470     ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2607     ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2638     ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
 2843 CXXRecordDecl *ConstructorUsingShadowDecl::getNominatedBaseClass() const {
tools/clang/lib/AST/DeclFriend.cpp
   61   cast<CXXRecordDecl>(DC)->pushFriendDecl(FD);
tools/clang/lib/AST/DeclPrinter.cpp
   80     void VisitCXXRecordDecl(CXXRecordDecl *D);
  949 void DeclPrinter::VisitCXXRecordDecl(CXXRecordDecl *D) {
  970       for (CXXRecordDecl::base_class_iterator Base = D->bases_begin(),
tools/clang/lib/AST/Expr.cpp
   62 const CXXRecordDecl *Expr::getBestDynamicClassType() const {
   73   return cast<CXXRecordDecl>(D);
   88         auto *Derived =
   89             cast<CXXRecordDecl>(E->getType()->castAs<RecordType>()->getDecl());
 2571     if (const CXXRecordDecl *Type = getType()->getAsCXXRecordDecl()) {
 3038 bool Expr::isTemporaryObject(ASTContext &C, const CXXRecordDecl *TempTy) const {
tools/clang/lib/AST/ExprCXX.cpp
  139   if (const CXXRecordDecl *RD = E->getType()->getAsCXXRecordDecl())
  384     const ASTContext &Context, CXXRecordDecl *NamingClass,
  404     const ASTContext &Context, CXXRecordDecl *NamingClass,
  418     const ASTContext &Context, CXXRecordDecl *NamingClass,
  745 CXXRecordDecl *CXXMemberCallExpr::getRecordDecl() const {
  844   const auto *SrcRD =
  845       cast<CXXRecordDecl>(SrcType->castAs<RecordType>()->getDecl());
  850   const auto *DestRD =
  851       cast<CXXRecordDecl>(DestType->castAs<RecordType>()->getDecl());
 1186   CXXRecordDecl *Class = getLambdaClass();
 1187   CXXRecordDecl::LambdaDefinitionData &Data = Class->getLambdaData();
 1215     const ASTContext &Context, CXXRecordDecl *Class,
 1261   struct CXXRecordDecl::LambdaDefinitionData &Data
 1282 CXXRecordDecl *LambdaExpr::getLambdaClass() const {
 1287   CXXRecordDecl *Record = getLambdaClass();
 1292   CXXRecordDecl *Record = getLambdaClass();
 1297   CXXRecordDecl *Record = getLambdaClass();
 1302   const CXXRecordDecl *Record = getLambdaClass();
 1568 CXXRecordDecl *UnresolvedMemberExpr::getNamingClass() {
 1574   CXXRecordDecl *Record = nullptr;
tools/clang/lib/AST/ExprConstant.cpp
  129   static const CXXRecordDecl *getAsBaseClass(APValue::LValuePathEntry E) {
  130     return dyn_cast_or_null<CXXRecordDecl>(E.getAsBaseOrMember().getPointer());
 1639     const CXXRecordDecl *getContainingRecord() const {
 1640       return cast<CXXRecordDecl>(
 1652       ArrayRef<const CXXRecordDecl*> P = V.getMemberPointerPath();
 1662     SmallVector<const CXXRecordDecl*, 4> Path;
 1666     bool castBack(const CXXRecordDecl *Class) {
 1668       const CXXRecordDecl *Expected;
 1686     bool castToDerived(const CXXRecordDecl *Derived) {
 1700     bool castToBase(const CXXRecordDecl *Base) {
 2198     if (const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD)) {
 2198     if (const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD)) {
 2642     const CXXRecordDecl *Base = getAsBaseClass(D.Entries[I]);
 2654                                    const CXXRecordDecl *Derived,
 2655                                    const CXXRecordDecl *Base,
 2668                              const CXXRecordDecl *DerivedDecl,
 2670   const CXXRecordDecl *BaseDecl = Base->getType()->getAsCXXRecordDecl();
 2707                             const CXXRecordDecl *DerivedRD,
 2708                             const CXXRecordDecl *BaseRD) {
 2915 static unsigned getBaseIndex(const CXXRecordDecl *Derived,
 2916                              const CXXRecordDecl *Base) {
 2919   for (CXXRecordDecl::base_class_const_iterator I = Derived->bases_begin(),
 3011   CXXRecordDecl *RD = T->getBaseElementTypeUnsafe()->getAsCXXRecordDecl();
 3032   CXXRecordDecl *RD = T->getBaseElementTypeUnsafe()->getAsCXXRecordDecl();
 3346       const CXXRecordDecl *Derived = ObjType->getAsCXXRecordDecl();
 3347       const CXXRecordDecl *Base = getAsBaseClass(Sub.Entries[I]);
 4124       const CXXRecordDecl *LVDecl = getAsBaseClass(
 4126       const CXXRecordDecl *MPDecl = MemPtr.Path[I];
 4145     const CXXRecordDecl *RD = LVType->getAsCXXRecordDecl();
 4149       const CXXRecordDecl *Base = MemPtr.Path[N - I - 1];
 4217   const CXXRecordDecl *TargetType = TargetQT->getAsCXXRecordDecl();
 4218   const CXXRecordDecl *FinalType;
 4235   if (auto *RD = T->getAsCXXRecordDecl()) {
 4243     for (CXXRecordDecl::base_class_const_iterator I = RD->bases_begin(),
 5011   const CXXRecordDecl *Type;
 5016 static const CXXRecordDecl *getBaseClassType(SubobjectDesignator &Designator,
 5040   const CXXRecordDecl *Class =
 5096     const CXXRecordDecl *Class = getBaseClassType(This.Designator, PathLength);
 5122       const CXXRecordDecl *NextClass =
 5156   const CXXRecordDecl *OldClass = Path[0]->getPointeeCXXRecordDecl();
 5158     const CXXRecordDecl *NewClass = Path[I]->getPointeeCXXRecordDecl();
 5172 static bool isBaseClassPublic(const CXXRecordDecl *Derived,
 5173                               const CXXRecordDecl *Base) {
 5175     auto *BaseClass = BaseSpec.getType()->getAsCXXRecordDecl();
 5212   const CXXRecordDecl *C = E->getTypeAsWritten()->getPointeeCXXRecordDecl();
 5250     const CXXRecordDecl *Class = getBaseClassType(Ptr.Designator, PathLength);
 5341         auto *RD =
 5413 static bool hasFields(const CXXRecordDecl *RD) {
 5543   const CXXRecordDecl *RD = Definition->getParent();
 5604   CXXRecordDecl::base_class_const_iterator BaseIt = RD->bases_begin();
 5606   CXXRecordDecl::field_iterator FieldIt = RD->field_begin();
 5662         CXXRecordDecl *CD = cast<CXXRecordDecl>(FD->getParent());
 5662         CXXRecordDecl *CD = cast<CXXRecordDecl>(FD->getParent());
 5792   const CXXRecordDecl *RD = T->getAsCXXRecordDecl();
 6023   if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 6030   if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 6239     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 6242         CXXRecordDecl *BaseDecl = BS.getType()->getAsCXXRecordDecl();
 6397     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 6404     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 6407         CXXRecordDecl *BaseDecl = BS.getType()->getAsCXXRecordDecl();
 6540     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(Record)) {
 6540     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(Record)) {
 6920         const CXXRecordDecl *ClosureClass = MD->getParent();
 8716       const CXXRecordDecl *Derived = (*PathI)->getType()->getAsCXXRecordDecl();
 8732       const CXXRecordDecl *Base = (*PathI)->getType()->getAsCXXRecordDecl();
 8796   const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD);
 8796   const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD);
 8805     for (CXXRecordDecl::base_class_const_iterator I = CD->bases_begin(),
 8807       const CXXRecordDecl *Base = I->getType()->getAsCXXRecordDecl();
 8855   if (isa<CXXRecordDecl>(RD) && cast<CXXRecordDecl>(RD)->getNumVBases()) {
 8855   if (isa<CXXRecordDecl>(RD) && cast<CXXRecordDecl>(RD)->getNumVBases()) {
 8881     const CXXRecordDecl *RD = E->getSubExpr()->getType()->getAsCXXRecordDecl();
 8885       const CXXRecordDecl *Base = (*PathI)->getType()->getAsCXXRecordDecl();
 8902   auto *CXXRD = dyn_cast<CXXRecordDecl>(RD);
 9117   const CXXRecordDecl *ClosureClass = E->getLambdaClass();
12012       Result += RL.getBaseClassOffset(cast<CXXRecordDecl>(BaseRT->getDecl()));
14396   const CXXRecordDecl *RD = MD ? MD->getParent()->getCanonicalDecl() : nullptr;
tools/clang/lib/AST/InheritViz.cpp
   93   const auto *Decl =
tools/clang/lib/AST/Interp/Program.cpp
  236   if (auto *CD = dyn_cast<CXXRecordDecl>(RD)) {
tools/clang/lib/AST/ItaniumCXXABI.cpp
  143     const CXXRecordDecl *Lambda = CallOperator->getParent();
  216   bool isNearlyEmpty(const CXXRecordDecl *RD) const override {
  229   getCopyConstructorForExceptionObject(CXXRecordDecl *RD) override {
  233   void addCopyConstructorForExceptionObject(CXXRecordDecl *RD,
tools/clang/lib/AST/ItaniumMangle.cpp
   48   if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
   48   if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
  111   const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(ND);
  111   const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(ND);
  145   void mangleCXXVTable(const CXXRecordDecl *RD, raw_ostream &) override;
  146   void mangleCXXVTT(const CXXRecordDecl *RD, raw_ostream &) override;
  147   void mangleCXXCtorVTable(const CXXRecordDecl *RD, int64_t Offset,
  148                            const CXXRecordDecl *Type, raw_ostream &) override;
  173   void mangleLambdaSig(const CXXRecordDecl *Lambda, raw_ostream &) override;
  429   void mangleLambdaSig(const CXXRecordDecl *Lambda);
  493   void mangleLambda(const CXXRecordDecl *Lambda);
  546   void mangleCXXCtorType(CXXCtorType T, const CXXRecordDecl *InheritedFrom);
 1382     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(TD)) {
 1382     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(TD)) {
 1423     const CXXRecordDecl *InheritedFrom = nullptr;
 1585     const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD);
 1585     const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD);
 1733 void CXXNameMangler::mangleLambda(const CXXRecordDecl *Lambda) {
 1775 void CXXNameMangler::mangleLambdaSig(const CXXRecordDecl *Lambda) {
 4458                                        const CXXRecordDecl *InheritedFrom) {
 5099 void ItaniumMangleContextImpl::mangleCXXVTable(const CXXRecordDecl *RD,
 5107 void ItaniumMangleContextImpl::mangleCXXVTT(const CXXRecordDecl *RD,
 5115 void ItaniumMangleContextImpl::mangleCXXCtorVTable(const CXXRecordDecl *RD,
 5117                                                    const CXXRecordDecl *Type,
 5152 void ItaniumMangleContextImpl::mangleLambdaSig(const CXXRecordDecl *Lambda,
tools/clang/lib/AST/JSONNodeDumper.cpp
  312     const auto *RD =
  313         cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
  327 createDefaultConstructorDefinitionData(const CXXRecordDecl *RD) {
  342 createCopyConstructorDefinitionData(const CXXRecordDecl *RD) {
  360 createMoveConstructorDefinitionData(const CXXRecordDecl *RD) {
  377 createCopyAssignmentDefinitionData(const CXXRecordDecl *RD) {
  392 createMoveAssignmentDefinitionData(const CXXRecordDecl *RD) {
  407 createDestructorDefinitionData(const CXXRecordDecl *RD) {
  424 JSONNodeDumper::createCXXRecordDefinitionData(const CXXRecordDecl *RD) {
  809 void JSONNodeDumper::VisitCXXRecordDecl(const CXXRecordDecl *RD) {
tools/clang/lib/AST/Mangle.cpp
  376     if (!(isa<CXXRecordDecl>(D) || isa<CXXMethodDecl>(D)))
tools/clang/lib/AST/MicrosoftCXXABI.cpp
   68   llvm::SmallDenseMap<CXXRecordDecl *, CXXConstructorDecl *> RecordToCopyCtor;
   88   bool isNearlyEmpty(const CXXRecordDecl *RD) const override {
   93   getCopyConstructorForExceptionObject(CXXRecordDecl *RD) override {
   98   addCopyConstructorForExceptionObject(CXXRecordDecl *RD,
  143 static bool usesMultipleInheritanceModel(const CXXRecordDecl *RD) {
  148     const CXXRecordDecl *Base =
  211   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
tools/clang/lib/AST/MicrosoftMangle.cpp
   72   if (const auto *RD = dyn_cast<CXXRecordDecl>(D))
   72   if (const auto *RD = dyn_cast<CXXRecordDecl>(D))
  129   llvm::DenseMap<const CXXRecordDecl *, unsigned> LambdaIds;
  147   void mangleCXXVFTable(const CXXRecordDecl *Derived,
  148                         ArrayRef<const CXXRecordDecl *> BasePath,
  150   void mangleCXXVBTable(const CXXRecordDecl *Derived,
  151                         ArrayRef<const CXXRecordDecl *> BasePath,
  153   void mangleCXXVirtualDisplacementMap(const CXXRecordDecl *SrcRD,
  154                                        const CXXRecordDecl *DstRD,
  167   void mangleCXXRTTIBaseClassDescriptor(const CXXRecordDecl *Derived,
  171   void mangleCXXRTTIBaseClassArray(const CXXRecordDecl *Derived,
  173   void mangleCXXRTTIClassHierarchyDescriptor(const CXXRecordDecl *Derived,
  176   mangleCXXRTTICompleteObjectLocator(const CXXRecordDecl *Derived,
  177                                      ArrayRef<const CXXRecordDecl *> BasePath,
  204     if (const auto *RD = dyn_cast<CXXRecordDecl>(ND)) {
  204     if (const auto *RD = dyn_cast<CXXRecordDecl>(ND)) {
  233   unsigned getLambdaId(const CXXRecordDecl *RD) {
  238     std::pair<llvm::DenseMap<const CXXRecordDecl *, unsigned>::iterator, bool>
  315   void mangleMemberDataPointer(const CXXRecordDecl *RD, const ValueDecl *VD);
  316   void mangleMemberFunctionPointer(const CXXRecordDecl *RD,
  587 void MicrosoftCXXNameMangler::mangleMemberDataPointer(const CXXRecordDecl *RD,
  636 MicrosoftCXXNameMangler::mangleMemberFunctionPointer(const CXXRecordDecl *RD,
  886         const CXXRecordDecl *RD = VD->getType()->getAsCXXRecordDecl();
  909       if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(TD)) {
  909       if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(TD)) {
 1460       mangleMemberDataPointer(cast<CXXRecordDecl>(ND->getDeclContext())
 1485       const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 3097     const CXXRecordDecl *Derived, ArrayRef<const CXXRecordDecl *> BasePath,
 3097     const CXXRecordDecl *Derived, ArrayRef<const CXXRecordDecl *> BasePath,
 3111   for (const CXXRecordDecl *RD : BasePath)
 3117     const CXXRecordDecl *Derived, ArrayRef<const CXXRecordDecl *> BasePath,
 3117     const CXXRecordDecl *Derived, ArrayRef<const CXXRecordDecl *> BasePath,
 3128   for (const CXXRecordDecl *RD : BasePath)
 3149     const CXXRecordDecl *SrcRD, const CXXRecordDecl *DstRD, raw_ostream &Out) {
 3149     const CXXRecordDecl *SrcRD, const CXXRecordDecl *DstRD, raw_ostream &Out) {
 3231     const CXXRecordDecl *Derived, uint32_t NVOffset, int32_t VBPtrOffset,
 3245     const CXXRecordDecl *Derived, raw_ostream &Out) {
 3254     const CXXRecordDecl *Derived, raw_ostream &Out) {
 3263     const CXXRecordDecl *Derived, ArrayRef<const CXXRecordDecl *> BasePath,
 3263     const CXXRecordDecl *Derived, ArrayRef<const CXXRecordDecl *> BasePath,
tools/clang/lib/AST/NestedNameSpecifier.cpp
  134                                     CXXRecordDecl *RD) {
  152     if (isa<CXXRecordDecl>(ND))
  184 CXXRecordDecl *NestedNameSpecifier::getAsRecordDecl() const {
  190     return dyn_cast<CXXRecordDecl>(static_cast<NamedDecl *>(Specifier));
  214     CXXRecordDecl *RD = static_cast<CXXRecordDecl *>(Specifier);
  629                                               CXXRecordDecl *RD,
tools/clang/lib/AST/ODRHash.cpp
  467 void ODRHash::AddCXXRecordDecl(const CXXRecordDecl *Record) {
tools/clang/lib/AST/QualTypeNames.cpp
  273     if (const auto *CxxDecl = dyn_cast<CXXRecordDecl>(DC)) {
  273     if (const auto *CxxDecl = dyn_cast<CXXRecordDecl>(DC)) {
tools/clang/lib/AST/RecordLayout.cpp
   54                                  const CXXRecordDecl *PrimaryBase,
   56                                  const CXXRecordDecl *BaseSharingVBPtr,
   82     if (const CXXRecordDecl *PrimaryBase = getPrimaryBase()) {
tools/clang/lib/AST/RecordLayoutBuilder.cpp
   40   const CXXRecordDecl *Class;
   72   llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsets;
   75   llvm::DenseMap<const CXXRecordDecl *, CharUnits> VirtualBaseOffsets;
   85   bool getExternalNVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) {
   93   bool getExternalVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) {
  109   const CXXRecordDecl *Class;
  112   typedef llvm::TinyPtrVector<const CXXRecordDecl *> ClassVectorTy;
  124   void AddSubobjectAtOffset(const CXXRecordDecl *RD, CharUnits Offset);
  129   void UpdateEmptyFieldSubobjects(const CXXRecordDecl *RD,
  130                                   const CXXRecordDecl *Class, CharUnits Offset,
  151   bool CanPlaceSubobjectAtOffset(const CXXRecordDecl *RD,
  157   bool CanPlaceFieldSubobjectAtOffset(const CXXRecordDecl *RD,
  158                                       const CXXRecordDecl *Class,
  169   EmptySubobjectMap(const ASTContext &Context, const CXXRecordDecl *Class)
  189     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  215     const CXXRecordDecl *MemberDecl = RT->getAsCXXRecordDecl();
  231 EmptySubobjectMap::CanPlaceSubobjectAtOffset(const CXXRecordDecl *RD,
  249 void EmptySubobjectMap::AddSubobjectAtOffset(const CXXRecordDecl *RD,
  302   for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(),
  349   for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(),
  376 EmptySubobjectMap::CanPlaceFieldSubobjectAtOffset(const CXXRecordDecl *RD,
  377                                                   const CXXRecordDecl *Class,
  394     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  404       const CXXRecordDecl *VBaseDecl = Base.getType()->getAsCXXRecordDecl();
  414   for (CXXRecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
  437   if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
  447     const CXXRecordDecl *RD = RT->getAsCXXRecordDecl();
  481     const CXXRecordDecl *RD, const CXXRecordDecl *Class, CharUnits Offset,
  481     const CXXRecordDecl *RD, const CXXRecordDecl *Class, CharUnits Offset,
  505     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  515       const CXXRecordDecl *VBaseDecl = Base.getType()->getAsCXXRecordDecl();
  525   for (CXXRecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
  539   if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl()) {
  551     const CXXRecordDecl *RD = RT->getAsCXXRecordDecl();
  574 typedef llvm::SmallPtrSet<const CXXRecordDecl*, 4> ClassSetTy;
  641   const CXXRecordDecl *PrimaryBase;
  654   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
  668   const CXXRecordDecl *FirstNearlyEmptyVBase;
  672   llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBases;
  693   void Layout(const CXXRecordDecl *D);
  709   typedef llvm::DenseMap<const CXXRecordDecl *, BaseSubobjectInfo *>
  722   void ComputeBaseSubobjectInfo(const CXXRecordDecl *RD);
  726   BaseSubobjectInfo *ComputeBaseSubobjectInfo(const CXXRecordDecl *RD,
  731   void DeterminePrimaryBase(const CXXRecordDecl *RD);
  733   void SelectPrimaryVBase(const CXXRecordDecl *RD);
  739   void LayoutNonVirtualBases(const CXXRecordDecl *RD);
  748   void LayoutVirtualBases(const CXXRecordDecl *RD,
  749                           const CXXRecordDecl *MostDerivedClass);
  809 void ItaniumRecordLayoutBuilder::SelectPrimaryVBase(const CXXRecordDecl *RD) {
  814     const CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl();
  838 void ItaniumRecordLayoutBuilder::DeterminePrimaryBase(const CXXRecordDecl *RD) {
  855     const CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl();
  886     const CXXRecordDecl *RD, bool IsVirtual, BaseSubobjectInfo *Derived) {
  909   const CXXRecordDecl *PrimaryVirtualBase = nullptr;
  942     const CXXRecordDecl *BaseDecl = I.getType()->getAsCXXRecordDecl();
  963     const CXXRecordDecl *RD) {
  967     const CXXRecordDecl *BaseDecl = I.getType()->getAsCXXRecordDecl();
 1004     const CXXRecordDecl *RD) {
 1057     const CXXRecordDecl *BaseDecl = I.getType()->getAsCXXRecordDecl();
 1119     const CXXRecordDecl *RD, const CXXRecordDecl *MostDerivedClass) {
 1119     const CXXRecordDecl *RD, const CXXRecordDecl *MostDerivedClass) {
 1120   const CXXRecordDecl *PrimaryBase;
 1136     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 1313 void ItaniumRecordLayoutBuilder::Layout(const CXXRecordDecl *RD) {
 1338     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 1345     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 1747   auto *FieldClass = D->getType()->getAsCXXRecordDecl();
 1919     if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
 1919     if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
 2076                                                const CXXRecordDecl *RD) {
 2163 static bool mustSkipTailPadding(TargetCXXABI ABI, const CXXRecordDecl *RD) {
 2302   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
 2309   void cxxLayout(const CXXRecordDecl *RD);
 2315   void initializeCXXLayout(const CXXRecordDecl *RD);
 2316   void layoutNonVirtualBases(const CXXRecordDecl *RD);
 2317   void layoutNonVirtualBase(const CXXRecordDecl *RD,
 2318                             const CXXRecordDecl *BaseDecl,
 2321   void injectVFPtr(const CXXRecordDecl *RD);
 2322   void injectVBPtr(const CXXRecordDecl *RD);
 2331   void layoutVirtualBases(const CXXRecordDecl *RD);
 2350       llvm::SmallPtrSetImpl<const CXXRecordDecl *> &HasVtorDispSet,
 2351       const CXXRecordDecl *RD) const;
 2377   const CXXRecordDecl *PrimaryBase;
 2379   const CXXRecordDecl *SharedVBPtrBase;
 2486 void MicrosoftRecordLayoutBuilder::cxxLayout(const CXXRecordDecl *RD) {
 2544 MicrosoftRecordLayoutBuilder::initializeCXXLayout(const CXXRecordDecl *RD) {
 2563 MicrosoftRecordLayoutBuilder::layoutNonVirtualBases(const CXXRecordDecl *RD) {
 2573     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 2598     for (CXXRecordDecl::method_iterator i = RD->method_begin(),
 2609     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 2636   if (!isa<CXXRecordDecl>(RD))
 2651     const CXXRecordDecl *RD,
 2652     const CXXRecordDecl *BaseDecl,
 2784 void MicrosoftRecordLayoutBuilder::injectVBPtr(const CXXRecordDecl *RD) {
 2814 void MicrosoftRecordLayoutBuilder::injectVFPtr(const CXXRecordDecl *RD) {
 2845 void MicrosoftRecordLayoutBuilder::layoutVirtualBases(const CXXRecordDecl *RD) {
 2858     const CXXRecordDecl *BaseDecl = VBase.getType()->getAsCXXRecordDecl();
 2865   llvm::SmallPtrSet<const CXXRecordDecl *, 2> HasVtorDispSet;
 2870     const CXXRecordDecl *BaseDecl = VBase.getType()->getAsCXXRecordDecl();
 2917     if (!recordUsesEBO(RD) || !cast<CXXRecordDecl>(RD)->isEmpty()) {
 2939 RequiresVtordisp(const llvm::SmallPtrSetImpl<const CXXRecordDecl *> &
 2941                  const CXXRecordDecl *RD) {
 2955     llvm::SmallPtrSetImpl<const CXXRecordDecl *> &HasVtordispSet,
 2956     const CXXRecordDecl *RD) const {
 2961       const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 2972     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 2993   llvm::SmallPtrSet<const CXXRecordDecl *, 2> BasesWithOverriddenMethods;
 3012     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
 3047     if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 3047     if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 3066     if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 3066     if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 3112 const CXXMethodDecl *ASTContext::getCurrentKeyFunction(const CXXRecordDecl *RD) {
 3298   auto CXXRD = dyn_cast<CXXRecordDecl>(RD);
 3312     const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
 3327     SmallVector<const CXXRecordDecl *, 4> Bases;
 3342     for (const CXXRecordDecl *Base : Bases) {
 3393       const CXXRecordDecl *VBase = Base.getType()->getAsCXXRecordDecl();
tools/clang/lib/AST/TextNodeDumper.cpp
  639     const auto *RD =
  640         cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
 1523 void TextNodeDumper::VisitCXXRecordDecl(const CXXRecordDecl *D) {
tools/clang/lib/AST/Type.cpp
   93   const auto *ClassDecl = getTypePtr()->getPointeeCXXRecordDecl();
   98   const auto *ClassDecl = getTypePtr()->getPointeeCXXRecordDecl();
 1673 const CXXRecordDecl *Type::getPointeeCXXRecordDecl() const {
 1683     return dyn_cast<CXXRecordDecl>(RT->getDecl());
 1688 CXXRecordDecl *Type::getAsCXXRecordDecl() const {
 1689   return dyn_cast_or_null<CXXRecordDecl>(getAsTagDecl());
 2092     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(Record->getDecl()))
 2092     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(Record->getDecl()))
 2157     const CXXRecordDecl *RD = ClassTy->getAsCXXRecordDecl();
 2231     if (const auto *ClassDecl =
 2232             dyn_cast<CXXRecordDecl>(cast<RecordType>(CanonicalType)->getDecl()))
 2271     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 2271     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 2314     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 2314     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 2429     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 2429     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 2466     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 2466     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 2505     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 2505     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 2533   if (const auto *RD = getAsCXXRecordDecl()) {
 3379 CXXRecordDecl *InjectedClassNameType::getDecl() const {
 3380   return cast<CXXRecordDecl>(getInterestingTagDecl(Decl));
 4130     if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 4130     if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 4145 CXXRecordDecl *MemberPointerType::getMostRecentCXXRecordDecl() const {
tools/clang/lib/AST/TypePrinter.cpp
 1173     if (isa<CXXRecordDecl>(D) && cast<CXXRecordDecl>(D)->isLambda()) {
 1173     if (isa<CXXRecordDecl>(D) && cast<CXXRecordDecl>(D)->isLambda()) {
tools/clang/lib/AST/VTTBuilder.cpp
   32                        const CXXRecordDecl *MostDerivedClass,
   43                                   const CXXRecordDecl *VTableClass) {
   60   const CXXRecordDecl *RD = Base.getBase();
   67     const auto *BaseDecl =
   68         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
   83                                            const CXXRecordDecl *VTableClass,
   85   const CXXRecordDecl *RD = Base.getBase();
   93     const auto *BaseDecl =
   94         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
  154 void VTTBuilder::LayoutVirtualVTTs(const CXXRecordDecl *RD,
  157     const auto *BaseDecl =
  158         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
  180   const CXXRecordDecl *RD = Base.getBase();
tools/clang/lib/AST/VTableBuilder.cpp
   36   const CXXRecordDecl *DerivedClass;
   41   const CXXRecordDecl *VirtualBase;
   51   BaseOffset(const CXXRecordDecl *DerivedClass,
   52              const CXXRecordDecl *VirtualBase, CharUnits NonVirtualOffset)
   70     const CXXRecordDecl *VirtualBase;
   82   const CXXRecordDecl *MostDerivedClass;
   92   const CXXRecordDecl *LayoutClass;
  113   typedef llvm::DenseMap<std::pair<const CXXRecordDecl *, unsigned>,
  116   typedef llvm::DenseMap<const CXXRecordDecl *, unsigned> SubobjectCountMapTy;
  126   typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
  134   FinalOverriders(const CXXRecordDecl *MostDerivedClass,
  136                   const CXXRecordDecl *LayoutClass);
  157 FinalOverriders::FinalOverriders(const CXXRecordDecl *MostDerivedClass,
  159                                  const CXXRecordDecl *LayoutClass)
  195       const CXXRecordDecl *OverriderRD = Method.Method->getParent();
  219                                     const CXXRecordDecl *DerivedRD,
  224   const CXXRecordDecl *VirtualBase = nullptr;
  245     const CXXRecordDecl *Base = Element.Base->getType()->getAsCXXRecordDecl();
  258                                     const CXXRecordDecl *BaseRD,
  259                                     const CXXRecordDecl *DerivedRD) {
  314   const CXXRecordDecl *DerivedRD =
  315     cast<CXXRecordDecl>(cast<RecordType>(CanDerivedReturnType)->getDecl());
  317   const CXXRecordDecl *BaseRD =
  318     cast<CXXRecordDecl>(cast<RecordType>(CanBaseReturnType)->getDecl());
  329   const CXXRecordDecl *RD = Base.getBase();
  347     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
  379   const CXXRecordDecl *RD = Base.getBase();
  383     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
  534   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits>
  540   const CXXRecordDecl *MostDerivedClass;
  545   const CXXRecordDecl *LayoutClass;
  555   llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBases;
  578   void AddVBaseOffsets(const CXXRecordDecl *Base,
  586   VCallAndVBaseOffsetBuilder(const CXXRecordDecl *MostDerivedClass,
  587                              const CXXRecordDecl *LayoutClass,
  624   if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
  673   const CXXRecordDecl *RD = Base.getBase();
  676   const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
  724     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
  738 VCallAndVBaseOffsetBuilder::AddVBaseOffsets(const CXXRecordDecl *RD,
  745     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
  774   typedef llvm::SmallSetVector<const CXXRecordDecl *, 8>
  777   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits>
  790   const CXXRecordDecl *MostDerivedClass;
  803   const CXXRecordDecl *LayoutClass;
  813   llvm::DenseMap<const CXXRecordDecl *, VCallOffsetMap> VCallOffsetsForVBases;
  883   typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
  931                        const CXXRecordDecl *FirstBaseInPrimaryBaseChain,
  938                   const CXXRecordDecl *FirstBaseInPrimaryBaseChain,
  969   void DeterminePrimaryVirtualBases(const CXXRecordDecl *RD,
  975   void LayoutVTablesForVirtualBases(const CXXRecordDecl *RD,
  990                        const CXXRecordDecl *MostDerivedClass,
  993                        const CXXRecordDecl *LayoutClass)
 1202   const CXXRecordDecl *BaseRD = Base.getBase();
 1203   const CXXRecordDecl *DerivedRD = Derived.getBase();
 1342     const CXXRecordDecl *FirstBaseInPrimaryBaseChain,
 1360   const CXXRecordDecl *RD = FirstBaseInPrimaryBaseChain;
 1367     const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
 1402 typedef llvm::SmallSetVector<const CXXRecordDecl *, 8> BasesSetVectorTy;
 1413   for (const CXXRecordDecl *PrimaryBase :
 1428     const CXXRecordDecl *FirstBaseInPrimaryBaseChain,
 1440   const CXXRecordDecl *RD = Base.getBase();
 1443   if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
 1665   const CXXRecordDecl *RD = Base.getBase();
 1694     const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
 1728   const CXXRecordDecl *RD = Base.getBase();
 1730   const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
 1737     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
 1778     const CXXRecordDecl *RD, CharUnits OffsetInLayoutClass,
 1783   if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
 1811     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
 1834     const CXXRecordDecl *RD, VisitedVirtualBasesSetTy &VBases) {
 1840     const CXXRecordDecl *BaseDecl = B.getType()->getAsCXXRecordDecl();
 2050           const CXXRecordDecl *RD = I.second.getBase();
 2229   const CXXRecordDecl *RD = cast<CXXMethodDecl>(GD.getDecl())->getParent();
 2239 ItaniumVTableContext::getVirtualBaseOffsetOffset(const CXXRecordDecl *RD,
 2240                                                  const CXXRecordDecl *VBase) {
 2277 ItaniumVTableContext::computeVTableRelatedInformation(const CXXRecordDecl *RD) {
 2300   const CXXRecordDecl *VBase =
 2316     const CXXRecordDecl *MostDerivedClass, CharUnits MostDerivedClassOffset,
 2317     bool MostDerivedClassIsVirtual, const CXXRecordDecl *LayoutClass) {
 2384   const CXXRecordDecl *MostDerivedClass;
 2486                   const CXXRecordDecl *LastVBase,
 2522                  const CXXRecordDecl *MostDerivedClass, const VPtrInfo &Which)
 2671       const CXXRecordDecl *PrevRD = Element.Class,
 2854     const CXXRecordDecl *RD,
 2885 static bool isDirectVBase(const CXXRecordDecl *Base, const CXXRecordDecl *RD) {
 2885 static bool isDirectVBase(const CXXRecordDecl *Base, const CXXRecordDecl *RD) {
 2894                                 const CXXRecordDecl *LastVBase,
 2896   const CXXRecordDecl *RD = Base.getBase();
 2905   const CXXRecordDecl *NextBase = nullptr, *NextLastVBase = LastVBase;
 2916   } else if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
 3053   for (const CXXRecordDecl *Elem :
 3216 static bool setsIntersect(const llvm::SmallPtrSet<const CXXRecordDecl *, 4> &A,
 3217                           ArrayRef<const CXXRecordDecl *> B) {
 3218   for (const CXXRecordDecl *Decl : B) {
 3249                                                 const CXXRecordDecl *RD,
 3260   llvm::SmallPtrSet<const CXXRecordDecl*, 4> VBasesSeen;
 3262     const CXXRecordDecl *Base = B.getType()->getAsCXXRecordDecl();
 3303       if (const CXXRecordDecl *VB = P->getVBaseWithVPtr())
 3379                                  const CXXRecordDecl *RD, CharUnits Offset,
 3391     const CXXRecordDecl *Base = BS.getType()->getAsCXXRecordDecl();
 3419                                      const CXXRecordDecl *RD,
 3425     const CXXRecordDecl *Base = BSO.getBase();
 3451                                         const CXXRecordDecl *RD,
 3466     const CXXRecordDecl *TopLevelRD = SpecificPath.begin()->getBase();
 3485       const CXXRecordDecl *OverridingParent = OverridingMethod->getParent();
 3521                                         const CXXRecordDecl *RD,
 3555     const CXXRecordDecl *RD) {
 3603     const CXXRecordDecl *RD, const MethodVFTableLocationsTy &NewMethods,
 3662     const CXXRecordDecl *RD) {
 3679   if (const CXXRecordDecl *VBPtrBase = Layout.getBaseSharingVBPtr()) {
 3692     const CXXRecordDecl *CurVBase = VB.getType()->getAsCXXRecordDecl();
 3700 unsigned MicrosoftVTableContext::getVBTableIndex(const CXXRecordDecl *Derived,
 3701                                                  const CXXRecordDecl *VBase) {
 3708 MicrosoftVTableContext::enumerateVBTables(const CXXRecordDecl *RD) {
 3713 MicrosoftVTableContext::getVFPtrOffsets(const CXXRecordDecl *RD) {
 3721 MicrosoftVTableContext::getVFTableLayout(const CXXRecordDecl *RD,
 3743   const CXXRecordDecl *RD = cast<CXXMethodDecl>(GD.getDecl())->getParent();
tools/clang/lib/ASTMatchers/ASTMatchFinder.cpp
  437   bool classIsDerivedFrom(const CXXRecordDecl *Declaration,
  828 static CXXRecordDecl *
  830   if (auto *RD = TypeNode->getAsCXXRecordDecl())
  852 bool MatchASTVisitor::classIsDerivedFrom(const CXXRecordDecl *Declaration,
  867     CXXRecordDecl *ClassDecl = getAsCXXRecordDeclOrPrimaryTemplate(TypeNode);
tools/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
  569 const internal::VariadicDynCastAllOfMatcher<Decl, CXXRecordDecl> cxxRecordDecl;
tools/clang/lib/ASTMatchers/Dynamic/Marshallers.h
   75     return Value.isMatcher() && Value.getMatcher().hasTypedMatcher<T>();
   78   static ast_matchers::internal::Matcher<T> get(const VariantValue &Value) {
   79     return Value.getMatcher().getTypedMatcher<T>();
   83     return ArgKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  361     RetTypes.push_back(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  466       ast_matchers::internal::VariadicDynCastAllOfMatcher<BaseT, DerivedT> Func,
  469         DerivedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<DerivedT>()) {
  778     ast_matchers::internal::VariadicDynCastAllOfMatcher<BaseT, DerivedT>
tools/clang/lib/Analysis/AnalysisDeclContext.cpp
  164   const CXXRecordDecl *parent = CXXMethod->getParent();
tools/clang/lib/Analysis/BodyFarm.cpp
  277                                               CXXRecordDecl *CallbackDecl,
  341   CXXRecordDecl *CallbackRecordDecl = CallbackType->getAsCXXRecordDecl();
tools/clang/lib/Analysis/CFG.cpp
  870   void appendDeleteDtor(CFGBlock *B, CXXRecordDecl *RD, CXXDeleteExpr *DE) {
 1882   const CXXRecordDecl *RD = DD->getParent();
 1889     const CXXRecordDecl *CD = VI.getType()->getAsCXXRecordDecl();
 1899       const CXXRecordDecl *CD = BI.getType()->getAsCXXRecordDecl();
 1917     if (const CXXRecordDecl *CD = QT->getAsCXXRecordDecl())
 2009   if (const CXXRecordDecl *CD = QT->getAsCXXRecordDecl())
 4526     CXXRecordDecl *RD = Context->getBaseElementType(DTy)->getAsCXXRecordDecl();
 4984       const CXXRecordDecl *classDecl = ty->getAsCXXRecordDecl();
 4992       const CXXRecordDecl *classDecl =
 5521     const CXXRecordDecl *RD = DE.getCXXRecordDecl();
tools/clang/lib/Analysis/Consumed.cpp
  147   if (const CXXRecordDecl *RD = QT->getAsCXXRecordDecl())
  157   if (const CXXRecordDecl *RD = QT->getAsCXXRecordDecl())
  164   if (const CXXRecordDecl *RD = QT->getPointeeCXXRecordDecl())
 1207     const CXXRecordDecl *RD = ReturnType->getAsCXXRecordDecl();
tools/clang/lib/Analysis/PathDiagnostic.cpp
  905 static void describeClass(raw_ostream &Out, const CXXRecordDecl *D,
tools/clang/lib/Analysis/RetainSummaryManager.cpp
  210       if (CXXRecordDecl *RD = PT->getAsCXXRecordDecl())
  221   const auto *RD = QT->getAsCXXRecordDecl();
  239     const CXXRecordDecl *PD = RetTy->getPointeeType()->getAsCXXRecordDecl();
  264     const CXXRecordDecl *Parent = MD->getParent();
  769     const CXXRecordDecl *Parent = MD->getParent();
tools/clang/lib/Analysis/ThreadSafety.cpp
 1813       const CXXRecordDecl* PD = CD->getParent();
 2105 findConstructorForByValueReturn(const CXXRecordDecl *RD) {
 2159         auto *RD = E->getType()->getAsCXXRecordDecl();
tools/clang/lib/CodeGen/Address.h
  108 template <class U> inline U cast(CodeGen::Address addr) {
tools/clang/lib/CodeGen/CGBlocks.cpp
  394   const auto *record = cast<CXXRecordDecl>(recordType->getDecl());
  394   const auto *record = cast<CXXRecordDecl>(recordType->getDecl());
  641       if (const CXXRecordDecl *record = VT->getAsCXXRecordDecl()) {
 1802   if (const auto *RD = T->getAsCXXRecordDecl())
 2622   if (const CXXRecordDecl *record = type->getAsCXXRecordDecl()) {
tools/clang/lib/CodeGen/CGBuiltin.cpp
 1486   const auto *Record = Ty->getAsCXXRecordDecl();
tools/clang/lib/CodeGen/CGCXX.cpp
   53   const CXXRecordDecl *Class = D->getParent();
   75   const CXXRecordDecl *UniqueBase = nullptr;
   82     const auto *Base =
   83         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
  249                                           const CXXRecordDecl *RD) {
  285   const auto *RD = cast<CXXRecordDecl>(RT->getDecl());
  285   const auto *RD = cast<CXXRecordDecl>(RT->getDecl());
  299                                             const CXXRecordDecl *RD) {
tools/clang/lib/CodeGen/CGCXXABI.cpp
   49   const auto *RD =
   50       cast<CXXRecordDecl>(MPT->getClass()->castAs<RecordType>()->getDecl());
  243   const CXXRecordDecl *derivedClass =
  256   ArrayRef<const CXXRecordDecl*> Path = MP.getMemberPointerPath();
  258   const CXXRecordDecl *RD = cast<CXXRecordDecl>(MPD->getDeclContext());
  258   const CXXRecordDecl *RD = cast<CXXRecordDecl>(MPD->getDeclContext());
  260     const CXXRecordDecl *Base = RD;
  261     const CXXRecordDecl *Derived = Path[I];
  275                                         const CXXRecordDecl *RD) {
  312 std::vector<CharUnits> CGCXXABI::getVBPtrOffsets(const CXXRecordDecl *RD) {
tools/clang/lib/CodeGen/CGCXXABI.h
  140   virtual RecordArgABI getRecordArgABI(const CXXRecordDecl *RD) const = 0;
  238   virtual bool canSpeculativelyEmitVTable(const CXXRecordDecl *RD) const = 0;
  275                                                  const CXXRecordDecl *ClassDecl,
  276                                         const CXXRecordDecl *BaseClassDecl) = 0;
  279                                                           const CXXRecordDecl *RD);
  285                                             const CXXRecordDecl *RD) {}
  332   virtual const CXXRecordDecl *
  385                                      const CXXRecordDecl *RD) = 0;
  393   virtual bool doStructorsInitializeVPtrs(const CXXRecordDecl *VTableClass) = 0;
  398                         const CXXRecordDecl *VTableClass) = 0;
  403   getVTableAddressPointInStructor(CodeGenFunction &CGF, const CXXRecordDecl *RD,
  405                                   const CXXRecordDecl *NearestVBase) = 0;
  411                                     const CXXRecordDecl *VTableClass) = 0;
  415   virtual llvm::GlobalVariable *getAddrOfVTable(const CXXRecordDecl *RD,
  441   virtual void emitVirtualInheritanceTables(const CXXRecordDecl *RD) = 0;
  462   virtual std::vector<CharUnits> getVBPtrOffsets(const CXXRecordDecl *RD);
  596   virtual std::pair<llvm::Value *, const CXXRecordDecl *>
  598                 const CXXRecordDecl *RD) = 0;
tools/clang/lib/CodeGen/CGCall.cpp
   73 CanQualType CodeGenTypes::DeriveThisType(const CXXRecordDecl *RD,
  250 CodeGenTypes::arrangeCXXMethodType(const CXXRecordDecl *RD,
  288     const CXXRecordDecl *ThisType = TheCXXABI.getThisArgumentTypeForMethod(MD);
  545   const CXXRecordDecl *RD = CD->getParent();
  935       if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
  935       if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 3029   const CXXRecordDecl *RD = type->getAsCXXRecordDecl();
 3590     if (const auto *RD = type->getAsCXXRecordDecl())
tools/clang/lib/CodeGen/CGClass.cpp
   36 CharUnits CodeGenModule::getClassPointerAlignment(const CXXRecordDecl *RD) {
   56                                            const CXXRecordDecl *derivedClass,
   57                                            const CXXRecordDecl *vbaseClass) {
   71                                          const CXXRecordDecl *baseDecl,
  150     const CXXRecordDecl *DerivedClass, CastExpr::path_const_iterator Start,
  155   const CXXRecordDecl *RD = DerivedClass;
  164     const auto *BaseDecl =
  165         cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
  177 CodeGenModule::GetNonVirtualBaseClassOffset(const CXXRecordDecl *ClassDecl,
  200                                                    const CXXRecordDecl *Derived,
  201                                                    const CXXRecordDecl *Base,
  230                                 const CXXRecordDecl *derivedClass,
  231                                 const CXXRecordDecl *nearestVBase) {
  269     Address Value, const CXXRecordDecl *Derived,
  276   const CXXRecordDecl *VBase = nullptr;
  283     VBase = cast<CXXRecordDecl>(
  377                                           const CXXRecordDecl *Derived,
  443   const CXXRecordDecl *RD = cast<CXXMethodDecl>(CurCodeDecl)->getParent();
  444   const CXXRecordDecl *Base = cast<CXXMethodDecl>(GD.getDecl())->getParent();
  487     const CXXRecordDecl *BaseClass;
  489     CallBaseDtor(const CXXRecordDecl *Base, bool BaseIsVirtual)
  493       const CXXRecordDecl *DerivedClass =
  534                                 const CXXRecordDecl *ClassDecl,
  542   const auto *BaseClassDecl =
  543       cast<CXXRecordDecl>(BaseType->castAs<RecordType>()->getDecl());
  607                                   const CXXRecordDecl *ClassDecl,
  760   const CXXRecordDecl *ClassDecl =
  899     FieldMemcpyizer(CodeGenFunction &CGF, const CXXRecordDecl *ClassDecl,
  976     const CXXRecordDecl *ClassDecl;
 1250   const auto *BaseClassDecl =
 1251       cast<CXXRecordDecl>(BaseType->castAs<RecordType>()->getDecl());
 1263   const CXXRecordDecl *ClassDecl = CD->getParent();
 1340                          const CXXRecordDecl *BaseClassDecl,
 1341                          const CXXRecordDecl *MostDerivedClassDecl)
 1360     const CXXRecordDecl *NonVirtualBase =
 1361       cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 1370       const CXXRecordDecl *VirtualBase =
 1371         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 1391   CXXRecordDecl *FieldClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 1391   CXXRecordDecl *FieldClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 1404   const CXXRecordDecl *ClassDecl = Dtor->getParent();
 1563       const CXXRecordDecl *ClassDecl = Dtor->getParent();
 1581     const CXXRecordDecl *ClassDecl = Dtor->getParent();
 1790         const CXXRecordDecl *ClassDecl = DD->getParent();
 1802   const CXXRecordDecl *ClassDecl = DD->getParent();
 1820       auto *BaseClassDecl =
 1821           cast<CXXRecordDecl>(Base.getType()->castAs<RecordType>()->getDecl());
 1849     CXXRecordDecl *BaseClassDecl = Base.getType()->getAsCXXRecordDecl();
 2021   const CXXRecordDecl *record = cast<CXXRecordDecl>(rtype->getDecl());
 2021   const CXXRecordDecl *record = cast<CXXRecordDecl>(rtype->getDecl());
 2112   const CXXRecordDecl *ClassDecl = D->getParent();
 2293 void CodeGenFunction::EmitVTableAssumptionLoads(const CXXRecordDecl *ClassDecl,
 2403   const CXXRecordDecl *ClassDecl = Ctor->getParent();
 2446   CXXRecordDecl *ClassDecl = T->getAsCXXRecordDecl();
 2518                                         const CXXRecordDecl *NearestVBase,
 2521                                         const CXXRecordDecl *VTableClass,
 2532   const CXXRecordDecl *RD = Base.getBase();
 2536     auto *BaseDecl =
 2537         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 2574 void CodeGenFunction::InitializeVTablePointers(const CXXRecordDecl *RD) {
 2590                                            const CXXRecordDecl *RD) {
 2612 static const CXXRecordDecl *
 2613 LeastDerivedClassWithSameLayout(const CXXRecordDecl *RD) {
 2638 void CodeGenFunction::EmitTypeMetadataCodeForVCall(const CXXRecordDecl *RD,
 2658 void CodeGenFunction::EmitVTablePtrCheckForCall(const CXXRecordDecl *RD,
 2680   const CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(ClassTy->getDecl());
 2680   const CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(ClassTy->getDecl());
 2714 void CodeGenFunction::EmitVTablePtrCheck(const CXXRecordDecl *RD,
 2788 bool CodeGenFunction::ShouldEmitVTableTypeCheckedLoad(const CXXRecordDecl *RD) {
 2806     const CXXRecordDecl *RD, llvm::Value *VTable, uint64_t VTableByteOffset) {
 2876   const CXXRecordDecl *Lambda = variable->getType()->getAsCXXRecordDecl();
 2904   const CXXRecordDecl *Lambda = MD->getParent();
tools/clang/lib/CodeGen/CGDebugInfo.cpp
  891     return isa<CXXRecordDecl>(TD) || isa<EnumDecl>(TD);
  943   if (const auto *RD = dyn_cast<CXXRecordDecl>(TD))
  943   if (const auto *RD = dyn_cast<CXXRecordDecl>(TD))
 1302     const CXXRecordDecl *CXXDecl, SmallVectorImpl<llvm::Metadata *> &elements,
 1310   for (CXXRecordDecl::capture_const_iterator I = CXXDecl->captures_begin(),
 1411   const auto *CXXDecl = dyn_cast<CXXRecordDecl>(record);
 1411   const auto *CXXDecl = dyn_cast<CXXRecordDecl>(record);
 1488   const CXXRecordDecl *RD = ThisPtr->getPointeeCXXRecordDecl();
 1530 static bool isFunctionLocalClass(const CXXRecordDecl *RD) {
 1531   if (const auto *NRD = dyn_cast<CXXRecordDecl>(RD->getDeclContext()))
 1531   if (const auto *NRD = dyn_cast<CXXRecordDecl>(RD->getDeclContext()))
 1645     const CXXRecordDecl *RD, llvm::DIFile *Unit,
 1682 void CGDebugInfo::CollectCXXBases(const CXXRecordDecl *RD, llvm::DIFile *Unit,
 1685   llvm::DenseSet<CanonicalDeclPtr<const CXXRecordDecl>> SeenTypes;
 1698     const CXXRecordDecl *RD, llvm::DIFile *Unit,
 1700     const CXXRecordDecl::base_class_const_range &Bases,
 1701     llvm::DenseSet<CanonicalDeclPtr<const CXXRecordDecl>> &SeenTypes,
 1705     const auto *Base =
 1706         cast<CXXRecordDecl>(BI.getType()->castAs<RecordType>()->getDecl());
 1914 StringRef CGDebugInfo::getVTableName(const CXXRecordDecl *RD) {
 1971 void CGDebugInfo::CollectVTableInfo(const CXXRecordDecl *RD, llvm::DIFile *Unit,
 2084 static bool isClassOrMethodDLLImport(const CXXRecordDecl *RD) {
 2101   if (auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD)) {
 2126   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 2152 static bool hasExplicitMemberDefinition(CXXRecordDecl::method_iterator I,
 2153                                         CXXRecordDecl::method_iterator End) {
 2181   const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
 2181   const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
 2249   if (const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD))
 2249   if (const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD))
 2264   const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
 2264   const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
 2935 void CGDebugInfo::completeUnusedClass(const CXXRecordDecl &D) {
 3140   if (auto CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 3193 void CGDebugInfo::CollectContainingType(const CXXRecordDecl *RD,
 3198   if (const CXXRecordDecl *PBase = RL.getPrimaryBase()) {
 3202       const CXXRecordDecl *PBT = BRL.getPrimaryBase();
 4279       else if (auto *RDecl = dyn_cast<CXXRecordDecl>(blockDecl->getParent()))
tools/clang/lib/CodeGen/CGDebugInfo.h
  168   void CollectContainingType(const CXXRecordDecl *RD,
  229   void CollectCXXMemberFunctions(const CXXRecordDecl *Decl, llvm::DIFile *F,
  236   void CollectCXXBases(const CXXRecordDecl *Decl, llvm::DIFile *F,
  243       const CXXRecordDecl *RD, llvm::DIFile *Unit,
  245       const CXXRecordDecl::base_class_const_range &Bases,
  246       llvm::DenseSet<CanonicalDeclPtr<const CXXRecordDecl>> &SeenTypes,
  291   void CollectRecordLambdaFields(const CXXRecordDecl *CXXDecl,
  309   void CollectVTableInfo(const CXXRecordDecl *Decl, llvm::DIFile *F,
  504   void completeUnusedClass(const CXXRecordDecl &D);
  664   StringRef getVTableName(const CXXRecordDecl *Decl);
tools/clang/lib/CodeGen/CGDecl.cpp
 1454         const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD);
 1454         const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD);
tools/clang/lib/CodeGen/CGDeclCXX.cpp
  105   const CXXRecordDecl *Record = Type->getAsCXXRecordDecl();
tools/clang/lib/CodeGen/CGExpr.cpp
  322     auto *ClassDecl = cast<CXXRecordDecl>(RT->getDecl());
  322     auto *ClassDecl = cast<CXXRecordDecl>(RT->getDecl());
  639   CXXRecordDecl *RD = Ty->getAsCXXRecordDecl();
 1394     if (const auto *RD = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 1394     if (const auto *RD = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 3967   const auto *RD = Type.getTypePtr()->getAsCXXRecordDecl();
 4061   if (auto *ClassDef = dyn_cast<CXXRecordDecl>(rec)) {
 4367     auto *DerivedClassDecl = cast<CXXRecordDecl>(DerivedClassTy->getDecl());
 4367     auto *DerivedClassDecl = cast<CXXRecordDecl>(DerivedClassTy->getDecl());
 4387     auto *DerivedClassDecl = cast<CXXRecordDecl>(DerivedClassTy->getDecl());
 4387     auto *DerivedClassDecl = cast<CXXRecordDecl>(DerivedClassTy->getDecl());
tools/clang/lib/CodeGen/CGExprAgg.cpp
  238   if (isa<CXXRecordDecl>(Record) &&
  239       (cast<CXXRecordDecl>(Record)->hasNonTrivialCopyConstructor() ||
  240        !cast<CXXRecordDecl>(Record)->hasTrivialDestructor()))
 1299   CXXRecordDecl::field_iterator CurField = E->getLambdaClass()->field_begin();
 1512   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(record)) {
 1512   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(record)) {
 1517       auto *BaseRD = Base.getType()->getAsCXXRecordDecl();
 1769       if (auto *CXXRD = dyn_cast<CXXRecordDecl>(SD))
 1769       if (auto *CXXRD = dyn_cast<CXXRecordDecl>(SD))
 1817       const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 1817       const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 1894     const CXXRecordDecl *RD, const CXXRecordDecl *BaseRD, bool IsVirtual) {
 1894     const CXXRecordDecl *RD, const CXXRecordDecl *BaseRD, bool IsVirtual) {
 1924       CXXRecordDecl *Record = cast<CXXRecordDecl>(RT->getDecl());
 1924       CXXRecordDecl *Record = cast<CXXRecordDecl>(RT->getDecl());
tools/clang/lib/CodeGen/CGExprCXX.cpp
   46   const CXXRecordDecl *RD =
  169 static CXXRecordDecl *getCXXRecord(const Expr *E) {
  174   return cast<CXXRecordDecl>(Ty->getDecl());
  218     const CXXRecordDecl *BestDynamicDecl = Base->getBestDynamicClassType();
  221     const CXXRecordDecl *DevirtualizedClass = DevirtualizedMethod->getParent();
  382       const CXXRecordDecl *RD;
  423   const auto *RD =
  424       cast<CXXRecordDecl>(MPT->getClass()->castAs<RecordType>()->getDecl());
  480                                             const CXXRecordDecl *Base) {
 1190         if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RType->getDecl()))
 1190         if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RType->getDecl()))
 1877     CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 1877     CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 1889           const CXXRecordDecl *DevirtualizedClass =
tools/clang/lib/CodeGen/CGExprConstant.cpp
  568              const CXXRecordDecl *VTableClass, CharUnits BaseOffset);
  671   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
  671   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
  748   BaseInfo(const CXXRecordDecl *Decl, CharUnits Offset, unsigned Index)
  752   const CXXRecordDecl *Decl;
  762                                const CXXRecordDecl *VTableClass,
  766   if (const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD)) {
  766   if (const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD)) {
  781     for (CXXRecordDecl::base_class_const_iterator Base = CD->bases_begin(),
  784       const CXXRecordDecl *BD = Base->getType()->getAsCXXRecordDecl();
  866   const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD);
  866   const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD);
 1274     const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 1274     const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 2189                                                const CXXRecordDecl *base);
 2202   auto CXXR = dyn_cast<CXXRecordDecl>(record);
 2212       const CXXRecordDecl *base =
 2213         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 2249       const CXXRecordDecl *base =
 2250         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 2278                                                const CXXRecordDecl *base) {
 2325 CodeGenModule::EmitNullConstantForBase(const CXXRecordDecl *Record) {
tools/clang/lib/CodeGen/CGExprScalar.cpp
 2062     const CXXRecordDecl *DerivedClassDecl = DestTy->getPointeeCXXRecordDecl();
 2715       CXXRecordDecl *BaseRD = cast<CXXRecordDecl>(BaseRT->getDecl());
 2715       CXXRecordDecl *BaseRD = cast<CXXRecordDecl>(BaseRT->getDecl());
tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
 7798   void getPlainLayout(const CXXRecordDecl *RD,
 7808         llvm::PointerUnion<const CXXRecordDecl *, const FieldDecl *>, 4>
 7815       const auto *Base = I.getType()->getAsCXXRecordDecl();
 7828       const auto *Base = I.getType()->getAsCXXRecordDecl();
 7847     for (const llvm::PointerUnion<const CXXRecordDecl *, const FieldDecl *>
 7851       if (const auto *Base = Data.dyn_cast<const CXXRecordDecl *>())
 7851       if (const auto *Base = Data.dyn_cast<const CXXRecordDecl *>())
 8168     const auto *RD = VD->getType()
 8346       if (const auto *CRD =
 9618   if (const auto *RD = RDTy->getBaseElementTypeUnsafe()->getAsCXXRecordDecl()) {
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
 4856     const auto *RD = VD->getType()
tools/clang/lib/CodeGen/CGRecordLayout.h
  133   llvm::DenseMap<const CXXRecordDecl *, unsigned> NonVirtualBases;
  136   llvm::DenseMap<const CXXRecordDecl *, unsigned> CompleteObjectVirtualBases;
  190   unsigned getNonVirtualBaseLLVMFieldNo(const CXXRecordDecl *RD) const {
  197   unsigned getVirtualBaseIndex(const CXXRecordDecl *base) const {
tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
   83       const CXXRecordDecl *RD;
   89                const CXXRecordDecl *RD)
  142   llvm::Type *getStorageType(const CXXRecordDecl *RD) {
  181   bool hasOwnStorage(const CXXRecordDecl *Decl, const CXXRecordDecl *Query);
  181   bool hasOwnStorage(const CXXRecordDecl *Decl, const CXXRecordDecl *Query);
  196   const CXXRecordDecl *RD;
  205   llvm::DenseMap<const CXXRecordDecl *, unsigned> NonVirtualBases;
  206   llvm::DenseMap<const CXXRecordDecl *, unsigned> VirtualBases;
  219       RD(dyn_cast<CXXRecordDecl>(D)),
  484     const CXXRecordDecl *BaseDecl = Layout.getPrimaryBase();
  495     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  521       const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  534     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  556 bool CGRecordLowering::hasOwnStorage(const CXXRecordDecl *Decl,
  557                                      const CXXRecordDecl *Query) {
  740   if (isa<CXXRecordDecl>(D) && !D->isUnion() && !D->hasAttr<FinalAttr>()) {
tools/clang/lib/CodeGen/CGVTT.cpp
   22                    const CXXRecordDecl *MostDerivedClass,
   43                                   const CXXRecordDecl *RD) {
  105 llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {
  129 uint64_t CodeGenVTables::getSubVTTIndex(const CXXRecordDecl *RD,
  155 CodeGenVTables::getSecondaryVirtualPointerIndex(const CXXRecordDecl *RD,
  169     std::pair<const CXXRecordDecl *, BaseSubobject> Pair =
tools/clang/lib/CodeGen/CGVTables.cpp
  755 CodeGenVTables::GenerateConstructionVTable(const CXXRecordDecl *RD,
  817                                                 const CXXRecordDecl *RD) {
  826 CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {
  918 void CodeGenModule::EmitVTable(CXXRecordDecl *theClass) {
  923 CodeGenVTables::GenerateClassData(const CXXRecordDecl *RD) {
  943 bool CodeGenVTables::isVTableExternal(const CXXRecordDecl *RD) {
  978                                                    const CXXRecordDecl *RD) {
  997   for (const CXXRecordDecl *RD : DeferredVTables)
 1008 bool CodeGenModule::HasHiddenLTOVisibility(const CXXRecordDecl *RD) {
 1043 CodeGenModule::GetVCallVisibilityLevel(const CXXRecordDecl *RD) {
 1066 void CodeGenModule::EmitVTableTypeMetadata(const CXXRecordDecl *RD,
 1075   typedef std::pair<const CXXRecordDecl *, unsigned> AddressPoint;
tools/clang/lib/CodeGen/CGVTables.h
   40   typedef std::pair<const CXXRecordDecl *, BaseSubobject> BaseSubobjectPairTy;
   88   uint64_t getSubVTTIndex(const CXXRecordDecl *RD, BaseSubobject Base);
   92   uint64_t getSecondaryVirtualPointerIndex(const CXXRecordDecl *RD,
   98   GenerateConstructionVTable(const CXXRecordDecl *RD, const BaseSubobject &Base,
  105   llvm::GlobalVariable *GetAddrOfVTT(const CXXRecordDecl *RD);
  110                          const CXXRecordDecl *RD);
  119   void GenerateClassData(const CXXRecordDecl *RD);
  121   bool isVTableExternal(const CXXRecordDecl *RD);
tools/clang/lib/CodeGen/CodeGenABITypes.cpp
   49                               const CXXRecordDecl *RD,
tools/clang/lib/CodeGen/CodeGenAction.cpp
  334     void AssignInheritanceModel(CXXRecordDecl *RD) override {
  338     void HandleVTable(CXXRecordDecl *RD) override {
tools/clang/lib/CodeGen/CodeGenFunction.cpp
  140     const CXXRecordDecl *RD;
 1135     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 1135     if (const auto *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 1623       if (cast<CXXRecordDecl>(RT->getDecl())->isEmpty())
tools/clang/lib/CodeGen/CodeGenFunction.h
 1904     const CXXRecordDecl *NearestVBase;
 1906     const CXXRecordDecl *VTableClass;
 1914   typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
 1915   VPtrsVector getVTablePointers(const CXXRecordDecl *VTableClass);
 1917   void getVTablePointers(BaseSubobject Base, const CXXRecordDecl *NearestVBase,
 1920                          const CXXRecordDecl *VTableClass,
 1923   void InitializeVTablePointers(const CXXRecordDecl *ClassDecl);
 1928                             const CXXRecordDecl *VTableClass);
 1949   void EmitVTablePtrCheckForCall(const CXXRecordDecl *RD, llvm::Value *VTable,
 1954   void EmitVTablePtrCheck(const CXXRecordDecl *RD, llvm::Value *VTable,
 1960   void EmitTypeMetadataCodeForVCall(const CXXRecordDecl *RD,
 1966   bool ShouldEmitVTableTypeCheckedLoad(const CXXRecordDecl *RD);
 1969   llvm::Value *EmitVTableTypeCheckedLoad(const CXXRecordDecl *RD, llvm::Value *VTable,
 2334   AggValueSlot::Overlap_t getOverlapForBaseInit(const CXXRecordDecl *RD,
 2335                                                 const CXXRecordDecl *BaseRD,
 2464                                         const CXXRecordDecl *Derived,
 2465                                         const CXXRecordDecl *Base,
 2473                                 const CXXRecordDecl *Derived,
 2479                                    const CXXRecordDecl *Derived,
 2532   void EmitVTableAssumptionLoads(const CXXRecordDecl *ClassDecl, Address This);
 3649                                                const CXXRecordDecl *RD);
tools/clang/lib/CodeGen/CodeGenModule.cpp
  651 void CodeGenModule::RefreshTypeCacheForClass(const CXXRecordDecl *RD) {
  723     llvm::Instruction *I, const CXXRecordDecl *RD) {
 1465 std::vector<const CXXRecordDecl *>
 1466 CodeGenModule::getMostBaseClasses(const CXXRecordDecl *RD) {
 1467   llvm::SetVector<const CXXRecordDecl *> MostBases;
 1469   std::function<void (const CXXRecordDecl *)> CollectMostBases;
 1629     for (const CXXRecordDecl *Base : getMostBaseClasses(MD->getParent())) {
 2151   for (const CXXRecordDecl *RD : OpportunisticVTables) {
 2567     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 2567     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 3246         if (isa<CXXRecordDecl>(FD->getLexicalDeclContext())) {
 3386     if (const CXXRecordDecl *Record
 3538       const auto *Record =
 5069         isa<CXXRecordDecl>(InitVD->getLexicalDeclContext())) {
 5270           DebugInfo->completeUnusedClass(cast<CXXRecordDecl>(*D));
 5273     for (auto *I : cast<CXXRecordDecl>(D)->decls())
 5274       if (isa<VarDecl>(I) || isa<CXXRecordDecl>(I))
 5847                                           const CXXRecordDecl *RD) {
tools/clang/lib/CodeGen/CodeGenModule.h
  375   std::vector<const CXXRecordDecl*> DeferredVTables;
  378   std::vector<const CXXRecordDecl *> OpportunisticVTables;
  761                                              const CXXRecordDecl *RD);
  862   CharUnits getClassPointerAlignment(const CXXRecordDecl *CD);
  866                               const CXXRecordDecl *Derived,
  867                               const CXXRecordDecl *VBase);
  873                                       const CXXRecordDecl *Class,
  877   computeNonVirtualBaseClassOffset(const CXXRecordDecl *DerivedClass,
  884   GetNonVirtualBaseClassOffset(const CXXRecordDecl *ClassDecl,
 1081   llvm::Constant *EmitNullConstantForBase(const CXXRecordDecl *Record);
 1166   void EmitVTable(CXXRecordDecl *Class);
 1168   void RefreshTypeCacheForClass(const CXXRecordDecl *Class);
 1188   llvm::GlobalVariable::LinkageTypes getVTableLinkage(const CXXRecordDecl *RD);
 1246   void addDeferredVTable(const CXXRecordDecl *RD) {
 1292   bool HasHiddenLTOVisibility(const CXXRecordDecl *RD);
 1299   GetVCallVisibilityLevel(const CXXRecordDecl *RD);
 1302   void EmitVTableTypeMetadata(const CXXRecordDecl *RD,
 1332                              const CXXRecordDecl *RD);
 1339   std::vector<const CXXRecordDecl *>
 1340   getMostBaseClasses(const CXXRecordDecl *RD);
tools/clang/lib/CodeGen/CodeGenTBAA.cpp
  251     if (const CXXRecordDecl *Decl = dyn_cast<CXXRecordDecl>(RD))
  251     if (const CXXRecordDecl *Decl = dyn_cast<CXXRecordDecl>(RD))
tools/clang/lib/CodeGen/CodeGenTypes.cpp
  136   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
  136   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
  278 void CodeGenTypes::RefreshTypeCacheForClass(const CXXRecordDecl *RD) {
  744   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
  744   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
tools/clang/lib/CodeGen/CodeGenTypes.h
  128   CanQualType DeriveThisType(const CXXRecordDecl *RD, const CXXMethodDecl *MD);
  168   void RefreshTypeCacheForClass(const CXXRecordDecl *RD);
  256   const CGFunctionInfo &arrangeCXXMethodType(const CXXRecordDecl *RD,
tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
   44   llvm::DenseMap<const CXXRecordDecl *, llvm::GlobalVariable *> VTables;
   69   RecordArgABI getRecordArgABI(const CXXRecordDecl *RD) const override {
  170   void EmitFundamentalRTTIDescriptors(const CXXRecordDecl *RD);
  200                               const CXXRecordDecl *ClassDecl,
  201                               const CXXRecordDecl *BaseClassDecl) override;
  235                              const CXXRecordDecl *RD) override;
  240   bool doStructorsInitializeVPtrs(const CXXRecordDecl *VTableClass) override {
  246                         const CXXRecordDecl *VTableClass) override;
  249       CodeGenFunction &CGF, const CXXRecordDecl *VTableClass,
  250       BaseSubobject Base, const CXXRecordDecl *NearestVBase) override;
  253       CodeGenFunction &CGF, const CXXRecordDecl *VTableClass,
  254       BaseSubobject Base, const CXXRecordDecl *NearestVBase);
  258                                     const CXXRecordDecl *VTableClass) override;
  260   llvm::GlobalVariable *getAddrOfVTable(const CXXRecordDecl *RD,
  272   void emitVirtualInheritanceTables(const CXXRecordDecl *RD) override;
  274   bool canSpeculativelyEmitVTable(const CXXRecordDecl *RD) const override;
  275   bool canSpeculativelyEmitVTableAsBaseClass(const CXXRecordDecl *RD) const;
  404   std::pair<llvm::Value *, const CXXRecordDecl *>
  406                 const CXXRecordDecl *RD) override;
  409    bool hasAnyUnusedVirtualInlineFunction(const CXXRecordDecl *RD) const {
  435   bool isVTableHidden(const CXXRecordDecl *RD) const {
  441         const CXXRecordDecl *RTTIDecl = VtableComponent.getRTTIDecl();
  583   auto *RD =
  584       cast<CXXRecordDecl>(MPT->getClass()->castAs<RecordType>()->getDecl());
  739     CXXRecordDecl *RD = MPT->getClass()->getAsCXXRecordDecl();
  752       for (const CXXRecordDecl *Base : CGM.getMostBaseClasses(RD)) {
 1148   const CXXRecordDecl *RD = FI.getReturnType()->getAsCXXRecordDecl();
 1180     auto *ClassDecl =
 1181         cast<CXXRecordDecl>(ElementType->castAs<RecordType>()->getDecl());
 1266     CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordTy->getDecl());
 1266     CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordTy->getDecl());
 1311                                    const CXXRecordDecl *Src,
 1312                                    const CXXRecordDecl *Dst) {
 1383   auto *ClassDecl =
 1384       cast<CXXRecordDecl>(SrcRecordTy->castAs<RecordType>()->getDecl());
 1411   const CXXRecordDecl *SrcDecl = SrcRecordTy->getAsCXXRecordDecl();
 1412   const CXXRecordDecl *DestDecl = DestRecordTy->getAsCXXRecordDecl();
 1449   auto *ClassDecl =
 1450       cast<CXXRecordDecl>(SrcRecordTy->castAs<RecordType>()->getDecl());
 1481                                          const CXXRecordDecl *ClassDecl,
 1482                                          const CXXRecordDecl *BaseClassDecl) {
 1634                                           const CXXRecordDecl *RD) {
 1683     CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base,
 1684     const CXXRecordDecl *NearestVBase) {
 1696                                      const CXXRecordDecl *VTableClass) {
 1717     CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base,
 1718     const CXXRecordDecl *NearestVBase) {
 1736     BaseSubobject Base, const CXXRecordDecl *VTableClass) {
 1740 llvm::GlobalVariable *ItaniumCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
 1843 void ItaniumCXXABI::emitVirtualInheritanceTables(const CXXRecordDecl *RD) {
 1850     const CXXRecordDecl *RD) const {
 1877       auto *BRD = B.getType()->getAsCXXRecordDecl();
 1889 bool ItaniumCXXABI::canSpeculativelyEmitVTable(const CXXRecordDecl *RD) const {
 1896     auto *BRD = B.getType()->getAsCXXRecordDecl();
 2777   void BuildSIClassTypeInfo(const CXXRecordDecl *RD);
 2782   void BuildVMIClassTypeInfo(const CXXRecordDecl *RD);
 2896     const CXXRecordDecl *RD = Ty->getAsCXXRecordDecl();
 3051     const CXXRecordDecl *RD = cast<CXXRecordDecl>(RecordTy->getDecl());
 3051     const CXXRecordDecl *RD = cast<CXXRecordDecl>(RecordTy->getDecl());
 3121 static bool CanUseSingleInheritance(const CXXRecordDecl *RD) {
 3127   CXXRecordDecl::base_class_const_iterator Base = RD->bases_begin();
 3138   auto *BaseDecl =
 3139       cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
 3211     const CXXRecordDecl *RD =
 3212       cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl());
 3306       const CXXRecordDecl *RD = cast<CXXRecordDecl>(Record->getDecl());
 3306       const CXXRecordDecl *RD = cast<CXXRecordDecl>(Record->getDecl());
 3455     const CXXRecordDecl *RD =
 3456       cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl());
 3576 void ItaniumRTTIBuilder::BuildSIClassTypeInfo(const CXXRecordDecl *RD) {
 3589     llvm::SmallPtrSet<const CXXRecordDecl *, 16> NonVirtualBases;
 3590     llvm::SmallPtrSet<const CXXRecordDecl *, 16> VirtualBases;
 3602   auto *BaseDecl =
 3603       cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
 3634 static unsigned ComputeVMIClassTypeInfoFlags(const CXXRecordDecl *RD) {
 3648 void ItaniumRTTIBuilder::BuildVMIClassTypeInfo(const CXXRecordDecl *RD) {
 3701     auto *BaseDecl =
 3702         cast<CXXRecordDecl>(Base.getType()->castAs<RecordType>()->getDecl());
 3819 void ItaniumCXXABI::EmitFundamentalRTTIDescriptors(const CXXRecordDecl *RD) {
 4369 std::pair<llvm::Value *, const CXXRecordDecl *>
 4371                              const CXXRecordDecl *RD) {
tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
   55   RecordArgABI getRecordArgABI(const CXXRecordDecl *RD) const override;
   92   std::vector<CharUnits> getVBPtrOffsets(const CXXRecordDecl *RD) override {
  123   llvm::GlobalVariable *getMSCompleteObjectLocator(const CXXRecordDecl *RD,
  154   bool canSpeculativelyEmitVTable(const CXXRecordDecl *RD) const override {
  160                             const CXXRecordDecl *ClassDecl,
  161                             const CXXRecordDecl *BaseClassDecl) override;
  165                                 const CXXRecordDecl *RD) override;
  171                                               const CXXRecordDecl *RD) override;
  227   const CXXRecordDecl *
  264   void emitVTableTypeMetadata(const VPtrInfo &Info, const CXXRecordDecl *RD,
  268                              const CXXRecordDecl *RD) override;
  275   bool doStructorsInitializeVPtrs(const CXXRecordDecl *VTableClass) override {
  281                         const CXXRecordDecl *VTableClass) override;
  284       CodeGenFunction &CGF, const CXXRecordDecl *VTableClass,
  285       BaseSubobject Base, const CXXRecordDecl *NearestVBase) override;
  289                                     const CXXRecordDecl *VTableClass) override;
  291   llvm::GlobalVariable *getAddrOfVTable(const CXXRecordDecl *RD,
  311   void emitVirtualInheritanceTables(const CXXRecordDecl *RD) override;
  314   getAddrOfVBTable(const VPtrInfo &VBT, const CXXRecordDecl *RD,
  318   getAddrOfVirtualDisplacementMap(const CXXRecordDecl *SrcRD,
  319                                   const CXXRecordDecl *DstRD) {
  335       const CXXRecordDecl *VBase = I.getType()->getAsCXXRecordDecl();
  360   void emitVBTableDefinition(const VPtrInfo &VBT, const CXXRecordDecl *RD,
  590   std::tuple<Address, llvm::Value *, const CXXRecordDecl *>
  597                                  const CXXRecordDecl *RD, Address Base,
  605                                         const CXXRecordDecl *RD,
  613   void EmitVBPtrStores(CodeGenFunction &CGF, const CXXRecordDecl *RD);
  616   const VBTableGlobals &enumerateVBTables(const CXXRecordDecl *RD);
  628     const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
  758   std::pair<llvm::Value *, const CXXRecordDecl *>
  760                 const CXXRecordDecl *RD) override;
  763   typedef std::pair<const CXXRecordDecl *, CharUnits> VFTableIdTy;
  771   llvm::SmallPtrSet<const CXXRecordDecl *, 4> DeferredVFTables;
  775   llvm::DenseMap<const CXXRecordDecl *, VBTableGlobals> VBTablesMap;
  806 MicrosoftCXXABI::getRecordArgABI(const CXXRecordDecl *RD) const {
  891 std::tuple<Address, llvm::Value *, const CXXRecordDecl *>
  895   const CXXRecordDecl *SrcDecl = SrcRecordTy->getAsCXXRecordDecl();
  907   const CXXRecordDecl *PolymorphicBase = nullptr;
  909     const CXXRecordDecl *BaseDecl = Base.getType()->getAsCXXRecordDecl();
  927   const CXXRecordDecl *SrcDecl = SrcRecordTy->getAsCXXRecordDecl();
  961   const CXXRecordDecl *SrcDecl = SrcRecordTy->getAsCXXRecordDecl();
 1022     CodeGenFunction &CGF, Address This, const CXXRecordDecl *ClassDecl,
 1023     const CXXRecordDecl *BaseClassDecl) {
 1055 static bool IsSizeGreaterThan128(const CXXRecordDecl *RD) {
 1059 static bool hasMicrosoftABIRestrictions(const CXXRecordDecl *RD) {
 1084   const CXXRecordDecl *RD = FI.getReturnType()->getAsCXXRecordDecl();
 1113                                                const CXXRecordDecl *RD) {
 1155     CodeGenFunction &CGF, const CXXRecordDecl *RD) {
 1178     const CXXRecordDecl *VBase = S.getType()->getAsCXXRecordDecl();
 1234                                       const CXXRecordDecl *RD) {
 1277   const CXXRecordDecl *Class = CD->getParent();
 1422     const CXXRecordDecl *Derived = MD->getParent();
 1423     const CXXRecordDecl *VBase = ML.VBase;
 1607                                              const CXXRecordDecl *RD,
 1633     const CXXRecordDecl *DerivedRD = Info.PathToIntroducingObject[I - 1];
 1634     const CXXRecordDecl *BaseRD = Info.PathToIntroducingObject[I];
 1655                                             const CXXRecordDecl *RD) {
 1687     CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base,
 1688     const CXXRecordDecl *NearestVBase) {
 1698                               const CXXRecordDecl *RD, const VPtrInfo &VFPtr,
 1706                                        const CXXRecordDecl *VTableClass) {
 1713     BaseSubobject Base, const CXXRecordDecl *VTableClass) {
 1719 llvm::GlobalVariable *MicrosoftCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
 1939 MicrosoftCXXABI::enumerateVBTables(const CXXRecordDecl *RD) {
 1942   llvm::DenseMap<const CXXRecordDecl*, VBTableGlobals>::iterator Entry;
 2037 void MicrosoftCXXABI::emitVirtualInheritanceTables(const CXXRecordDecl *RD) {
 2048 MicrosoftCXXABI::getAddrOfVBTable(const VPtrInfo &VBT, const CXXRecordDecl *RD,
 2078                                             const CXXRecordDecl *RD,
 2080   const CXXRecordDecl *ObjectWithVPtr = VBT.ObjectWithVPtr;
 2098     const CXXRecordDecl *VBase = I.getType()->getAsCXXRecordDecl();
 2603   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 2611   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 2636   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 2671                                        const CXXRecordDecl *RD,
 2705   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 2723   ArrayRef<const CXXRecordDecl *> MemberPointerPath = MP.getMemberPointerPath();
 2734     const CXXRecordDecl *SrcRD = cast<CXXRecordDecl>(MPD->getDeclContext());
 2734     const CXXRecordDecl *SrcRD = cast<CXXRecordDecl>(MPD->getDeclContext());
 2742     const CXXRecordDecl *PrevRD = SrcRD;
 2743     for (const CXXRecordDecl *PathElem : MemberPointerPath) {
 2744       const CXXRecordDecl *Base = nullptr;
 2745       const CXXRecordDecl *Derived = nullptr;
 2774   const CXXRecordDecl *RD = MD->getParent()->getMostRecentNonInjectedDecl();
 2839   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 2978     CodeGenFunction &CGF, const Expr *E, const CXXRecordDecl *RD,
 3041   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 3102   CXXRecordDecl *SrcRD = SrcTy->getMostRecentCXXRecordDecl();
 3103   CXXRecordDecl *DstRD = DstTy->getMostRecentCXXRecordDecl();
 3148   const CXXRecordDecl *SrcRD = SrcTy->getMostRecentCXXRecordDecl();
 3149   const CXXRecordDecl *DstRD = DstTy->getMostRecentCXXRecordDecl();
 3174   const CXXRecordDecl *DerivedClass = DerivedTy->getMostRecentCXXRecordDecl();
 3330   const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
 3436   MSRTTIClass(const CXXRecordDecl *RD) : RD(RD) {}
 3445   const CXXRecordDecl *RD, *VirtualRoot;
 3506   MSRTTIBuilder(MicrosoftCXXABI &ABI, const CXXRecordDecl *RD)
 3522   const CXXRecordDecl *RD;
 3532                                     const CXXRecordDecl *RD) {
 3541   llvm::SmallPtrSet<const CXXRecordDecl *, 8> VirtualBases;
 3542   llvm::SmallPtrSet<const CXXRecordDecl *, 8> UniqueBases;
 3543   llvm::SmallPtrSet<const CXXRecordDecl *, 8> AmbiguousBases;
 3713   if (const CXXRecordDecl *VBase = Info.getVBaseWithVPtr())
 3848 MicrosoftCXXABI::getMSCompleteObjectLocator(const CXXRecordDecl *RD,
 3900   const CXXRecordDecl *RD = CD->getParent();
 4006   CXXRecordDecl *RD = T->getAsCXXRecordDecl();
 4049   if (const CXXRecordDecl *RD = PointeeType->getAsCXXRecordDecl()) {
 4106   const CXXRecordDecl *MostDerivedClass = nullptr;
 4244   if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4293 std::pair<llvm::Value *, const CXXRecordDecl *>
 4295                                const CXXRecordDecl *RD) {
tools/clang/lib/CodeGen/ModuleBuilder.cpp
  279     void AssignInheritanceModel(CXXRecordDecl *RD) override {
  293     void HandleVTable(CXXRecordDecl *RD) override {
tools/clang/lib/CodeGen/SwiftCallingConv.cpp
  128   auto cxxRecord = dyn_cast<CXXRecordDecl>(record);
tools/clang/lib/CodeGen/TargetInfo.cpp
  141   const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
  141   const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
  163     if (!isa<CXXRecordDecl>(RT->getDecl()) &&
  502   if (isa<CXXRecordDecl>(RT->getDecl()))
  520   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
  520   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
  551   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
  551   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 1322 static bool addBaseAndFieldSizes(ASTContext &Context, const CXXRecordDecl *RD,
 1346   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 1346   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 1475   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 1475   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 2808     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 2808     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 2812         const auto *Base =
 2813             cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 3070     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 3070     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 3074         const auto *Base =
 3075             cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
 3555   if (auto CXXRD = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 4614     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 4614     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
 6220     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 6220     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 6386   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 6386   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 6636     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 6636     if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
tools/clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp
   66           if (const auto *RC = dyn_cast<CXXRecordDecl>(MD->getParent()))
   66           if (const auto *RC = dyn_cast<CXXRecordDecl>(MD->getParent()))
  167       HandleDecls(cast<CXXRecordDecl>(ND)->decls(), Symbols, RDO);
tools/clang/lib/Index/IndexBody.cpp
  167     CXXRecordDecl *RD = TD->getTemplatedDecl();
tools/clang/lib/Index/IndexDecl.cpp
  203       const CXXRecordDecl *Pattern = CTD->getTemplatedDecl();
tools/clang/lib/Index/IndexSymbol.cpp
  124     if (const CXXRecordDecl *CXXRec = dyn_cast<CXXRecordDecl>(D)) {
  124     if (const CXXRecordDecl *CXXRec = dyn_cast<CXXRecordDecl>(D)) {
  147     } else if (isa<CXXRecordDecl>(D->getDeclContext())) {
  180       if (const CXXRecordDecl *
  181             CXXRec = dyn_cast<CXXRecordDecl>(D->getDeclContext())) {
  337       if (const CXXRecordDecl *CXXRec =
  338               dyn_cast<CXXRecordDecl>(D->getDeclContext())) {
tools/clang/lib/Index/IndexTypeSourceInfo.cpp
   66       if (auto *CD = TL.getType()->getAsCXXRecordDecl()) {
  138                                            CXXRecordDecl *ResolvedClass,
  188     CXXRecordDecl *RD = TD->getTemplatedDecl();
  278       if (auto CXXRD = dyn_cast<CXXRecordDecl>(D)) {
tools/clang/lib/Index/IndexingContext.cpp
  159   } else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  159   } else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  196 static const CXXRecordDecl *
  201   else if (const auto *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext()))
  201   else if (const auto *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext()))
  214   } else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  214   } else if (const auto *RD = dyn_cast<CXXRecordDecl>(D)) {
  220     if (const CXXRecordDecl *Pattern =
tools/clang/lib/Index/USRGeneration.cpp
  505   if (const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(D)) {
  505   if (const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(D)) {
tools/clang/lib/Parse/ParseDecl.cpp
 6353           Actions, dyn_cast<CXXRecordDecl>(Actions.CurContext), Q,
tools/clang/lib/Sema/CoroutineStmtBuilder.h
   32   CXXRecordDecl *PromiseRecordDecl = nullptr;
tools/clang/lib/Sema/DeclSpec.cpp
  106 void CXXScopeSpec::MakeSuper(ASTContext &Context, CXXRecordDecl *RD,
tools/clang/lib/Sema/MultiplexExternalSemaSource.cpp
  184                   llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  185           llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets){
tools/clang/lib/Sema/Sema.cpp
  771 typedef llvm::DenseMap<const CXXRecordDecl*, bool> RecordCompleteMap;
  778 static bool MethodsAndNestedClassesComplete(const CXXRecordDecl *RD,
  799     else if (const CXXRecordDecl *R = dyn_cast<CXXRecordDecl>(*I)) {
  799     else if (const CXXRecordDecl *R = dyn_cast<CXXRecordDecl>(*I)) {
  820 static bool IsRecordFullyDefined(const CXXRecordDecl *RD,
  827   for (CXXRecordDecl::friend_iterator I = RD->friend_begin(),
  833       if (CXXRecordDecl *FriendD = TSI->getType()->getAsCXXRecordDecl())
 1216       const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext());
 1216       const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext());
 1259                cast<CXXRecordDecl>(DC->getParent())->isLambda()) {
 1684   if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
tools/clang/lib/Sema/SemaAccess.cpp
   65 static CXXRecordDecl *FindDeclaringClass(NamedDecl *D) {
   73   CXXRecordDecl *DeclaringClass = cast<CXXRecordDecl>(DC);
   73   CXXRecordDecl *DeclaringClass = cast<CXXRecordDecl>(DC);
   75     DeclaringClass = cast<CXXRecordDecl>(DeclaringClass->getDeclContext());
  106       if (isa<CXXRecordDecl>(DC)) {
  107         CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
  107         CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
  127   bool includesClass(const CXXRecordDecl *R) const {
  138   typedef SmallVectorImpl<CXXRecordDecl*>::const_iterator record_iterator;
  142   SmallVector<CXXRecordDecl*, 4> Records;
  156                CXXRecordDecl *NamingClass,
  166                CXXRecordDecl *BaseClass,
  167                CXXRecordDecl *DerivedClass,
  209   const CXXRecordDecl *resolveInstanceContext(Sema &S) const {
  216     InstanceContext = (IC ? cast<CXXRecordDecl>(IC)->getCanonicalDecl()
  221   const CXXRecordDecl *getDeclaringClass() const {
  227   const CXXRecordDecl *getEffectiveNamingClass() const {
  228     const CXXRecordDecl *namingClass = getNamingClass();
  230       namingClass = cast<CXXRecordDecl>(namingClass->getParent());
  251   mutable const CXXRecordDecl *InstanceContext;
  252   const CXXRecordDecl *DeclaringClass;
  258 static bool MightInstantiateTo(const CXXRecordDecl *From,
  259                                const CXXRecordDecl *To) {
  278 static AccessResult IsDerivedFromInclusive(const CXXRecordDecl *Derived,
  279                                            const CXXRecordDecl *Target) {
  290   SmallVector<const CXXRecordDecl*, 8> Queue; // actually a stack
  298       const CXXRecordDecl *RD;
  302         RD = cast<CXXRecordDecl>(RT->getDecl());
  408                                   const CXXRecordDecl *Friend) {
  413     for (const CXXRecordDecl *Context : EC.Records) {
  426     return MatchesFriend(S, EC, cast<CXXRecordDecl>(RT->getDecl()));
  444   for (SmallVectorImpl<CXXRecordDecl*>::const_iterator
  446     CXXRecordDecl *Record = *I;
  561   if (isa<CXXRecordDecl>(Friend))
  562     return MatchesFriend(S, EC, cast<CXXRecordDecl>(Friend));
  570                                   const CXXRecordDecl *Class) {
  599   const CXXRecordDecl *NamingClass;
  604   SmallVector<const CXXRecordDecl*, 20> CurPath;
  607                          const CXXRecordDecl *InstanceContext,
  608                          const CXXRecordDecl *NamingClass)
  633   bool findFriendship(const CXXRecordDecl *Cur, unsigned PrivateDepth) {
  651       const CXXRecordDecl *RD;
  655         RD = cast<CXXRecordDecl>(RT->getDecl());
  675   bool findFriendship(const CXXRecordDecl *Cur) {
  710                                            const CXXRecordDecl *InstanceContext,
  711                                            const CXXRecordDecl *NamingClass) {
  729                               const CXXRecordDecl *NamingClass,
  744     const CXXRecordDecl *ECRecord = *I;
  819       const CXXRecordDecl *InstanceContext = Target.resolveInstanceContext(S);
  845     const CXXRecordDecl *InstanceContext = nullptr;
  931   const CXXRecordDecl *Derived = Target.getNamingClass();
  932   const CXXRecordDecl *Base = Target.getDeclaringClass();
  967       const CXXRecordDecl *NC = I->Class->getCanonicalDecl();
 1025   const CXXRecordDecl *NamingClass = Target.getEffectiveNamingClass();
 1029     const CXXRecordDecl *ECRecord = *I;
 1059     const CXXRecordDecl *InstanceContext = Target.resolveInstanceContext(S);
 1120   CXXRecordDecl *DeclaringClass = FindDeclaringClass(D);
 1165     const CXXRecordDecl *declaringClass = entity.getDeclaringClass();
 1199     const CXXRecordDecl *derivingClass = i->Class->getCanonicalDecl();
 1261   const CXXRecordDecl *NamingClass = Entity.getNamingClass();
 1262   const CXXRecordDecl *DeclaringClass = Entity.getDeclaringClass();
 1317   const CXXRecordDecl *NamingClass = Entity.getEffectiveNamingClass();
 1353     const CXXRecordDecl *DeclaringClass = Entity.getDeclaringClass();
 1503     CXXRecordDecl *NamingClass = cast<CXXRecordDecl>(NamingD);
 1503     CXXRecordDecl *NamingClass = cast<CXXRecordDecl>(NamingD);
 1522                         cast<CXXRecordDecl>(TargetD),
 1523                         cast<CXXRecordDecl>(NamingD),
 1598   CXXRecordDecl *NamingClass = Dtor->getParent();
 1662   CXXRecordDecl *NamingClass = Constructor->getParent();
 1671   CXXRecordDecl *ObjectClass;
 1697                                                CXXRecordDecl *NamingClass,
 1716                                            CXXRecordDecl *NamingClass,
 1732                                          CXXRecordDecl *DecomposedClass,
 1756   CXXRecordDecl *NamingClass = cast<CXXRecordDecl>(RT->getDecl());
 1756   CXXRecordDecl *NamingClass = cast<CXXRecordDecl>(RT->getDecl());
 1781                       cast<CXXRecordDecl>(target->getDeclContext()),
 1807   CXXRecordDecl *NamingClass = Ovl->getNamingClass();
 1836   CXXRecordDecl *BaseD, *DerivedD;
 1837   BaseD = cast<CXXRecordDecl>(Base->castAs<RecordType>()->getDecl());
 1838   DerivedD = cast<CXXRecordDecl>(Derived->castAs<RecordType>()->getDecl());
 1891 bool Sema::IsSimplyAccessible(NamedDecl *Target, CXXRecordDecl *NamingClass,
tools/clang/lib/Sema/SemaAttr.cpp
   90                                                      CXXRecordDecl *Record) {
   99                                     CXXRecordDecl *UnderlyingRecord) {
  103   const auto *Parent = dyn_cast<CXXRecordDecl>(ND->getDeclContext());
  103   const auto *Parent = dyn_cast<CXXRecordDecl>(ND->getDeclContext());
  141   CXXRecordDecl *RD = Canonical->getAsCXXRecordDecl();
  146       RD = dyn_cast_or_null<CXXRecordDecl>(
  154 void Sema::inferGslOwnerPointerAttribute(CXXRecordDecl *Record) {
tools/clang/lib/Sema/SemaCUDA.cpp
  265 bool Sema::inferCUDATargetForImplicitSpecialMember(CXXRecordDecl *ClassDecl,
  310     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(BaseType->getDecl());
  310     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(BaseType->getDecl());
  353     CXXRecordDecl *FieldRecDecl = cast<CXXRecordDecl>(FieldType->getDecl());
  353     CXXRecordDecl *FieldRecDecl = cast<CXXRecordDecl>(FieldType->getDecl());
  461   const CXXRecordDecl *ClassDecl = DD->getParent();
  470         if (CXXRecordDecl *RD = BS.getType()->getAsCXXRecordDecl())
  478         if (CXXRecordDecl *RD = Field->getType()
  512       if (CXXRecordDecl *RD = VD->getType()->getAsCXXRecordDecl())
tools/clang/lib/Sema/SemaCXXScopeSpec.cpp
   27 static CXXRecordDecl *getCurrentInstantiationOf(QualType T,
   34     CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordTy->getDecl());
   34     CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordTy->getDecl());
   83     if (CXXRecordDecl *Record = getCurrentInstantiationOf(NNS))
  179 CXXRecordDecl *Sema::getCurrentInstantiationOf(NestedNameSpecifier *NNS) {
  281   CXXRecordDecl *RD = nullptr;
  289       RD = cast<CXXRecordDecl>(S->getEntity());
  569         (!cast<CXXRecordDecl>(LookupCtx)->hasDefinition() ||
  570          !cast<CXXRecordDecl>(LookupCtx)->hasAnyDependentBases()))) {
  800       CXXRecordDecl *ContainingClass = dyn_cast<CXXRecordDecl>(DC->getParent());
  800       CXXRecordDecl *ContainingClass = dyn_cast<CXXRecordDecl>(DC->getParent());
tools/clang/lib/Sema/SemaCast.cpp
  839   if (!cast<CXXRecordDecl>(SrcDecl)->isPolymorphic()) {
  889   const CXXRecordDecl *SrcPointeeRD = SrcType->getPointeeCXXRecordDecl();
  890   const CXXRecordDecl *SrcRD =
  899   const CXXRecordDecl *DestRD = DestType->getPointeeCXXRecordDecl();
  931       const CXXRecordDecl *BaseRD = IElem->Base->getType()->getAsCXXRecordDecl();
  935       const CXXRecordDecl *Class = IElem->Class,
tools/clang/lib/Sema/SemaChecking.cpp
 7906   const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
 7906   const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
 9343 static const CXXRecordDecl *getContainedDynamicClass(QualType T,
 9349   const CXXRecordDecl *RD = Ty->getAsCXXRecordDecl();
 9362     if (const CXXRecordDecl *ContainedRD =
 9710     if (const CXXRecordDecl *ContainedRD =
13082       if (CXXRecordDecl *ClassDecl = Param->getType()->getAsCXXRecordDecl()) {
13109         if (auto *RD = dyn_cast<CXXRecordDecl>(DC->getParent()))
13109         if (auto *RD = dyn_cast<CXXRecordDecl>(DC->getParent()))
13219   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
13219   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
14252   if (const CXXRecordDecl *D1CXX = dyn_cast<CXXRecordDecl>(RD1)) {
14252   if (const CXXRecordDecl *D1CXX = dyn_cast<CXXRecordDecl>(RD1)) {
14255     const CXXRecordDecl *D2CXX = cast<CXXRecordDecl>(RD2);
14255     const CXXRecordDecl *D2CXX = cast<CXXRecordDecl>(RD2);
14261     for (CXXRecordDecl::base_class_const_iterator
14270   } else if (const CXXRecordDecl *D2CXX = dyn_cast<CXXRecordDecl>(RD2)) {
14270   } else if (const CXXRecordDecl *D2CXX = dyn_cast<CXXRecordDecl>(RD2)) {
tools/clang/lib/Sema/SemaCodeComplete.cpp
  769          (isa<CXXRecordDecl>(ND) &&
  770           cast<CXXRecordDecl>(ND)->isInjectedClassName()))) {
 1012                                                   const CXXRecordDecl *Record) {
 1026   const CXXRecordDecl *Record = nullptr;
 1029   else if ((Record = dyn_cast<CXXRecordDecl>(D))) {
 1269              isa<CXXRecordDecl>(
 1588   CXXRecordDecl *NamingClass;
 1599     NamingClass = llvm::dyn_cast<CXXRecordDecl>(InitialLookupCtx);
 1630     auto *NamingClass = this->NamingClass;
 1632     if (auto *Cls = llvm::dyn_cast_or_null<CXXRecordDecl>(Ctx)) {
 1632     if (auto *Cls = llvm::dyn_cast_or_null<CXXRecordDecl>(Ctx)) {
 1940   const auto *CR = llvm::dyn_cast<CXXRecordDecl>(S.CurContext);
 1940   const auto *CR = llvm::dyn_cast<CXXRecordDecl>(S.CurContext);
 1954     const auto *BR = Base.getType().getTypePtr()->getAsCXXRecordDecl();
 3171     CXXRecordDecl *Record = nullptr;
 3174       Record = cast<CXXRecordDecl>(RecordTy->getDecl());
 4764         CXXRecordDecl *RD = TD->getTemplatedDecl();
 4769       if (auto *RD = ICNT->getDecl())
 5208   CXXRecordDecl *RD =
 5590   CXXRecordDecl *ClassDecl = Constructor->getParent();
 5645     const auto *RD = Base.getType()->getAsCXXRecordDecl();
 5653     const CXXRecordDecl *RD = FD->getType()->getAsCXXRecordDecl();
tools/clang/lib/Sema/SemaCoroutine.cpp
   30 static LookupResult lookupMember(Sema &S, const char *Name, CXXRecordDecl *RD,
   41 static bool lookupMember(Sema &S, const char *Name, CXXRecordDecl *RD,
  105   auto *RD = CoroTrait->getAsCXXRecordDecl();
  732   auto *RD = Promise->getType()->getAsCXXRecordDecl();
  939   auto *PointeeRD = PromiseType->getAsCXXRecordDecl();
 1051                                      CXXRecordDecl *PromiseRecordDecl,
 1210       OperatorNew && !isa<CXXRecordDecl>(OperatorNew->getDeclContext());
tools/clang/lib/Sema/SemaDecl.cpp
   95         auto *RD = dyn_cast<CXXRecordDecl>(ND);
   95         auto *RD = dyn_cast<CXXRecordDecl>(ND);
   98         RD = cast<CXXRecordDecl>(RD->getDeclContext());
  180                                 const CXXRecordDecl *RD) {
  187     const CXXRecordDecl *BaseRD = nullptr;
  198       if (auto *BasePrimaryTemplate =
  199           dyn_cast_or_null<CXXRecordDecl>(TD->getTemplatedDecl())) {
  237   const CXXRecordDecl *RD = nullptr;
  245     RD = dyn_cast<CXXRecordDecl>(DC);
  472     auto *LookupRD = dyn_cast_or_null<CXXRecordDecl>(LookupCtx);
  472     auto *LookupRD = dyn_cast_or_null<CXXRecordDecl>(LookupCtx);
  473     auto *FoundRD = dyn_cast<CXXRecordDecl>(TD);
  473     auto *FoundRD = dyn_cast<CXXRecordDecl>(TD);
  531     else if (auto *RD = dyn_cast<CXXRecordDecl>(DC))
  531     else if (auto *RD = dyn_cast<CXXRecordDecl>(DC))
  544 static const CXXRecordDecl *
  571   } else if (const CXXRecordDecl *RD =
  648     CXXRecordDecl *RD = cast<CXXRecordDecl>(CurContext);
  648     CXXRecordDecl *RD = cast<CXXRecordDecl>(CurContext);
 1272     if (!isa<CXXRecordDecl>(DC))
 1278     while (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(DC->getLexicalParent()))
 1278     while (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(DC->getLexicalParent()))
 1749   if (const auto *R = dyn_cast<CXXRecordDecl>(D->getDeclContext()))
 1749   if (const auto *R = dyn_cast<CXXRecordDecl>(D->getDeclContext()))
 1789       if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Tag)) {
 1789       if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Tag)) {
 2325     if (!isa<CXXRecordDecl>(CurContext))
 2591       S.Consumer.AssignInheritanceModel(cast<CXXRecordDecl>(D));
 4303   if (isa<CXXRecordDecl>(Tag->getParent())) {
 4776 static SourceLocation findDefaultInitializer(const CXXRecordDecl *Record) {
 4790 static void checkDuplicateDefaultInit(Sema &S, CXXRecordDecl *Parent,
 4799 static void checkDuplicateDefaultInit(Sema &S, CXXRecordDecl *Parent,
 4800                                       CXXRecordDecl *AnonUnion) {
 4975     if (cast<CXXRecordDecl>(Record)->hasInClassInitializer() &&
 4977       checkDuplicateDefaultInit(*this, cast<CXXRecordDecl>(Owner),
 4978                                 cast<CXXRecordDecl>(Record));
 5217     CXXRecordDecl *CurClass = dyn_cast<CXXRecordDecl>(CurContext);
 5217     CXXRecordDecl *CurClass = dyn_cast<CXXRecordDecl>(CurContext);
 5404   CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC);
 5404   CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC);
 5406     Record = dyn_cast<CXXRecordDecl>(Record->getParent());
 5494                              Context.getTypeDeclType(cast<CXXRecordDecl>(Cur))))
 5566     if (isa<CXXRecordDecl>(DC) && !cast<CXXRecordDecl>(DC)->hasDefinition()) {
 5566     if (isa<CXXRecordDecl>(DC) && !cast<CXXRecordDecl>(DC)->hasDefinition()) {
 6688       if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(DC)) {
 6688       if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(DC)) {
 7297     if (const auto *RD = dyn_cast<CXXRecordDecl>(NewDC->getParent())) {
 7297     if (const auto *RD = dyn_cast<CXXRecordDecl>(NewDC->getParent())) {
 7857 bool Sema::AddOverriddenMethods(CXXRecordDecl *DC, CXXMethodDecl *MD) {
 7910                             CXXRecordDecl *Parent)
 7927           CXXRecordDecl *Parent = MD->getParent();
 7946   CXXRecordDecl *ExpectedParent;
 8202         SemaRef.Context, cast<CXXRecordDecl>(DC), D.getBeginLoc(), NameInfo, R,
 8210       CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
 8210       CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
 8250         SemaRef.Context, cast<CXXRecordDecl>(DC), D.getBeginLoc(), NameInfo, R,
 8265         Name.getAsIdentifierInfo() == cast<CXXRecordDecl>(DC)->getIdentifier()){
 8274         SemaRef.Context, cast<CXXRecordDecl>(DC), D.getBeginLoc(), NameInfo, R,
 8630     if (const CXXRecordDecl *Parent =
 8631           dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) {
 8896              cast<CXXRecordDecl>(DC)->getDescribedClassTemplate()) ||
 9294       if (isa<CXXRecordDecl>(NewFD->getDeclContext()))
 9341       } else if (isFriend && cast<CXXRecordDecl>(CurContext)->isLocalClass()) {
 9549   const CXXRecordDecl *Parent = Method->getParent();
 9561   while ((Parent = dyn_cast<CXXRecordDecl>(Parent->getParent()))) {
10436       CXXRecordDecl *Record = Destructor->getParent();
12222         CXXRecordDecl *CXXRecord = cast<CXXRecordDecl>(Record->getDecl());
12222         CXXRecordDecl *CXXRecord = cast<CXXRecordDecl>(Record->getDecl());
12542       CXXRecordDecl *RD = baseType->getAsCXXRecordDecl();
12713       CXXRecordDecl *Context =
12714         cast<CXXRecordDecl>(VD->getFirstDecl()->getDeclContext());
13437   CXXRecordDecl *const LambdaClass = CallOperator->getParent();
14554   if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Previous))
14554   if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Previous))
15248                 if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Def))
15248                 if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Def))
15456       New = CXXRecordDecl::Create(Context, Kind, SearchDC, KWLoc, Loc, Name,
15457                                   cast_or_null<CXXRecordDecl>(PrevDecl));
15460         StdBadAlloc = cast<CXXRecordDecl>(New);
15608   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(New))
15608   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(New))
15672   CXXRecordDecl *Record = cast<CXXRecordDecl>(TagD);
15672   CXXRecordDecl *Record = cast<CXXRecordDecl>(TagD);
15689   CXXRecordDecl *InjectedClassName = CXXRecordDecl::Create(
15689   CXXRecordDecl *InjectedClassName = CXXRecordDecl::Create(
15717   if (isa<CXXRecordDecl>(Tag)) {
16113     checkDuplicateDefaultInit(*this, cast<CXXRecordDecl>(Record), Loc);
16129         CXXRecordDecl* RDecl = cast<CXXRecordDecl>(RT->getDecl());
16129         CXXRecordDecl* RDecl = cast<CXXRecordDecl>(RT->getDecl());
16186     CXXRecordDecl *RDecl = cast<CXXRecordDecl>(RT->getDecl());
16186     CXXRecordDecl *RDecl = cast<CXXRecordDecl>(RT->getDecl());
16424   CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(EnclosingDecl);
16424   CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(EnclosingDecl);
16659         for (CXXRecordDecl::conversion_iterator
16733         checkMSInheritanceAttrOnDefinition(cast<CXXRecordDecl>(Record),
16746       CXXRecordDecl *CXXRecord = cast<CXXRecordDecl>(Record);
16746       CXXRecordDecl *CXXRecord = cast<CXXRecordDecl>(Record);
tools/clang/lib/Sema/SemaDeclAttr.cpp
  479   const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(Record);
  479   const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(Record);
  543   if (const auto *CRD = dyn_cast<CXXRecordDecl>(RD)) {
  543   if (const auto *CRD = dyn_cast<CXXRecordDecl>(RD)) {
  640       const CXXRecordDecl *RD = MD->getParent();
 1006   const CXXRecordDecl *ClassType;
 1128   if (const CXXRecordDecl *RD = ThisType->getAsCXXRecordDecl()) {
 2052   if (!isa<CXXRecordDecl>(R)) {
 2057   if (!cast<CXXRecordDecl>(R)->isPOD()) {
 3801     CXXRecordDecl *RD, SourceRange Range, bool BestCase,
 5379     S.Consumer.AssignInheritanceModel(cast<CXXRecordDecl>(D));
 6020   auto *RD = cast<CXXRecordDecl>(D);
 6020   auto *RD = cast<CXXRecordDecl>(D);
tools/clang/lib/Sema/SemaDeclCXX.cpp
  604         if (CXXRecordDecl *Record
  605               = dyn_cast<CXXRecordDecl>(New->getDeclContext())) {
 1007   CXXRecordDecl *RD = TraitTy->getAsCXXRecordDecl();
 1139     if (auto *RD = DecompType->getAsCXXRecordDecl())
 1256                                                 const CXXRecordDecl *RD,
 1263   const CXXRecordDecl *ClassWithFields = nullptr;
 1328                                      const CXXRecordDecl *OrigRD) {
 1336   const CXXRecordDecl *RD = cast_or_null<CXXRecordDecl>(BasePair.getDecl());
 1336   const CXXRecordDecl *RD = cast_or_null<CXXRecordDecl>(BasePair.getDecl());
 1380         DeclAccessPair::make(FD, CXXRecordDecl::MergeAccess(
 1469   CXXRecordDecl *RD = DecompType->getAsCXXRecordDecl();
 1605     const CXXRecordDecl *RD =
 1620   const CXXRecordDecl *RD = DD->getParent();
 1687     const CXXRecordDecl *RD = MD->getParent();
 2177     const CXXRecordDecl *RD = Constructor->getParent();
 2205       for (CXXRecordDecl::field_iterator I = RD->field_begin(),
 2320 CXXRecordDecl *Sema::getCurrentClass(Scope *, const CXXScopeSpec *SS) {
 2328     return dyn_cast_or_null<CXXRecordDecl>(DC);
 2331   return dyn_cast_or_null<CXXRecordDecl>(CurContext);
 2340   CXXRecordDecl *CurDecl = getCurrentClass(S, SS);
 2353   CXXRecordDecl *CurDecl;
 2356     CurDecl = dyn_cast_or_null<CXXRecordDecl>(DC);
 2358     CurDecl = dyn_cast_or_null<CXXRecordDecl>(CurContext);
 2372 static bool findCircularInheritance(const CXXRecordDecl *Class,
 2373                                     const CXXRecordDecl *Current) {
 2374   SmallVector<const CXXRecordDecl*, 8> Queue;
 2379       CXXRecordDecl *Base = I.getType()->getAsCXXRecordDecl();
 2407 Sema::CheckBaseSpecifier(CXXRecordDecl *Class,
 2435     if (CXXRecordDecl *BaseDecl = BaseType->getAsCXXRecordDecl()) {
 2493   CXXRecordDecl *CXXBaseDecl = cast<CXXRecordDecl>(BaseDecl);
 2493   CXXRecordDecl *CXXBaseDecl = cast<CXXRecordDecl>(BaseDecl);
 2557   CXXRecordDecl *Class = dyn_cast<CXXRecordDecl>(classdecl);
 2557   CXXRecordDecl *Class = dyn_cast<CXXRecordDecl>(classdecl);
 2620 bool Sema::AttachBaseSpecifiers(CXXRecordDecl *Class,
 2666         const CXXRecordDecl *RD = cast<CXXRecordDecl>(Record->getDecl());
 2666         const CXXRecordDecl *RD = cast<CXXRecordDecl>(Record->getDecl());
 2732   AttachBaseSpecifiers(cast<CXXRecordDecl>(ClassDecl), Bases);
 2741   CXXRecordDecl *DerivedRD = Derived->getAsCXXRecordDecl();
 2745   CXXRecordDecl *BaseRD = Base->getAsCXXRecordDecl();
 2769   CXXRecordDecl *DerivedRD = Derived->getAsCXXRecordDecl();
 2773   CXXRecordDecl *BaseRD = Base->getAsCXXRecordDecl();
 3073   if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 3093                                       const CXXRecordDecl *RD,
 3099   std::map<CXXRecordDecl*, NamedDecl*> Bases;
 3132         CXXRecordDecl::MergeAccess(P.Access, BaseField->getAccess())) {
 3169   if (cast<CXXRecordDecl>(CurContext)->isInterface()) {
 3334       Member = HandleMSProperty(S, cast<CXXRecordDecl>(CurContext), Loc, D,
 3340       Member = HandleField(S, cast<CXXRecordDecl>(CurContext), Loc, D,
 3346     CheckShadowInheritedFields(Loc, Name, cast<CXXRecordDecl>(CurContext));
 3404         for (const auto *D : cast<CXXRecordDecl>(CurContext)->decls()) {
 3801     const CXXRecordDecl *RD = Constructor->getParent();
 3926                                 CXXRecordDecl *ClassDecl,
 4006   explicit MemInitializerValidatorCCC(CXXRecordDecl *ClassDecl)
 4023   CXXRecordDecl *ClassDecl;
 4028 ValueDecl *Sema::tryLookupCtorInitMemberDecl(CXXRecordDecl *ClassDecl,
 4075   CXXRecordDecl *ClassDecl = Constructor->getParent();
 4125         if (CXXRecordDecl *Record = dyn_cast_or_null<CXXRecordDecl>(DC))
 4125         if (CXXRecordDecl *Record = dyn_cast_or_null<CXXRecordDecl>(DC))
 4295                                  CXXRecordDecl *ClassDecl) {
 4352                            Expr *Init, CXXRecordDecl *ClassDecl,
 4815     CXXRecordDecl *FieldRD = Field->getType()->getAsCXXRecordDecl();
 4968   CXXRecordDecl *ClassDecl = Constructor->getParent()->getDefinition();
 5168   const CXXRecordDecl *ClassDecl = Constructor->getParent();
 5369                                              CXXRecordDecl *ClassDecl) {
 5395     CXXRecordDecl *FieldClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 5395     CXXRecordDecl *FieldClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 5433     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 5433     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 5465     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 5465     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(RT->getDecl());
 5506   const auto *RD = Context.getBaseElementType(T)->getAsCXXRecordDecl();
 5516   const CXXRecordDecl *Def = RD->getDefinition();
 5534 void Sema::DiagnoseAbstractType(const CXXRecordDecl *RD) {
 5589   CXXRecordDecl *Record;
 5593   AbstractUsageInfo(Sema &S, CXXRecordDecl *Record)
 5719                                     CXXRecordDecl *RD) {
 5741     } else if (isa<CXXRecordDecl>(D)) {
 5742       CheckAbstractClassUsage(Info, cast<CXXRecordDecl>(D));
 5750 static void ReferenceDllExportedMembers(Sema &S, CXXRecordDecl *Class) {
 5816                                                         CXXRecordDecl *Class) {
 5853 void Sema::checkClassLevelCodeSegAttribute(CXXRecordDecl *Class) {
 5864 void Sema::checkClassLevelDLLAttribute(CXXRecordDecl *Class) {
 6030     CXXRecordDecl *Class, Attr *ClassAttr,
 6177 static bool canPassInRegisters(Sema &S, CXXRecordDecl *D,
 6292 void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
 6542     Sema &S, CXXRecordDecl *Class, Sema::CXXSpecialMember CSM,
 6569   llvm::DenseMap<CXXRecordDecl *, ConstructorUsingShadowDecl *>
 6577     CXXRecordDecl *ConstructedBase = nullptr;
 6584       auto *DNominatedBase = DShadow->getNominatedBaseClass();
 6585       auto *DConstructedBase = DShadow->getConstructedBaseClass();
 6627   findConstructorForBase(CXXRecordDecl *Base, CXXConstructorDecl *Ctor) const {
 6646 specialMemberIsConstexpr(Sema &S, CXXRecordDecl *ClassDecl,
 6678     Sema &S, CXXRecordDecl *ClassDecl, Sema::CXXSpecialMember CSM,
 6749     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(BaseType->getDecl());
 6749     CXXRecordDecl *BaseClassDecl = cast<CXXRecordDecl>(BaseType->getDecl());
 6769       CXXRecordDecl *FieldRecDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
 6769       CXXRecordDecl *FieldRecDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
 6854   CXXRecordDecl *RD = MD->getParent();
 7059   CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(FD->getLexicalDeclContext());
 7059   CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(FD->getLexicalDeclContext());
 7099   llvm::SmallVector<CXXRecordDecl*, 4> Classes(1, RD);
 7227   Sema::SpecialMemberOverloadResult lookupIn(CXXRecordDecl *Class,
 7235   Sema::SpecialMemberOverloadResult lookupInheritedCtor(CXXRecordDecl *Class) {
 7273     CXXRecordDecl *RD = MD->getParent();
 7328   bool shouldDeleteForClassSubobject(CXXRecordDecl *Class, Subobject Subobj,
 7348     access = CXXRecordDecl::MergeAccess(base->getAccessSpecifier(), access);
 7413     CXXRecordDecl *Class, Subobject Subobj, unsigned Quals) {
 7465     auto *ParentClass = cast<CXXRecordDecl>(FD->getParent());
 7465     auto *ParentClass = cast<CXXRecordDecl>(FD->getParent());
 7478   CXXRecordDecl *BaseClass = Base->getType()->getAsCXXRecordDecl();
 7508   CXXRecordDecl *FieldRecord = FieldType->getAsCXXRecordDecl();
 7580         CXXRecordDecl *UnionFieldRecord = UnionFieldType->getAsCXXRecordDecl();
 7640   CXXRecordDecl *RD = MD->getParent();
 7777 static bool findTrivialSpecialMember(Sema &S, CXXRecordDecl *RD,
 7904 static CXXConstructorDecl *findUserDeclaredCtor(CXXRecordDecl *RD) {
 7910   typedef CXXRecordDecl::specific_decl_iterator<FunctionTemplateDecl> tmpl_iter;
 7937   CXXRecordDecl *SubRD = SubType->getAsCXXRecordDecl();
 7983 static bool checkTrivialClassMembers(Sema &S, CXXRecordDecl *RD,
 8034 void Sema::DiagnoseNontrivial(const CXXRecordDecl *RD, CXXSpecialMember CSM) {
 8050   CXXRecordDecl *RD = MD->getParent();
 8277   CXXRecordDecl *DC = MD->getParent();
 8321 void Sema::checkIllFormedTrivialABIStruct(CXXRecordDecl &RD) {
 8358           !cast<CXXRecordDecl>(RT->getDecl())->canPassInRegisters()) {
 8385   CheckCompletedCXXClass(cast<CXXRecordDecl>(TagDecl));
 8393 void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
 8495     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(TD)) {
 8495     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(TD)) {
 8521   CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordD);
 8521   CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordD);
 8691   CXXRecordDecl *ClassDecl
 8692     = dyn_cast<CXXRecordDecl>(Constructor->getDeclContext());
 8728   CXXRecordDecl *RD = Destructor->getParent();
 9073   CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Conversion->getDeclContext());
 9073   CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Conversion->getDeclContext());
 9470 CXXRecordDecl *Sema::getStdBadAlloc() const {
 9471   return cast_or_null<CXXRecordDecl>(
 9576     CXXRecordDecl *Base = BaseSpec.getType()->getAsCXXRecordDecl();
 9678     CXXRecordDecl *TemplateClass = Template->getTemplatedDecl();
10055     CXXRecordDecl *OrigRec = cast<CXXRecordDecl>(OrigDC);
10055     CXXRecordDecl *OrigRec = cast<CXXRecordDecl>(OrigDC);
10057       OrigRec = cast<CXXRecordDecl>(OrigRec->getDeclContext());
10059     if (cast<CXXRecordDecl>(CurContext)->isProvablyNotDerivedFrom(OrigRec)) {
10072         << cast<CXXRecordDecl>(CurContext)
10102     if (auto *RD = dyn_cast<CXXRecordDecl>(D)) {
10102     if (auto *RD = dyn_cast<CXXRecordDecl>(D)) {
10186 static bool isVirtualDirectBase(CXXRecordDecl *Derived, CXXRecordDecl *Base) {
10186 static bool isVirtualDirectBase(CXXRecordDecl *Derived, CXXRecordDecl *Base) {
10214         isVirtualDirectBase(cast<CXXRecordDecl>(CurContext),
10269     cast<CXXRecordDecl>(Shadow->getDeclContext())->removeConversion(Shadow);
10288 static CXXBaseSpecifier *findDirectBaseWithType(CXXRecordDecl *Derived,
10308                     NestedNameSpecifier *NNS, CXXRecordDecl *RequireMemberOf)
10328       auto *FoundRecord = dyn_cast<CXXRecordDecl>(ND);
10328       auto *FoundRecord = dyn_cast<CXXRecordDecl>(ND);
10357         auto *RD = dyn_cast<CXXRecordDecl>(ND->getDeclContext());
10357         auto *RD = dyn_cast<CXXRecordDecl>(ND->getDeclContext());
10364       auto *FoundRecord = dyn_cast<CXXRecordDecl>(ND);
10364       auto *FoundRecord = dyn_cast<CXXRecordDecl>(ND);
10383   CXXRecordDecl *RequireMemberOf;
10408     if (auto *RD = dyn_cast<CXXRecordDecl>(CurContext))
10408     if (auto *RD = dyn_cast<CXXRecordDecl>(CurContext))
10514                    Context.getTypeDeclType(cast<CXXRecordDecl>(CurContext)));
10536                           dyn_cast<CXXRecordDecl>(CurContext));
10553       auto *RD = dyn_cast<CXXRecordDecl>(ND);
10553       auto *RD = dyn_cast<CXXRecordDecl>(ND);
10556         RD = cast<CXXRecordDecl>(RD->getParent());
10568         auto *CurClass = cast<CXXRecordDecl>(CurContext);
10568         auto *CurClass = cast<CXXRecordDecl>(CurContext);
10670   CXXRecordDecl *TargetClass = cast<CXXRecordDecl>(CurContext);
10670   CXXRecordDecl *TargetClass = cast<CXXRecordDecl>(CurContext);
10789       auto *RD = NamedContext
10790                      ? cast<CXXRecordDecl>(NamedContext->getRedeclContext())
10894     if (cast<CXXRecordDecl>(CurContext)->isProvablyNotDerivedFrom(
10895                                  cast<CXXRecordDecl>(NamedContext))) {
10903       if (!cast<CXXRecordDecl>(NamedContext)->isInvalidDecl()) {
10907           << cast<CXXRecordDecl>(CurContext)
10929   llvm::SmallPtrSet<const CXXRecordDecl *, 4> Bases;
10936   if (!cast<CXXRecordDecl>(CurContext)->forallBases(Collect))
10947   if (Bases.count(cast<CXXRecordDecl>(NamedContext)) ||
10948       !cast<CXXRecordDecl>(NamedContext)->forallBases(IsNotBase))
10954     << cast<CXXRecordDecl>(CurContext)
11208   void visitClassSubobject(CXXRecordDecl *Class, Subobject Subobj,
11221   auto *BaseClass = cast<CXXRecordDecl>(RT->getDecl());
11221   auto *BaseClass = cast<CXXRecordDecl>(RT->getDecl());
11246     visitClassSubobject(cast<CXXRecordDecl>(RT->getDecl()), FD,
11252 void SpecialMemberExceptionSpecInfo::visitClassSubobject(CXXRecordDecl *Class,
11315   CXXRecordDecl *ClassDecl = MD->getParent();
11361   DeclaringSpecialMember(Sema &S, CXXRecordDecl *RD, Sema::CXXSpecialMember CSM)
11431                                                      CXXRecordDecl *ClassDecl) {
11502   CXXRecordDecl *ClassDecl = Constructor->getParent();
11545   CXXRecordDecl *Derived = Shadow->getParent();
11632   CXXRecordDecl *ClassDecl = Constructor->getParent();
11663   CXXRecordDecl *RD = Shadow->getParent();
11674       auto *BaseRD = B.getType()->getAsCXXRecordDecl();
11711 CXXDestructorDecl *Sema::DeclareImplicitDestructor(CXXRecordDecl *ClassDecl) {
11786   CXXRecordDecl *ClassDecl = Destructor->getParent();
11823   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(CurContext)) {
11823   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(CurContext)) {
11856     SmallVector<CXXRecordDecl *, 4> WorkList;
11858     for (CXXRecordDecl *Class : WorkList)
12128     CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
12128     CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(RecordTy->getDecl());
12321 CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) {
12404   CXXRecordDecl *RD = CopyOp->getParent();
12454   CXXRecordDecl *ClassDecl = CopyAssignOperator->getParent();
12647 CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) {
12727 static void checkMoveAssignmentForRepeatedMove(Sema &S, CXXRecordDecl *Class,
12740   typedef llvm::DenseMap<CXXRecordDecl*, CXXBaseSpecifier*> VBaseMap;
12747       CXXRecordDecl *Base = BaseSpec->getType()->getAsCXXRecordDecl();
12819   CXXRecordDecl *ClassDecl = MoveAssignOperator->getParent();
13020                                                     CXXRecordDecl *ClassDecl) {
13119   CXXRecordDecl *ClassDecl = CopyConstructor->getParent();
13158                                                     CXXRecordDecl *ClassDecl) {
13251   CXXRecordDecl *ClassDecl = MoveConstructor->getParent();
13292   CXXRecordDecl *Lambda = Conv->getParent();
13442         Context, cast<CXXRecordDecl>(FoundDecl->getDeclContext()));
13519   CXXRecordDecl *ParentRD = cast<CXXRecordDecl>(Field->getParent());
13519   CXXRecordDecl *ParentRD = cast<CXXRecordDecl>(Field->getParent());
13522     CXXRecordDecl *ClassPattern = ParentRD->getTemplateInstantiationPattern();
13582   CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
13582   CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(Record->getDecl());
14693     << SS.getScopeRep() << SS.getRange() << cast<CXXRecordDecl>(CurContext);
14885            cast<CXXRecordDecl>(CurContext)->isLocalClass())) {
15127         << cast<CXXRecordDecl>(CurContext);
15236       !isa<CXXRecordDecl>(FD->getLexicalDeclContext())) {
15572     llvm::DenseMap<CXXRecordDecl *, bool>::iterator Pos
15588 void Sema::MarkVTableUsed(SourceLocation Loc, CXXRecordDecl *Class,
15608   std::pair<llvm::DenseMap<CXXRecordDecl *, bool>::iterator, bool>
15661     CXXRecordDecl *Class = VTableUses[I].first->getDefinition();
15693           = cast<CXXRecordDecl>(R)->getTemplateSpecializationKind();
15719     CXXRecordDecl *Canonical = Class->getCanonicalDecl();
15745                                                  const CXXRecordDecl *RD) {
15752                                         const CXXRecordDecl *RD,
15778     const auto *Base =
15779         cast<CXXRecordDecl>(I.getType()->castAs<RecordType>()->getDecl());
15827         CXXRecordDecl *RD = cast<CXXRecordDecl>(RecordTy->getDecl());
15827         CXXRecordDecl *RD = cast<CXXRecordDecl>(RecordTy->getDecl());
tools/clang/lib/Sema/SemaDeclObjC.cpp
 3199   if ((isa<CXXRecordDecl>(left) && !cast<CXXRecordDecl>(left)->isPOD()) ||
 3199   if ((isa<CXXRecordDecl>(left) && !cast<CXXRecordDecl>(left)->isPOD()) ||
 3200       (isa<CXXRecordDecl>(right) && !cast<CXXRecordDecl>(right)->isPOD()))
 3200       (isa<CXXRecordDecl>(right) && !cast<CXXRecordDecl>(right)->isPOD()))
tools/clang/lib/Sema/SemaExceptionSpec.cpp
   42   auto *RD = dyn_cast<CXXRecordDecl>(CurContext);
   42   auto *RD = dyn_cast<CXXRecordDecl>(CurContext);
  608       if (CXXRecordDecl *ExRecord = Exception->getAsCXXRecordDecl()) {
 1061   if (!cast<CXXRecordDecl>(RT->getDecl())->isPolymorphic())
 1160         const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 1160         const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
tools/clang/lib/Sema/SemaExpr.cpp
  820     if (CXXRecordDecl *Record = Ty->getAsCXXRecordDecl())
 1941     if (isa<CXXRecordDecl>(DC)) {
 2051         CXXRecordDecl *Record = nullptr;
 2057           Record = cast<CXXRecordDecl>(
 2126   const CXXRecordDecl *RD = nullptr;
 2668   CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Member->getDeclContext());
 2668   CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Member->getDeclContext());
 2782                            cast<CXXRecordDecl>(FoundDecl->getDeclContext()));
 4809       FD << cast<CXXRecordDecl>(FD->getDeclContext())->getDeclName();
 5517     if (const auto *RD = dyn_cast<CXXRecordDecl>(DC))
 5517     if (const auto *RD = dyn_cast<CXXRecordDecl>(DC))
 5525   const CXXRecordDecl *const CurParentClass = GetFunctionLevelDCIfCXXClass(S);
 5531   const CXXRecordDecl *const NamingClass =
13940     if (CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
13940     if (CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD)) {
15557           if (isa<CXXRecordDecl>(Func->getDeclContext()) &&
15558               cast<CXXRecordDecl>(Func->getDeclContext())->isLocalClass() &&
15680       cast<CXXRecordDecl>(VarDC->getParent())->isLambda()) {
16359       if (auto *RD = VD->getType()->getAsCXXRecordDecl())
17047         CXXRecordDecl *Record = cast<CXXRecordDecl>(DestroyedRec->getDecl());
17047         CXXRecordDecl *Record = cast<CXXRecordDecl>(DestroyedRec->getDecl());
tools/clang/lib/Sema/SemaExprCXX.cpp
   86   CXXRecordDecl *CurClass = getCurrentClass(S, &SS);
  107   CXXRecordDecl *InjectedClassName = nullptr;
  109     auto *RD = dyn_cast<CXXRecordDecl>(ND);
  109     auto *RD = dyn_cast<CXXRecordDecl>(ND);
  195     } else if (DC && isa<CXXRecordDecl>(DC)) {
  283           if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Ctx))
  283           if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Ctx))
  370       if (const CXXRecordDecl *Class = dyn_cast_or_null<CXXRecordDecl>(Ctx))
  370       if (const CXXRecordDecl *Class = dyn_cast_or_null<CXXRecordDecl>(Ctx))
  478       CXXRecordDecl *RecordD = cast<CXXRecordDecl>(RecordT->getDecl());
  478       CXXRecordDecl *RecordD = cast<CXXRecordDecl>(RecordT->getDecl());
  813 collectPublicBases(CXXRecordDecl *RD,
  814                    llvm::DenseMap<CXXRecordDecl *, unsigned> &SubobjectsSeen,
  815                    llvm::SmallPtrSetImpl<CXXRecordDecl *> &VBases,
  816                    llvm::SetVector<CXXRecordDecl *> &PublicSubobjectsSeen,
  819     CXXRecordDecl *BaseDecl = BS.getType()->getAsCXXRecordDecl();
  843     CXXRecordDecl *RD, llvm::SmallVectorImpl<CXXRecordDecl *> &Objects) {
  843     CXXRecordDecl *RD, llvm::SmallVectorImpl<CXXRecordDecl *> &Objects) {
  844   llvm::DenseMap<CXXRecordDecl *, unsigned> SubobjectsSeen;
  845   llvm::SmallSet<CXXRecordDecl *, 2> VBases;
  846   llvm::SetVector<CXXRecordDecl *> PublicSubobjectsSeen;
  852   for (CXXRecordDecl *PublicSubobject : PublicSubobjectsSeen) {
  885   CXXRecordDecl *RD = Ty->getAsCXXRecordDecl();
  915     llvm::SmallVector<CXXRecordDecl *, 2> UnambiguousPublicSubobjects;
  918     for (CXXRecordDecl *Subobject : UnambiguousPublicSubobjects) {
 1064     CXXRecordDecl *Closure = cast<CXXRecordDecl>(CurDC->getParent());
 1064     CXXRecordDecl *Closure = cast<CXXRecordDecl>(CurDC->getParent());
 1074                     ? cast<CXXRecordDecl>(Closure->getParent()->getParent())
 1100     QualType ClassTy = Context.getTypeDeclType(cast<CXXRecordDecl>(DC));
 1124   CXXRecordDecl *Record = nullptr;
 1128     Record = cast<CXXRecordDecl>(ContextDecl);
 1287   CXXRecordDecl *Class = BaseType->getAsCXXRecordDecl();
 2469     auto *RD =
 2470         cast<CXXRecordDecl>(AllocElemType->castAs<RecordType>()->getDecl());
 2706     StdBadAlloc = CXXRecordDecl::Create(Context, TTK_Class,
 2872                                                           CXXRecordDecl *RD) {
 2888 bool Sema::FindDeallocationFunction(SourceLocation StartLoc, CXXRecordDecl *RD,
 3125   const CXXRecordDecl *RD = cast<const CXXRecordDecl>(Field->getParent());
 3125   const CXXRecordDecl *RD = cast<const CXXRecordDecl>(Field->getParent());
 3315     CXXRecordDecl *PointeeRD = nullptr;
 3331           PointeeRD = cast<CXXRecordDecl>(RT->getDecl());
 3586   const CXXRecordDecl *PointeeRD = dtor->getParent();
 4412     if (const auto *RD = ArgTy->getAsCXXRecordDecl())
 4472   CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 4472   CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 4589     if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4593     if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4597     if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4613     if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4645     if (CXXRecordDecl *RD = C.getBaseElementType(T)->getAsCXXRecordDecl())
 4655     if (CXXRecordDecl *RD = C.getBaseElementType(T)->getAsCXXRecordDecl())
 4666     if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4676     if (CXXRecordDecl *RD = C.getBaseElementType(T)->getAsCXXRecordDecl())
 4696     if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4728     if (auto *RD = C.getBaseElementType(T)->getAsCXXRecordDecl()) {
 4764     if (CXXRecordDecl *RD = C.getBaseElementType(T)->getAsCXXRecordDecl())
 4785                                 &CXXRecordDecl::hasTrivialCopyAssignment,
 4786                                 &CXXRecordDecl::hasNonTrivialCopyAssignment,
 4798                                 &CXXRecordDecl::hasTrivialMoveAssignment,
 4799                                 &CXXRecordDecl::hasNonTrivialMoveAssignment,
 4810     if (CXXRecordDecl *RD = T->getAsCXXRecordDecl()) {
 4852     if (CXXRecordDecl *RD = C.getBaseElementType(T)->getAsCXXRecordDecl()) {
 4886     if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
 4958     CXXRecordDecl *RD = T->getAsCXXRecordDecl();
 5123     return cast<CXXRecordDecl>(rhsRecord->getDecl())
 5124       ->isDerivedFrom(cast<CXXRecordDecl>(lhsRecord->getDecl()));
 6485   CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 6485   CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 6657     CXXRecordDecl *RD =
 6884   if (auto *RD = DestructedType->getAsCXXRecordDecl()) {
 7559       CXXRecordDecl *Record = nullptr;
 7564             dyn_cast<CXXRecordDecl>(ND->getDeclContext()->getRedeclContext());
tools/clang/lib/Sema/SemaExprMember.cpp
   28 typedef llvm::SmallPtrSet<const CXXRecordDecl*, 4> BaseSet;
   32 static bool isProvablyNotDerivedFrom(Sema &SemaRef, CXXRecordDecl *Record,
  112       CXXRecordDecl *R = cast<CXXRecordDecl>(D->getDeclContext());
  112       CXXRecordDecl *R = cast<CXXRecordDecl>(D->getDeclContext());
  162   CXXRecordDecl *contextClass;
  166     contextClass = cast<CXXRecordDecl>(DC);
  209   CXXRecordDecl *ContextClass = Method ? Method->getParent() : nullptr;
  210   CXXRecordDecl *RepClass = dyn_cast<CXXRecordDecl>(Rep->getDeclContext());
  210   CXXRecordDecl *RepClass = dyn_cast<CXXRecordDecl>(Rep->getDeclContext());
  553   CXXRecordDecl *BaseRecord =
  554     cast_or_null<CXXRecordDecl>(computeDeclContext(BaseType));
  576     CXXRecordDecl *MemberRecord = cast<CXXRecordDecl>(DC)->getCanonicalDecl();
  576     CXXRecordDecl *MemberRecord = cast<CXXRecordDecl>(DC)->getCanonicalDecl();
  617     if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Record)) {
  617     if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Record)) {
tools/clang/lib/Sema/SemaFixItUtils.cpp
  208   const CXXRecordDecl *RD = T->getAsCXXRecordDecl();
tools/clang/lib/Sema/SemaInit.cpp
  335                              CXXRecordDecl::base_class_range Bases,
  533     CXXRecordDecl *R = CtorDecl->getParent();
  774     else if (RDecl->isUnion() && isa<CXXRecordDecl>(RDecl) &&
  775              cast<CXXRecordDecl>(RDecl)->hasInClassInitializer()) {
  795       if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RDecl)) {
  979   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(structDecl))
  979   if (auto *CXXRD = dyn_cast<CXXRecordDecl>(structDecl))
 1008   if (CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(ParentRD))
 1008   if (CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(ParentRD))
 1092     auto *CXXRD = T->getAsCXXRecordDecl();
 1226     auto *CXXRD = T->getAsCXXRecordDecl();
 1271     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 1271     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
 1801   auto *CXXRD = ElementType->getAsCXXRecordDecl();
 1994     CXXRecordDecl::base_class_range Bases, RecordDecl::field_iterator Field,
 2022     if (isa<CXXRecordDecl>(RD) &&
 2023         cast<CXXRecordDecl>(RD)->hasInClassInitializer()) {
 2553     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 2553     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RT->getDecl()))
 3857       Ctx.getRecordType(cast<CXXRecordDecl>(Info.FoundDecl->getDeclContext()));
 3939     auto *SourceRD = Initializer->getType()->getAsCXXRecordDecl();
 3944         CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 3944         CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 4032   CXXRecordDecl *DestRecordDecl
 4033     = cast<CXXRecordDecl>(DestRecordType->getDecl());
 4352         CXXRecordDecl *RD = DestType->getAsCXXRecordDecl();
 4502     CXXRecordDecl *T1RecordDecl = cast<CXXRecordDecl>(T1RecordType->getDecl());
 4502     CXXRecordDecl *T1RecordDecl = cast<CXXRecordDecl>(T1RecordType->getDecl());
 4533     CXXRecordDecl *T2RecordDecl = cast<CXXRecordDecl>(T2RecordType->getDecl());
 4533     CXXRecordDecl *T2RecordDecl = cast<CXXRecordDecl>(T2RecordType->getDecl());
 4538       CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 4538       CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 5023     if (CXXRecordDecl *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 5023     if (CXXRecordDecl *ClassDecl = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
 5149     CXXRecordDecl *DestRecordDecl
 5150       = cast<CXXRecordDecl>(DestRecordType->getDecl());
 5186       CXXRecordDecl *SourceRecordDecl
 5187         = cast<CXXRecordDecl>(SourceRecordType->getDecl());
 5193         CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 5193         CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 6111   CXXRecordDecl *Class = nullptr;
 6113     Class = cast<CXXRecordDecl>(Record->getDecl());
 6270       S.LookupConstructors(cast<CXXRecordDecl>(Record->getDecl()));
 6704   if (auto *RD = Type->getAsCXXRecordDecl())
 6763   const auto *RD = FD->getParamDecl(0)->getType()->getPointeeCXXRecordDecl();
 6822     const CXXRecordDecl *RD = Ctor->getParent();
 7144     if (CXXRecordDecl *RD = ILE->getType()->getAsCXXRecordDecl()) {
 8119             = S.LookupDestructor(cast<CXXRecordDecl>(Record->getDecl()));
 8604   CXXRecordDecl *RD = T->getBaseElementTypeUnsafe()->getAsCXXRecordDecl();
 9017           const CXXRecordDecl *InheritedFrom = nullptr;
 9659 static bool isOrIsDerivedFromSpecializationOf(CXXRecordDecl *RD,
 9837       auto *RD = E->getType()->getAsCXXRecordDecl();
 9870     CXXRecordDecl *Primary =
tools/clang/lib/Sema/SemaLambda.cpp
  241 CXXRecordDecl *Sema::createLambdaClosureType(SourceRange IntroducerRange,
  251   CXXRecordDecl *Class = CXXRecordDecl::CreateLambda(Context, DC, Info,
  251   CXXRecordDecl *Class = CXXRecordDecl::CreateLambda(Context, DC, Info,
  359 CXXMethodDecl *Sema::startLambdaDefinition(CXXRecordDecl *Class,
  433     CXXRecordDecl *Class, CXXMethodDecl *Method,
  490   CXXRecordDecl *LambdaClass = CallOperator->getParent();
  967   CXXRecordDecl *Class = createLambdaClosureType(Intro.Range, MethodTyInfo,
 1246   CXXRecordDecl *Class = LSI->Lambda;
 1278                                          CXXRecordDecl *Class,
 1438                                       CXXRecordDecl *Class,
 1572   if (const CXXRecordDecl *RD = BaseT->getAsCXXRecordDecl())
 1653   CXXRecordDecl *Class;
 1864   CXXRecordDecl *Lambda = Conv->getParent();
tools/clang/lib/Sema/SemaLookup.cpp
  883 static bool CanDeclareSpecialMemberFunction(const CXXRecordDecl *Class) {
  892 void Sema::ForceDeclarationOfImplicitMembers(CXXRecordDecl *Class) {
  952     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC))
  952     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC))
  954         CXXRecordDecl *Class = const_cast<CXXRecordDecl *>(Record);
  966     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC))
  966     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC))
  976     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC)) {
  976     if (const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(DC)) {
  978         CXXRecordDecl *Class = const_cast<CXXRecordDecl *>(Record);
 1022       !isa<CXXRecordDecl>(DC))
 1029   const CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
 1029   const CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
 1043   for (CXXRecordDecl::conversion_iterator U = Record->conversion_begin(),
 1297         if (CXXRecordDecl *Record = dyn_cast_or_null<CXXRecordDecl>(Ctx))
 1297         if (CXXRecordDecl *Record = dyn_cast_or_null<CXXRecordDecl>(Ctx))
 1529   } else if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Entity)) {
 1529   } else if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Entity)) {
 1530     if (CXXRecordDecl *Pattern = RD->getTemplateInstantiationPattern())
 1646     if (auto *RD = dyn_cast<CXXRecordDecl>(D))
 2221     if (isa<CXXRecordDecl>(LookupCtx))
 2222       R.setNamingClass(cast<CXXRecordDecl>(LookupCtx));
 2244   CXXRecordDecl *LookupRec = dyn_cast<CXXRecordDecl>(LookupCtx);
 2244   CXXRecordDecl *LookupRec = dyn_cast<CXXRecordDecl>(LookupCtx);
 2272       BaseCallback = &CXXRecordDecl::FindOrdinaryMember;
 2276       BaseCallback = &CXXRecordDecl::FindTagMember;
 2284       BaseCallback = &CXXRecordDecl::FindOMPReductionMember;
 2288       BaseCallback = &CXXRecordDecl::FindOMPMapperMember;
 2302       BaseCallback = &CXXRecordDecl::FindNestedNameSpecifierMember;
 2407     AccessSpecifier AS = CXXRecordDecl::MergeAccess(SubobjectAccess,
 2503 bool Sema::LookupInSuper(LookupResult &R, CXXRecordDecl *Class) {
 2509     CXXRecordDecl *RD = cast<CXXRecordDecl>(
 2509     CXXRecordDecl *RD = cast<CXXRecordDecl>(
 2519                 CXXRecordDecl::MergeAccess(BaseSpec.getAccessSpecifier(),
 2620     bool addClassTransitive(CXXRecordDecl *RD) {
 2691         if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2691         if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2718                                   CXXRecordDecl *Class) {
 2734   if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2734   if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2752     if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2752     if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2774   SmallVector<CXXRecordDecl *, 32> Bases;
 2791       CXXRecordDecl *BaseDecl = cast<CXXRecordDecl>(BaseType->getDecl());
 2791       CXXRecordDecl *BaseDecl = cast<CXXRecordDecl>(BaseType->getDecl());
 2862       CXXRecordDecl *Class =
 2863           cast<CXXRecordDecl>(cast<RecordType>(T)->getDecl());
 2876       if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 2876       if (CXXRecordDecl *EnclosingClass = dyn_cast<CXXRecordDecl>(Ctx))
 3056 Sema::SpecialMemberOverloadResult Sema::LookupSpecialMember(CXXRecordDecl *RD,
 3277 CXXConstructorDecl *Sema::LookupDefaultConstructor(CXXRecordDecl *Class) {
 3286 CXXConstructorDecl *Sema::LookupCopyingConstructor(CXXRecordDecl *Class,
 3298 CXXConstructorDecl *Sema::LookupMovingConstructor(CXXRecordDecl *Class,
 3308 DeclContext::lookup_result Sema::LookupConstructors(CXXRecordDecl *Class) {
 3327 CXXMethodDecl *Sema::LookupCopyingAssignment(CXXRecordDecl *Class,
 3344 CXXMethodDecl *Sema::LookupMovingAssignment(CXXRecordDecl *Class,
 3365 CXXDestructorDecl *Sema::LookupDestructor(CXXRecordDecl *Class) {
 3579           auto *RD = cast<CXXRecordDecl>(D->getLexicalDeclContext());
 3579           auto *RD = cast<CXXRecordDecl>(D->getLexicalDeclContext());
 3800     if (CXXRecordDecl *Class = dyn_cast<CXXRecordDecl>(Ctx))
 3800     if (CXXRecordDecl *Class = dyn_cast<CXXRecordDecl>(Ctx))
 3830     if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Ctx)) {
 3830     if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Ctx)) {
 4306     if (CXXRecordDecl *CD = TI->getAsCXXRecordDecl()) {
 4406       if (CXXRecordDecl *NSDecl = NSType ? NSType->getAsCXXRecordDecl() :
 5239       return NumArgs <= 1 || HasExplicitTemplateArgs || isa<CXXRecordDecl>(ND);
 5257         CXXRecordDecl *CurRD =
 5259         CXXRecordDecl *RD = MD->getParent()->getCanonicalDecl();
tools/clang/lib/Sema/SemaOpenMP.cpp
 1249   const CXXRecordDecl *RD = AcceptIfMutable && SemaRef.getLangOpts().CPlusPlus
 2857           if (const auto *RD =
 3602     if (const auto *RD = Type.getCanonicalType()
16157       !isa<CXXRecordDecl>(CurLexicalContext) &&
tools/clang/lib/Sema/SemaOverload.cpp
 3257                                        CXXRecordDecl *To,
 3362     } else if (CXXRecordDecl *ToRecordDecl
 3363                  = dyn_cast<CXXRecordDecl>(ToRecordType->getDecl())) {
 3431     if (CXXRecordDecl *FromRecordDecl
 3432          = dyn_cast<CXXRecordDecl>(FromRecordType->getDecl())) {
 3438         CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
 3438         CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
 4360   if (CXXRecordDecl *Record = T->getAsCXXRecordDecl())
 4470   CXXRecordDecl *T2RecordDecl
 4471     = dyn_cast<CXXRecordDecl>(T2->castAs<RecordType>()->getDecl());
 4478     CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 4478     CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(D->getDeclContext());
 5169                                 CXXRecordDecl *ActingContext) {
 5811     CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
 5811     CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
 5904       cast<CXXRecordDecl>(RecordTy->getDecl())->getVisibleConversionFunctions();
 6596             cast<CXXRecordDecl>(FunTmpl->getDeclContext()),
 6639   CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(Decl->getDeclContext());
 6639   CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(Decl->getDeclContext());
 6667                          CXXRecordDecl *ActingContext, QualType ObjectType,
 6811     CXXRecordDecl *ActingContext,
 6944     CXXRecordDecl *ActingContext, QualType ObjectType,
 7045     CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
 7102   CXXRecordDecl *ConversionContext
 7103     = cast<CXXRecordDecl>(ImplicitParamType->castAs<RecordType>()->getDecl());
 7233     CXXRecordDecl *ActingDC, Expr *From, QualType ToType,
 7275                                  CXXRecordDecl *ActingContext,
 7801     CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(TyRec->getDecl());
 7801     CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(TyRec->getDecl());
 7870     CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(TyRec->getDecl());
 7870     CXXRecordDecl *ClassDecl = cast<CXXRecordDecl>(TyRec->getDecl());
 9458     auto *Cand1Class = cast<CXXRecordDecl>(Cand1.Function->getDeclContext());
 9458     auto *Cand1Class = cast<CXXRecordDecl>(Cand1.Function->getDeclContext());
 9459     auto *Cand2Class = cast<CXXRecordDecl>(Cand2.Function->getDeclContext());
 9459     auto *Cand2Class = cast<CXXRecordDecl>(Cand2.Function->getDeclContext());
10517     CXXRecordDecl *ParentClass = Meth->getParent();
12109       if (isa<CXXRecordDecl>(DC)) {
12344       (isa<FunctionDecl>(CurContext) || isa<CXXRecordDecl>(CurContext))) {
12564     CXXRecordDecl *NamingClass = nullptr; // lookup ignores member operators
12754     CXXRecordDecl *NamingClass = nullptr; // lookup ignores member operators
13139     CXXRecordDecl *NamingClass = nullptr; // lookup ignores member operators
13406       CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(Func->getDeclContext());
13406       CXXRecordDecl *ActingDC = cast<CXXRecordDecl>(Func->getDeclContext());
13646       cast<CXXRecordDecl>(Record->getDecl())->getVisibleConversionFunctions();
13649     CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
13649     CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
tools/clang/lib/Sema/SemaPseudoObject.cpp
  245       if (const CXXRecordDecl *ClassDecl = ty->getAsCXXRecordDecl())
 1090   for (NamedDecl *D : cast<CXXRecordDecl>(RecordTy->getDecl())
tools/clang/lib/Sema/SemaStmt.cpp
  349       if (const CXXRecordDecl *RD = CE->getType()->getAsCXXRecordDecl())
 2233   if (CXXRecordDecl *D = RangeType->getAsCXXRecordDecl()) {
 3422   auto *R = dyn_cast<CXXRecordDecl>(RT->getDecl());
 3422   auto *R = dyn_cast<CXXRecordDecl>(RT->getDecl());
 4109     if (auto *RD = Underlying->getAsCXXRecordDecl()) {
 4260     RD = CXXRecordDecl::Create(Context, TTK_Struct, DC, Loc, Loc,
tools/clang/lib/Sema/SemaTemplate.cpp
   67   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) {
   67   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) {
   80       Record = cast<CXXRecordDecl>(Record->getDeclContext());
 1448   if (!PrevClassTemplate && PrevDecl && isa<CXXRecordDecl>(PrevDecl) &&
 1449       cast<CXXRecordDecl>(PrevDecl)->isInjectedClassName()) {
 1450     PrevDecl = cast<CXXRecordDecl>(PrevDecl->getDeclContext());
 1452       = cast<CXXRecordDecl>(PrevDecl)->getDescribedClassTemplate();
 1552           auto *Tmpl = cast<CXXRecordDecl>(Hidden)->getDescribedClassTemplate();
 1613   CXXRecordDecl *NewClass =
 1614     CXXRecordDecl::Create(Context, Kind, SemanticContext, KWLoc, NameLoc, Name,
 1749   CXXRecordDecl *Primary = Template->getTemplatedDecl();
 2027     if (isa<CXXRecordDecl>(DC)) {
 2040   if (CXXRecordDecl *DefRecord =
 2041           cast<CXXRecordDecl>(Template->getTemplatedDecl())->getDefinition()) {
 2623     if (CXXRecordDecl *Record
 2624               = dyn_cast_or_null<CXXRecordDecl>(computeDeclContext(SS, true)))
 2639     if (CXXRecordDecl *Record = T->getAsCXXRecordDecl()) {
 2769     if (CXXRecordDecl *Record = T->getAsCXXRecordDecl()) {
 3320         CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Ctx);
 3320         CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(Ctx);
 3477     auto *LookupRD = dyn_cast_or_null<CXXRecordDecl>(LookupCtx);
 3477     auto *LookupRD = dyn_cast_or_null<CXXRecordDecl>(LookupCtx);
 4433       auto *LookupRD = dyn_cast<CXXRecordDecl>(LookupCtx);
 4433       auto *LookupRD = dyn_cast<CXXRecordDecl>(LookupCtx);
 7400     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Ctx)) {
 7400     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Ctx)) {
 7423   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D))
 7423   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D))
 7515                         << ND << isa<CXXRecordDecl>(ND);
 8669     CXXRecordDecl *PrevRecord;
 8671         (PrevRecord = dyn_cast<CXXRecordDecl>(Previous.getFoundDecl()))) {
 8706     } else if (InstantiatedFrom && isa<CXXRecordDecl>(Member)) {
 8707       cast<CXXRecordDecl>(Member)->setInstantiationOfMemberClass(
 8708                                       cast<CXXRecordDecl>(InstantiatedFrom),
 8709         cast<CXXRecordDecl>(Instantiation)->getTemplateSpecializationKind());
 8771   } else if (auto *MemberClass = dyn_cast<CXXRecordDecl>(Member)) {
 8771   } else if (auto *MemberClass = dyn_cast<CXXRecordDecl>(Member)) {
 8773         cast<CXXRecordDecl>(InstantiatedFrom), TSK_ExplicitSpecialization);
 8794 static void completeMemberSpecializationImpl(Sema &S, DeclT *OrigD,
 8817   else if (auto *Record = dyn_cast<CXXRecordDecl>(Instantiation))
 8817   else if (auto *Record = dyn_cast<CXXRecordDecl>(Instantiation))
 9273   CXXRecordDecl *Record = cast<CXXRecordDecl>(Tag);
 9273   CXXRecordDecl *Record = cast<CXXRecordDecl>(Tag);
 9274   CXXRecordDecl *Pattern = Record->getInstantiatedFromMemberClass();
 9303   CXXRecordDecl *PrevDecl
 9304     = cast_or_null<CXXRecordDecl>(Record->getPreviousDecl());
 9321   CXXRecordDecl *RecordDef
 9322     = cast_or_null<CXXRecordDecl>(Record->getDefinition());
 9327     CXXRecordDecl *Def
 9328       = cast_or_null<CXXRecordDecl>(Pattern->getDefinition());
 9341       RecordDef = cast_or_null<CXXRecordDecl>(Record->getDefinition());
 9714     if (auto *RD = dyn_cast<CXXRecordDecl>(Specialization->getDeclContext()))
 9714     if (auto *RD = dyn_cast<CXXRecordDecl>(Specialization->getDeclContext()))
 9852     auto *LookupRD =
 9853         dyn_cast_or_null<CXXRecordDecl>(computeDeclContext(SS, false));
10070       auto *LookupRD = dyn_cast_or_null<CXXRecordDecl>(Ctx);
10070       auto *LookupRD = dyn_cast_or_null<CXXRecordDecl>(Ctx);
10071       auto *FoundRD = dyn_cast<CXXRecordDecl>(Type);
10071       auto *FoundRD = dyn_cast<CXXRecordDecl>(Type);
10341     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(CurContext)) {
10341     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(CurContext)) {
10382     if (auto *RD = dyn_cast<CXXRecordDecl>(ND))
10382     if (auto *RD = dyn_cast<CXXRecordDecl>(ND))
10418   void checkImpl(SpecDecl *Spec) {
10438   void checkInstantiated(CXXRecordDecl *RD) {
tools/clang/lib/Sema/SemaTemplateDeduction.cpp
 1835         CXXRecordDecl *Next = cast<CXXRecordDecl>(NextT->getDecl());
 1835         CXXRecordDecl *Next = cast<CXXRecordDecl>(NextT->getDecl());
 3081     CXXRecordDecl *ThisContext = nullptr;
 4638     CXXRecordDecl *Lambda = cast<CXXMethodDecl>(FD)->getParent();
tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
  173     } else if (CXXRecordDecl *Rec = dyn_cast<CXXRecordDecl>(Ctx)) {
  173     } else if (CXXRecordDecl *Rec = dyn_cast<CXXRecordDecl>(Ctx)) {
  493       if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) {
  493       if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) {
  671         << cast<CXXRecordDecl>(Active->Entity) << Active->SpecialMember;
  983                                         CXXRecordDecl *ThisContext,
 1503                                  CXXRecordDecl *ThisContext,
 1742                                 CXXRecordDecl *ThisContext,
 1939 Sema::SubstBaseSpecifiers(CXXRecordDecl *Instantiation,
 1940                           CXXRecordDecl *Pattern,
 1946       if (const CXXRecordDecl *RD = Base.getType()->getAsCXXRecordDecl()) {
 2076                        CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern,
 2076                        CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern,
 2080   CXXRecordDecl *PatternDef
 2081     = cast_or_null<CXXRecordDecl>(Pattern->getDefinition());
 2237     CXXRecordDecl *ThisContext =
 2238         dyn_cast_or_null<CXXRecordDecl>(ND->getDeclContext());
 2486 static CXXRecordDecl *
 2601   CXXRecordDecl *Pattern = nullptr;
 2641   CXXRecordDecl *Pattern = getPatternForClassTemplateSpecialization(
 2656                               CXXRecordDecl *Instantiation,
 2751     } else if (auto *Record = dyn_cast<CXXRecordDecl>(D)) {
 2751     } else if (auto *Record = dyn_cast<CXXRecordDecl>(D)) {
 2790       CXXRecordDecl *Pattern = Record->getInstantiatedFromMemberClass();
 2821       Pattern = cast_or_null<CXXRecordDecl>(Record->getDefinition());
 2859         CXXRecordDecl *ClassPattern =
 3027   if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
 3027   if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
   36     return cast<CXXRecordDecl>(DC)->isLocalClass();
  276   auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(FD->getDeclContext());
  276   auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(FD->getDeclContext());
  359   auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(FD->getDeclContext());
  359   auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(FD->getDeclContext());
  487           *this, dyn_cast_or_null<CXXRecordDecl>(ND->getDeclContext()),
  629       CXXRecordDecl *ThisContext =
  630           dyn_cast_or_null<CXXRecordDecl>(ND->getDeclContext());
  647 static DeclT *getPreviousDeclForInstantiation(DeclT *D) {
  647 static DeclT *getPreviousDeclForInstantiation(DeclT *D) {
  648   DeclT *Result = D->getPreviousDecl();
  653   if (Result && isa<CXXRecordDecl>(D->getDeclContext()) &&
  728   CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext());
  728   CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext());
 1006   if (CXXRecordDecl *Parent= dyn_cast<CXXRecordDecl>(Field->getDeclContext())) {
 1006   if (CXXRecordDecl *Parent= dyn_cast<CXXRecordDecl>(Field->getDeclContext())) {
 1319   CXXRecordDecl *Pattern = D->getTemplatedDecl();
 1332   CXXRecordDecl *PrevDecl = nullptr;
 1428   CXXRecordDecl *RecordInst = CXXRecordDecl::Create(
 1428   CXXRecordDecl *RecordInst = CXXRecordDecl::Create(
 1652 Decl *TemplateDeclInstantiator::VisitCXXRecordDecl(CXXRecordDecl *D) {
 1653   CXXRecordDecl *PrevDecl = nullptr;
 1655     PrevDecl = cast<CXXRecordDecl>(Owner);
 1656   else if (CXXRecordDecl *PatternPrev = getPreviousDeclForInstantiation(D)) {
 1661     PrevDecl = cast<CXXRecordDecl>(Prev);
 1664   CXXRecordDecl *Record = CXXRecordDecl::Create(
 1664   CXXRecordDecl *Record = CXXRecordDecl::Create(
 2150   CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
 2150   CXXRecordDecl *Record = cast<CXXRecordDecl>(DC);
 2370     if (const auto *A = dyn_cast<CXXRecordDecl>(Owner)) {
 2370     if (const auto *A = dyn_cast<CXXRecordDecl>(Owner)) {
 2752     if (auto *RD = dyn_cast<CXXRecordDecl>(SemaRef.CurContext))
 2752     if (auto *RD = dyn_cast<CXXRecordDecl>(SemaRef.CurContext))
 3087     auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(Owner);
 3087     auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(Owner);
 3177     auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(Owner);
 3177     auto *ThisContext = dyn_cast_or_null<CXXRecordDecl>(Owner);
 3819   CXXRecordDecl *ThisContext = nullptr;
 3822     ThisContext = cast<CXXRecordDecl>(Owner);
 4332   if (CXXRecordDecl *Rec = dyn_cast<CXXRecordDecl>(Function->getDeclContext()))
 4332   if (CXXRecordDecl *Rec = dyn_cast<CXXRecordDecl>(Function->getDeclContext()))
 5018                                   cast<CXXRecordDecl>(CurContext->getParent()));
 5108 static bool isInstantiationOf(CXXRecordDecl *Pattern,
 5109                               CXXRecordDecl *Instance) {
 5213   if (auto *Record = dyn_cast<CXXRecordDecl>(Other))
 5213   if (auto *Record = dyn_cast<CXXRecordDecl>(Other))
 5214     return isInstantiationOf(cast<CXXRecordDecl>(D), Record);
 5334       (isa<CXXRecordDecl>(D) && cast<CXXRecordDecl>(D)->isLambda())) {
 5334       (isa<CXXRecordDecl>(D) && cast<CXXRecordDecl>(D)->isLambda())) {
 5374     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
 5374     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
 5395   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) {
 5395   if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) {
 5417       if (CXXRecordDecl *InstRecord = dyn_cast<CXXRecordDecl>(DC)) {
 5417       if (CXXRecordDecl *InstRecord = dyn_cast<CXXRecordDecl>(DC)) {
 5457           auto *SubstRecord = T->getAsCXXRecordDecl();
 5499     if (CXXRecordDecl *Spec = dyn_cast<CXXRecordDecl>(ParentDC)) {
 5499     if (CXXRecordDecl *Spec = dyn_cast<CXXRecordDecl>(ParentDC)) {
 5565           << Context.getTypeDeclType(cast<CXXRecordDecl>(ParentDC));
tools/clang/lib/Sema/SemaType.cpp
 3300     const CXXRecordDecl *RD = RT->getAsCXXRecordDecl();
 3424   auto *RD = T->getAsCXXRecordDecl();
 4970                  dyn_cast_or_null<CXXRecordDecl>(S.computeDeclContext(SS))) {
 7877   } else if (auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 7877   } else if (auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 7878     if (auto *Pattern = RD->getTemplateInstantiationPattern())
 7946 static void assignInheritanceModel(Sema &S, CXXRecordDecl *RD) {
 8068   if (auto *RD = dyn_cast_or_null<CXXRecordDecl>(Tag)) {
 8068   if (auto *RD = dyn_cast_or_null<CXXRecordDecl>(Tag)) {
 8086       CXXRecordDecl *Pattern = RD->getInstantiatedFromMemberClass();
 8201   const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
 8201   const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
tools/clang/lib/Sema/TreeTransform.h
  612                                       CXXRecordDecl *ThisContext,
 3719       CXXRecordDecl *RD =
 3720           cast_or_null<CXXRecordDecl>(getDerived().TransformDecl(
 5384     TypeLocBuilder &TLB, FunctionProtoTypeLoc TL, CXXRecordDecl *ThisContext,
10685         CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordT->getDecl());
10685         CXXRecordDecl *Record = cast<CXXRecordDecl>(RecordT->getDecl());
10755         CXXRecordDecl *Record = cast<CXXRecordDecl>(DestroyedRec->getDecl());
10755         CXXRecordDecl *Record = cast<CXXRecordDecl>(DestroyedRec->getDecl());
10924     CXXRecordDecl *NamingClass
10925       = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl(
11492   CXXRecordDecl *OldClass = E->getLambdaClass();
11493   CXXRecordDecl *Class
11914     CXXRecordDecl *NamingClass
11915       = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl(
tools/clang/lib/Serialization/ASTCommon.cpp
  430     if (auto *RD = dyn_cast<CXXRecordDecl>(D))
  449   if (D->getDeclName() || !isa<CXXRecordDecl>(D->getLexicalDeclContext()))
tools/clang/lib/Serialization/ASTReader.cpp
 6745     CXXRecordDecl *D = ReadDeclAs<CXXRecordDecl>(*Loc.F, Record, Idx);
 6745     CXXRecordDecl *D = ReadDeclAs<CXXRecordDecl>(*Loc.F, Record, Idx);
 6750     for (auto *DI = D; DI; DI = DI->getPreviousDecl()) {
 6758       for (auto *DI = D; DI; DI = DI->getPreviousDecl())
 7620       isa<CXXRecordDecl>(DC) || isa<EnumDecl>(DC)) {
 8766     VT.Record = dyn_cast_or_null<CXXRecordDecl>(GetDecl(VTableUses[Idx++]));
 9506       CXXRecordDecl *RD = ReadDeclAs<CXXRecordDecl>(F, Record, Idx);
 9506       CXXRecordDecl *RD = ReadDeclAs<CXXRecordDecl>(F, Record, Idx);
 9569       CXXRecordDecl *RD = ReadDeclAs<CXXRecordDecl>(F, Record, Idx);
 9569       CXXRecordDecl *RD = ReadDeclAs<CXXRecordDecl>(F, Record, Idx);
 9966       if (auto RD = dyn_cast<CXXRecordDecl>(D)) {
 9972           cast<CXXRecordDecl>(R)->DefinitionData = RD->DefinitionData;
10020       if (auto *RD = dyn_cast<CXXRecordDecl>(FD->getLexicalParent()))
10020       if (auto *RD = dyn_cast<CXXRecordDecl>(FD->getLexicalParent()))
10080       auto *RD = RecordPair.first;
10245     CXXRecordDecl *FirstRecord = Merge.first;
10248       CXXRecordDecl *SecondRecord = RecordPair.first;
tools/clang/lib/Serialization/ASTReaderDecl.cpp
  144     T *ReadDeclAs() {
  145       return Record.readDeclAs<T>();
  167     void ReadCXXRecordDefinition(CXXRecordDecl *D, bool Update);
  168     void ReadCXXDefinitionData(struct CXXRecordDecl::DefinitionData &Data,
  169                                const CXXRecordDecl *D);
  170     void MergeDefinitionData(CXXRecordDecl *D,
  171                              struct CXXRecordDecl::DefinitionData &&NewDD);
  340     RedeclarableResult VisitCXXRecordDeclImpl(CXXRecordDecl *D);
  341     void VisitCXXRecordDecl(CXXRecordDecl *D) { VisitCXXRecordDeclImpl(D); }
  707   if (!isa<CXXRecordDecl>(TD))
  731   if (!isa<CXXRecordDecl>(TD))
 1658     struct CXXRecordDecl::DefinitionData &Data, const CXXRecordDecl *D) {
 1658     struct CXXRecordDecl::DefinitionData &Data, const CXXRecordDecl *D) {
 1722     CXXRecordDecl *D, struct CXXRecordDecl::DefinitionData &&MergeDD) {
 1722     CXXRecordDecl *D, struct CXXRecordDecl::DefinitionData &&MergeDD) {
 1748     auto *Def = DD.Definition;
 1795 void ASTDeclReader::ReadCXXRecordDefinition(CXXRecordDecl *D, bool Update) {
 1796   struct CXXRecordDecl::DefinitionData *DD;
 1803     DD = new (C) CXXRecordDecl::LambdaDefinitionData(D, nullptr, false, false,
 1806     DD = new (C) struct CXXRecordDecl::DefinitionData(D);
 1808   CXXRecordDecl *Canon = D->getCanonicalDecl();
 1836 ASTDeclReader::VisitCXXRecordDeclImpl(CXXRecordDecl *D) {
 1866     auto *RD = ReadDeclAs<CXXRecordDecl>();
 1866     auto *RD = ReadDeclAs<CXXRecordDecl>();
 2459   if (auto *DClass = dyn_cast<CXXRecordDecl>(DPattern)) {
 2459   if (auto *DClass = dyn_cast<CXXRecordDecl>(DPattern)) {
 2462     auto *ExistingClass =
 2463         cast<CXXRecordDecl>(ExistingPattern)->getCanonicalDecl();
 3135   if (auto *RD = dyn_cast<CXXRecordDecl>(DC)) {
 3135   if (auto *RD = dyn_cast<CXXRecordDecl>(DC)) {
 3146       DD = new (Reader.getContext()) struct CXXRecordDecl::DefinitionData(RD);
 3227   if (auto *RD = dyn_cast<CXXRecordDecl>(LexicalDC)) {
 3227   if (auto *RD = dyn_cast<CXXRecordDecl>(LexicalDC)) {
 3703     D = CXXRecordDecl::CreateDeserialized(Context, ID);
 4244       auto *RD = cast<CXXRecordDecl>(D);
 4244       auto *RD = cast<CXXRecordDecl>(D);
 4364       auto *RD = cast<CXXRecordDecl>(D);
 4364       auto *RD = cast<CXXRecordDecl>(D);
tools/clang/lib/Serialization/ASTReaderStmt.cpp
   95     T *ReadDeclAs() {
   96       return Record.readDeclAs<T>();
 1800   E->NamingClass = ReadDeclAs<CXXRecordDecl>();
tools/clang/lib/Serialization/ASTWriter.cpp
 4091   if (auto *D = dyn_cast<CXXRecordDecl>(DC)) {
 4091   if (auto *D = dyn_cast<CXXRecordDecl>(DC)) {
 4112       for (Decl *ChildD : cast<CXXRecordDecl>(DC)->decls())
 5316         auto *RD = cast<CXXRecordDecl>(D);
 6185 void ASTRecordWriter::AddCXXDefinitionData(const CXXRecordDecl *D) {
 6330   if (auto *RD = dyn_cast<CXXRecordDecl>(D)) {
 6388 void ASTWriter::AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) {
tools/clang/lib/Serialization/ASTWriterDecl.cpp
   74     void VisitCXXRecordDecl(CXXRecordDecl *D);
  408   if (!isa<CXXRecordDecl>(D))
  460       !CXXRecordDecl::classofKind(D->getKind()) &&
  497       !CXXRecordDecl::classofKind(D->getKind()) &&
 1298 void ASTDeclWriter::VisitCXXRecordDecl(CXXRecordDecl *D) {
tools/clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp
  129     const auto *DRecordDecl = cast<CXXRecordDecl>(Dtor->getDecl()->getParent());
  129     const auto *DRecordDecl = cast<CXXRecordDecl>(Dtor->getDecl()->getParent());
tools/clang/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
  483     const CXXRecordDecl *LambdaClass = LE->getLambdaClass();
tools/clang/lib/StaticAnalyzer/Checkers/DeleteWithNonVirtualDtorChecker.cpp
   73   const auto *BaseClass = BaseClassRegion->getValueType()->getAsCXXRecordDecl();
   74   const auto *DerivedClass =
tools/clang/lib/StaticAnalyzer/Checkers/GTestChecker.cpp
  112   getAssertionResultSuccessFieldValue(const CXXRecordDecl *AssertionResultDecl,
  168   const CXXRecordDecl *AssertResultClassDecl = Call->getDecl()->getParent();
  194   const CXXRecordDecl *CtorParent = CtorDecl->getParent();
  250     const CXXRecordDecl *AssertionResultDecl, SVal Instance,
tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp
  274 bool isIterator(const CXXRecordDecl *CRD);
 1639 const CXXRecordDecl *getCXXRecordDecl(ProgramStateRef State,
 1648   const auto *CRD = Type->getUnqualifiedDesugaredType()->getAsCXXRecordDecl();
 1652 bool isIterator(const CXXRecordDecl *CRD) {
 1867   const auto *CRD = getCXXRecordDecl(State, Reg);
 1883   const auto *CRD = getCXXRecordDecl(State, Reg);
 1898   const auto *CRD = getCXXRecordDecl(State, Reg);
 1912 const CXXRecordDecl *getCXXRecordDecl(ProgramStateRef State,
tools/clang/lib/StaticAnalyzer/Checkers/LLVMConventionsChecker.cpp
  197 static bool IsPartOfAST(const CXXRecordDecl *R) {
  204       CXXRecordDecl *baseD = cast<CXXRecordDecl>(baseT->getDecl());
  204       CXXRecordDecl *baseD = cast<CXXRecordDecl>(baseT->getDecl());
  216   const CXXRecordDecl *Root;
  221   ASTFieldVisitor(const CXXRecordDecl *root, BugReporter &br,
  230 static void CheckASTMemory(const CXXRecordDecl *R, BugReporter &BR,
  297                                                 check::ASTDecl<CXXRecordDecl>,
  300   void checkASTDecl(const CXXRecordDecl *R, AnalysisManager& mgr,
tools/clang/lib/StaticAnalyzer/Checkers/MoveChecker.cpp
  147   ObjectKind classifyObject(const MemRegion *MR, const CXXRecordDecl *RD) const;
  152                      const CXXRecordDecl *RD, MisuseKind MK) const;
  154   bool belongsTo(const CXXRecordDecl *RD, const llvm::StringSet<> &Set) const;
  159                     const CXXRecordDecl *RD, MisuseKind MK)
  181     const CXXRecordDecl *RD;
  211                 const CXXRecordDecl *RD, MisuseKind MK,
  216   ExplodedNode *reportBug(const MemRegion *Region, const CXXRecordDecl *RD,
  350                            const CXXRecordDecl *RD, MisuseKind MK,
  391                                      const CXXRecordDecl *RD, CheckerContext &C,
  486   const CXXRecordDecl *RD = MethodDecl->getParent();
  547 bool MoveChecker::belongsTo(const CXXRecordDecl *RD,
  555                             const CXXRecordDecl *RD) const {
  576                                 const CXXRecordDecl *RD, MisuseKind MK) const {
  615       const CXXRecordDecl *RD = CtorDec->getParent();
  653   const CXXRecordDecl *RD = MethodDecl->getParent();
tools/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
   85     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
  150     if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
tools/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp
   86     if (const auto *RD = PT->getAsCXXRecordDecl())
  195       if (const auto *RD = dyn_cast<CXXRecordDecl>(VD->getDeclContext()))
  195       if (const auto *RD = dyn_cast<CXXRecordDecl>(VD->getDeclContext()))
tools/clang/lib/StaticAnalyzer/Checkers/ReturnValueChecker.cpp
   63     if (const CXXRecordDecl *RD = MD->getParent())
tools/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
  352   const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD);
  352   const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD);
  530   const auto *Parent = dyn_cast<CXXRecordDecl>(FD->getParent());
  530   const auto *Parent = dyn_cast<CXXRecordDecl>(FD->getParent());
  588   const auto *CXXParent = dyn_cast<CXXRecordDecl>(Field->getParent());
  588   const auto *CXXParent = dyn_cast<CXXRecordDecl>(Field->getParent());
tools/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
  501   if (const auto *RDX = dyn_cast<CXXRecordDecl>(RD))
  501   if (const auto *RDX = dyn_cast<CXXRecordDecl>(RD))
  507   if (const auto *RDX = dyn_cast<CXXRecordDecl>(RD))
  507   if (const auto *RDX = dyn_cast<CXXRecordDecl>(RD))
 2699         const CXXRecordDecl *CD = MD->getParent();
 2709         const CXXRecordDecl *CD = MD->getParent();
 2722         const CXXRecordDecl *CD = MD->getParent();
tools/clang/lib/StaticAnalyzer/Core/CallEvent.cpp
  698     const CXXRecordDecl *ParentRecord = T->getAsCXXRecordDecl();
  748   const CXXRecordDecl *RD = RegionType->getAsCXXRecordDecl();
  805       const CXXRecordDecl *Class = MD->getParent();
  816         const CXXRecordDecl *StaticClass = StaticMD->getParent();
tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  998     const CXXRecordDecl *RD = BTy->getAsCXXRecordDecl();
 2441       const CXXRecordDecl *CXXRec = MD->getParent();
 2697       if (const auto *RD = VR->getValueType()->getAsCXXRecordDecl())
tools/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
   44   const CXXRecordDecl *ThisRD = nullptr;
  612   const CXXRecordDecl *RecordDecl = ObjectType->getAsCXXRecordDecl();
  902   CXXRecordDecl::field_iterator CurField = LE->getLambdaClass()->field_begin();
tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
  143   const CXXRecordDecl *ExpectedClass = ExpectedTy->getPointeeCXXRecordDecl();
  144   const CXXRecordDecl *ActualClass = ActualTy->getPointeeCXXRecordDecl();
  800 static bool hasMember(const ASTContext &Ctx, const CXXRecordDecl *RD,
  810             return CXXRecordDecl::FindOrdinaryMember(Specifier, Path, DeclName);
  822 static bool isContainerClass(const ASTContext &Ctx, const CXXRecordDecl *RD) {
  847   const CXXRecordDecl *RD = Dtor->getParent();
tools/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
  398                                         const CXXRecordDecl *RD,
  411                                            const CXXRecordDecl *RD,
 1053 static bool isValidBaseClass(const CXXRecordDecl *BaseClass,
 1058   const CXXRecordDecl *Class = Super->getValueType()->getAsCXXRecordDecl();
 1074 MemRegionManager::getCXXBaseObjectRegion(const CXXRecordDecl *RD,
 1094 MemRegionManager::getCXXDerivedObjectRegion(const CXXRecordDecl *RD,
 1280 static bool isImmediateBase(const CXXRecordDecl *Child,
 1281                             const CXXRecordDecl *Base) {
 1357       const CXXRecordDecl *Child = Ty->getAsCXXRecordDecl();
tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
 1083     if (const auto *RD = TO->getValueType()->getAsCXXRecordDecl()) {
 2104   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD))
 2104   if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(RD))
 2337   if (const CXXRecordDecl *Class = dyn_cast<CXXRecordDecl>(RD))
 2337   if (const CXXRecordDecl *Class = dyn_cast<CXXRecordDecl>(RD))
 2424   if (const auto *CRD = dyn_cast<CXXRecordDecl>(RD)) {
 2424   if (const auto *CRD = dyn_cast<CXXRecordDecl>(RD)) {
 2445       const CXXRecordDecl *BRD = BTy->getAsCXXRecordDecl();
tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
  278 loc::MemRegionVal SValBuilder::getCXXThis(const CXXRecordDecl *D,
tools/clang/lib/StaticAnalyzer/Core/Store.cpp
  237   const CXXRecordDecl *RD = TVR->getValueType()->getAsCXXRecordDecl();
  241   const CXXRecordDecl *Expected = Ty->getPointeeCXXRecordDecl();
  279   const CXXRecordDecl *BaseDecl = BaseType->getPointeeCXXRecordDecl();
  306 static const CXXRecordDecl *getCXXRecordType(const MemRegion *MR) {
  325   const CXXRecordDecl *TargetClass = TargetType->getAsCXXRecordDecl();
  331   while (const CXXRecordDecl *MRClass = getCXXRecordType(MR)) {
  384     const CXXRecordDecl *SourceClass = T->getPointeeCXXRecordDecl();
tools/clang/lib/Tooling/Core/Lookup.cpp
  203       isa<CXXRecordDecl>(FromDecl) &&
  204       !cast<CXXRecordDecl>(FromDecl)->isCompleteDefinition();
tools/clang/lib/Tooling/Refactoring/Extract/Extract.cpp
   51     while (const auto *RD = dyn_cast<CXXRecordDecl>(D->getLexicalDeclContext()))
   51     while (const auto *RD = dyn_cast<CXXRecordDecl>(D->getLexicalDeclContext()))
tools/clang/lib/Tooling/Refactoring/Rename/USRFindingAction.cpp
   78     } else if (const auto *RecordDecl = dyn_cast<CXXRecordDecl>(FoundDecl)) {
   78     } else if (const auto *RecordDecl = dyn_cast<CXXRecordDecl>(FoundDecl)) {
  106   void handleCXXRecordDecl(const CXXRecordDecl *RecordDecl) {
  129   void addUSRsOfCtorDtors(const CXXRecordDecl *RecordDecl) {
tools/clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp
  454     if (const auto *RD = Loc.getType()->getAsCXXRecordDecl())
tools/clang/tools/extra/clang-change-namespace/ChangeNamespace.cpp
  549   } else if (const auto *FwdDecl =
  550                  Result.Nodes.getNodeAs<CXXRecordDecl>("class_fwd_decl")) {
tools/clang/tools/extra/clang-doc/Serialize.cpp
  329 static void parseBases(RecordInfo &I, const CXXRecordDecl *D) {
  435 parseBases(RecordInfo &I, const CXXRecordDecl *D, bool IsFileInRootDir,
  443       if (const CXXRecordDecl *Base =
  444               cast_or_null<CXXRecordDecl>(Ty->getDecl()->getDefinition())) {
  528   if (const auto *C = dyn_cast<CXXRecordDecl>(D)) {
  528   if (const auto *C = dyn_cast<CXXRecordDecl>(D)) {
tools/clang/tools/extra/clang-move/HelperDeclRefGraph.cpp
   94     if (const auto *RD = dyn_cast<CXXRecordDecl>(DC))
   94     if (const auto *RD = dyn_cast<CXXRecordDecl>(DC))
  124   } else if (const auto *UsedClass =
  125                  Result.Nodes.getNodeAs<CXXRecordDecl>("used_class")) {
tools/clang/tools/extra/clang-move/Move.cpp
   52   const CXXRecordDecl *Parent = Node.getParent();
   55   while (const auto *NextParent =
   56              dyn_cast<CXXRecordDecl>(Parent->getParent())) {
  236     else if (const auto *CD =
  237                  Result.Nodes.getNodeAs<CXXRecordDecl>("moved_class"))
  261   void MatchClassDeclaration(const CXXRecordDecl *CD, SourceManager *SM) {
  663   } else if (const auto *FWD =
  664                  Result.Nodes.getNodeAs<CXXRecordDecl>("fwd_decl")) {
tools/clang/tools/extra/clang-reorder-fields/ReorderFieldsAction.cpp
  278     const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD);
  278     const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD);
tools/clang/tools/extra/clang-tidy/bugprone/CopyConstructorInitCheck.cpp
   60     const CXXRecordDecl *BaseClass =
tools/clang/tools/extra/clang-tidy/bugprone/DanglingHandleCheck.cpp
  178   auto *Handle = Result.Nodes.getNodeAs<CXXRecordDecl>("handle");
tools/clang/tools/extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.cpp
   50   if (const auto *RecordDecl =
   51           Result.Nodes.getNodeAs<CXXRecordDecl>("record_decl")) {
   82 static bool haveSameNamespaceOrTranslationUnit(const CXXRecordDecl *Decl1,
   83                                                const CXXRecordDecl *Decl2) {
  103 static std::string getNameOfNamespace(const CXXRecordDecl *Decl) {
  122     for (const auto *CurDecl : Declarations) {
  134       for (const auto *Decl : Declarations) {
  158       for (const auto *Def : Definitions) {
tools/clang/tools/extra/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.h
   49   llvm::StringMap<std::vector<const CXXRecordDecl *>> DeclNameToDefinitions;
   50   llvm::StringMap<std::vector<const CXXRecordDecl *>> DeclNameToDeclarations;
tools/clang/tools/extra/clang-tidy/bugprone/ParentVirtualCallCheck.cpp
   24 using BasesVector = llvm::SmallVector<const CXXRecordDecl *, 5>;
   26 static bool isParentOf(const CXXRecordDecl &Parent,
   27                        const CXXRecordDecl &ThisClass) {
   30   const CXXRecordDecl *ParentCanonicalDecl = Parent.getCanonicalDecl();
   33            auto *BaseDecl = Base.getType()->getAsCXXRecordDecl();
   44     const auto *BaseDecl = Base.getType()->getAsCXXRecordDecl();
   53     const CXXRecordDecl *RecordDeclType = TypePtr->getPointeeCXXRecordDecl();
  109   const auto *ThisType = ThisTypePtr->getPointeeCXXRecordDecl();
  115   const auto *CastToType = CastToTypePtr->getAsCXXRecordDecl();
  129   for (const CXXRecordDecl *Parent : Parents) {
tools/clang/tools/extra/clang-tidy/bugprone/UndelegatedConstructorCheck.cpp
   44         const auto *Derived = Nodes.getNodeAs<CXXRecordDecl>(ID);
   44         const auto *Derived = Nodes.getNodeAs<CXXRecordDecl>(ID);
tools/clang/tools/extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp
  213   const CXXRecordDecl *RecordDecl = TheType->getAsCXXRecordDecl();
tools/clang/tools/extra/clang-tidy/bugprone/VirtualNearMissCheck.cpp
   71   const CXXRecordDecl *DRD = DTy->getAsCXXRecordDecl();
   72   const CXXRecordDecl *BRD = BTy->getAsCXXRecordDecl();
  197     const CXXMethodDecl *BaseMD, const CXXRecordDecl *DerivedRD) {
  236   const auto *DerivedRD = DerivedMD->getParent()->getDefinition();
  240     if (const auto *BaseRD = BaseSpec.getType()->getAsCXXRecordDecl()) {
tools/clang/tools/extra/clang-tidy/bugprone/VirtualNearMissCheck.h
   45                                   const CXXRecordDecl *DerivedRD);
   54   llvm::DenseMap<std::pair<const CXXMethodDecl *, const CXXRecordDecl *>, bool>
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.cpp
  369   const auto *BadClass = Nodes.getNodeAs<CXXRecordDecl>("non_destructor_class");
  369   const auto *BadClass = Nodes.getNodeAs<CXXRecordDecl>("non_destructor_class");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProTypeCstyleCastCheck.cpp
   56     const auto *SourceDecl = SourceType->getPointeeCXXRecordDecl();
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp
   39       if (const CXXRecordDecl *R = F->getType()->getAsCXXRecordDecl())
  216 void getInitializationsInOrder(const CXXRecordDecl &ClassDecl,
  305   } else if (const auto *Record =
  306                  Result.Nodes.getNodeAs<CXXRecordDecl>("record")) {
  337   if (const CXXRecordDecl *ClassDecl = Type->getAsCXXRecordDecl()) {
  394     ASTContext &Context, const CXXRecordDecl &ClassDecl,
  484     const ASTContext &Context, const CXXRecordDecl &ClassDecl,
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.h
   48                                      const CXXRecordDecl &ClassDecl,
   54                                         const CXXRecordDecl &ClassDecl,
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProTypeStaticCastDowncastCheck.cpp
   35   const auto *SourceDecl = SourceType->getPointeeCXXRecordDecl();
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp
   74     const Expr &Call, const CXXRecordDecl &DerivedDecl,
   75     const CXXRecordDecl &BaseDecl) {
   92       if (const auto *BaseRecord = cast_or_null<CXXRecordDecl>(
   92       if (const auto *BaseRecord = cast_or_null<CXXRecordDecl>(
  100   const auto *BaseDecl = Result.Nodes.getNodeAs<CXXRecordDecl>("BaseDecl");
  100   const auto *BaseDecl = Result.Nodes.getNodeAs<CXXRecordDecl>("BaseDecl");
  101   const auto *DerivedDecl =
  102       Result.Nodes.getNodeAs<CXXRecordDecl>("DerivedDecl");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/SlicingCheck.h
   36                                        const CXXRecordDecl &DerivedDecl,
   37                                        const CXXRecordDecl &BaseDecl);
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
  102   const auto *MatchedDecl = Result.Nodes.getNodeAs<CXXRecordDecl>("class-def");
  102   const auto *MatchedDecl = Result.Nodes.getNodeAs<CXXRecordDecl>("class-def");
tools/clang/tools/extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
   30 void MultipleInheritanceCheck::addNodeToInterfaceMap(const CXXRecordDecl *Node,
   40 bool MultipleInheritanceCheck::getInterfaceStatus(const CXXRecordDecl *Node,
   52     const CXXRecordDecl *Node) const {
   62 bool MultipleInheritanceCheck::isInterface(const CXXRecordDecl *Node) {
   78     const auto *Base = cast<CXXRecordDecl>(D);
   78     const auto *Base = cast<CXXRecordDecl>(D);
  101   if (const auto *D = Result.Nodes.getNodeAs<CXXRecordDecl>("decl")) {
  101   if (const auto *D = Result.Nodes.getNodeAs<CXXRecordDecl>("decl")) {
  109       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
  109       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
  118       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
  118       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
tools/clang/tools/extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h
   32   void addNodeToInterfaceMap(const CXXRecordDecl *Node, bool isInterface);
   33   bool getInterfaceStatus(const CXXRecordDecl *Node, bool &isInterface) const;
   34   bool isCurrentClassInterface(const CXXRecordDecl *Node) const;
   35   bool isInterface(const CXXRecordDecl *Node);
tools/clang/tools/extra/clang-tidy/fuchsia/VirtualInheritanceCheck.cpp
   36   if (const auto *D = Result.Nodes.getNodeAs<CXXRecordDecl>("decl"))
   36   if (const auto *D = Result.Nodes.getNodeAs<CXXRecordDecl>("decl"))
tools/clang/tools/extra/clang-tidy/google/UpgradeGoogletestCaseCheck.cpp
  244   const auto *Class = Result.Nodes.getNodeAs<CXXRecordDecl>("class");
  244   const auto *Class = Result.Nodes.getNodeAs<CXXRecordDecl>("class");
tools/clang/tools/extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp
  117         if (const auto *RD = dyn_cast<CXXRecordDecl>(DC)) {
  117         if (const auto *RD = dyn_cast<CXXRecordDecl>(DC)) {
tools/clang/tools/extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
  102                                          const CXXRecordDecl *RD = nullptr) {
  121     if (const auto *BaseRD = BS.getType()->getAsCXXRecordDecl())
  158   const CXXRecordDecl *RD = nullptr;
tools/clang/tools/extra/clang-tidy/misc/NewDeleteOverloadsCheck.h
   21   std::map<const clang::CXXRecordDecl *,
tools/clang/tools/extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp
   67   const CXXRecordDecl *LeftDeleter = LeftDeleterType->getAsCXXRecordDecl();
   68   const CXXRecordDecl *RightDeleter = RightDeleterType->getAsCXXRecordDecl();
tools/clang/tools/extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
   81     if (isa<CXXRecordDecl>(Using->getDeclContext()))
  135       if (auto *RD = Used->getAsType()->getAsCXXRecordDecl())
tools/clang/tools/extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
  409       if (const CXXRecordDecl *RD = New->getType()->getPointeeCXXRecordDecl()) {
tools/clang/tools/extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
   24 getAllNamedFields(const CXXRecordDecl *Record) {
   37 static std::set<const Type *> getAllDirectBases(const CXXRecordDecl *Record) {
   65   const auto *Record = Ctor->getParent();
  119   const auto *Record = Operator->getParent();
tools/clang/tools/extra/clang-tidy/performance/MoveConstArgCheck.cpp
   79     if (const CXXRecordDecl *R = Arg->getType()->getAsCXXRecordDecl()) {
tools/clang/tools/extra/clang-tidy/performance/MoveConstructorInitCheck.cpp
   60   const auto *RD = QT->getAsCXXRecordDecl();
tools/clang/tools/extra/clang-tidy/readability/FunctionSizeCheck.cpp
   98   bool TraverseCXXRecordDecl(CXXRecordDecl *Node) {
  100     Base::TraverseCXXRecordDecl(Node);
tools/clang/tools/extra/clang-tidy/readability/IdentifierNamingCheck.cpp
  434   if (const auto *Decl = dyn_cast<CXXRecordDecl>(D)) {
  434   if (const auto *Decl = dyn_cast<CXXRecordDecl>(D)) {
  588       return CXXRecordDecl::FindOrdinaryMember(S, P, Decl->getDeclName());
tools/clang/tools/extra/clang-tidy/utils/ExceptionAnalyzer.cpp
   50   const auto *DerivedClass = DerivedType->getAsCXXRecordDecl();
   51   const auto *BaseClass = BaseType->getAsCXXRecordDecl();
tools/clang/tools/extra/clang-tidy/utils/TypeTraits.cpp
   22   auto *Record = Type->getAsCXXRecordDecl();
   29   auto *Record = Type->getAsCXXRecordDecl();
   53   const auto *ClassDecl = dyn_cast<CXXRecordDecl>(&RecordDecl);
   53   const auto *ClassDecl = dyn_cast<CXXRecordDecl>(&RecordDecl);
  139   auto *Record = Type->getAsCXXRecordDecl();
  145   auto *Record = Type->getAsCXXRecordDecl();
tools/clang/tools/extra/clangd/AST.cpp
   56   if (const auto *TD = dyn_cast<T>(D))
   56   if (const auto *TD = dyn_cast<T>(D))
   64          isTemplateSpecializationKind<CXXRecordDecl>(D, Kind) ||
tools/clang/tools/extra/clangd/FindTarget.cpp
   92     if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(D)) {
   92     if (const CXXRecordDecl *CRD = dyn_cast<CXXRecordDecl>(D)) {
  278         else if (const CXXRecordDecl *RD = TST->getAsCXXRecordDecl())
tools/clang/tools/extra/clangd/XRefs.cpp
  578       if (const auto *CD = QT->getAsCXXRecordDecl())
 1126 using RecursionProtectionSet = llvm::SmallSet<const CXXRecordDecl *, 4>;
 1128 static void fillSuperTypes(const CXXRecordDecl &CXXRD, ASTContext &ASTCtx,
 1143   for (const CXXRecordDecl *ParentDecl : typeParents(&CXXRD)) {
 1157 const CXXRecordDecl *findRecordTypeAt(ParsedAST &AST, Position Pos) {
 1181   return dyn_cast<CXXRecordDecl>(D);
 1184 std::vector<const CXXRecordDecl *> typeParents(const CXXRecordDecl *CXXRD) {
 1184 std::vector<const CXXRecordDecl *> typeParents(const CXXRecordDecl *CXXRD) {
 1185   std::vector<const CXXRecordDecl *> Result;
 1188     const CXXRecordDecl *ParentDecl = nullptr;
 1202           ParentDecl = dyn_cast<CXXRecordDecl>(TD->getTemplatedDecl());
 1218   const CXXRecordDecl *CXXRD = findRecordTypeAt(AST, Pos);
tools/clang/tools/extra/clangd/XRefs.h
  137 const CXXRecordDecl *findRecordTypeAt(ParsedAST &AST, Position Pos);
  140 std::vector<const CXXRecordDecl *> typeParents(const CXXRecordDecl *CXXRD);
  140 std::vector<const CXXRecordDecl *> typeParents(const CXXRecordDecl *CXXRD);
tools/clang/tools/extra/clangd/unittests/SelectionTests.cpp
  332   auto *D = dyn_cast<CXXRecordDecl>(T.commonAncestor()->ASTNode.get<Decl>());
tools/clang/tools/extra/clangd/unittests/TypeHierarchyTests.cpp
   75     const CXXRecordDecl *RD = findRecordTypeAt(AST, Pt);
   99     const CXXRecordDecl *RD = findRecordTypeAt(AST, Pt);
  122     const CXXRecordDecl *RD = findRecordTypeAt(AST, Pt);
  150   const CXXRecordDecl *Parent =
  151       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Parent"));
  152   const CXXRecordDecl *Child1 =
  153       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Child1"));
  154   const CXXRecordDecl *Child2 =
  155       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Child2"));
  186   const CXXRecordDecl *Parent1 =
  187       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Parent1"));
  188   const CXXRecordDecl *Parent2 =
  189       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Parent2"));
  190   const CXXRecordDecl *Parent3 =
  191       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Parent3"));
  192   const CXXRecordDecl *Child = dyn_cast<CXXRecordDecl>(&findDecl(AST, "Child"));
  192   const CXXRecordDecl *Child = dyn_cast<CXXRecordDecl>(&findDecl(AST, "Child"));
  213   const CXXRecordDecl *Parent =
  214       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Parent"));
  215   const CXXRecordDecl *Child =
  263   const CXXRecordDecl *Parent =
  265   const CXXRecordDecl *ParentSpec =
  266       dyn_cast<CXXRecordDecl>(&findDeclWithTemplateArgs(AST, "Parent<int>"));
  267   const CXXRecordDecl *Child1 =
  268       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Child1"));
  269   const CXXRecordDecl *Child2 =
  270       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Child2"));
  292   const CXXRecordDecl *Parent =
  293       dyn_cast<CXXRecordDecl>(&findDecl(AST, "Parent"));
  294   const CXXRecordDecl *Child =
  296   const CXXRecordDecl *ChildSpec =
  297       dyn_cast<CXXRecordDecl>(&findDeclWithTemplateArgs(AST, "Child<int>"));
  323   const CXXRecordDecl *Parent =
  325   const CXXRecordDecl *Child1 =
  327   const CXXRecordDecl *Child2 =
  329   const CXXRecordDecl *Child3 =
tools/clang/tools/libclang/CIndex.cpp
  943   auto* CD = D->getTemplatedDecl();
 1798 bool CursorVisitor::VisitCXXRecordDecl(CXXRecordDecl *D) {
 4762   if (!(isa<CXXRecordDecl>(D) || isa<CXXMethodDecl>(D)))
 6363       return MakeCXCursor(cast<CXXRecordDecl>(Def)->getDescribedClassTemplate(),
 8009   if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
 8009   if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
 8467   const auto *RD = dyn_cast_or_null<CXXRecordDecl>(D);
 8467   const auto *RD = dyn_cast_or_null<CXXRecordDecl>(D);
tools/clang/tools/libclang/CIndexCXX.cpp
   91   if (const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(D)) {
   91   if (const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(D)) {
tools/clang/tools/libclang/CXIndexDataConsumer.cpp
  338 CXIndexDataConsumer::CXXBasesListInfo::CXXBasesListInfo(const CXXRecordDecl *D,
  643   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(D))
  643   if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(D))
  976 bool CXIndexDataConsumer::handleCXXRecordDecl(const CXXRecordDecl *RD,
 1045   } else if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
 1045   } else if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
tools/clang/tools/libclang/CXIndexDataConsumer.h
  324     CXXBasesListInfo(const CXXRecordDecl *D,
  454   bool handleCXXRecordDecl(const CXXRecordDecl *RD, const NamedDecl *OrigD);
tools/clang/tools/libclang/CXType.cpp
  182   if (const auto *RecordDecl = Type->getAsCXXRecordDecl()) {
tools/clang/tools/libclang/CursorVisitor.h
  201   bool VisitCXXRecordDecl(CXXRecordDecl *D);
tools/clang/unittests/AST/ASTImporterFixtures.h
  174   template <class DeclT> DeclT *Import(DeclT *From, Language Lang) {
  174   template <class DeclT> DeclT *Import(DeclT *From, Language Lang) {
  175     return cast_or_null<DeclT>(Import(cast<Decl>(From), Lang));
tools/clang/unittests/AST/ASTImporterGenericRedeclTest.cpp
   30   using DeclTy = CXXRecordDecl;
  160     auto *FromD = FirstDeclMatcher<DeclTy>().match(FromTU, getPattern());
  167     auto *ToD = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  177     auto *FromD = FirstDeclMatcher<DeclTy>().match(FromTU, getPattern());
  184     auto *ToD = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  193     auto *From0 = FirstDeclMatcher<DeclTy>().match(FromTU, getPattern());
  194     auto *From1 = LastDeclMatcher<DeclTy>().match(FromTU, getPattern());
  203     auto *To0 = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  204     auto *To1 = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  215     auto *FromProto = FirstDeclMatcher<DeclTy>().match(FromTU, getPattern());
  216     auto *FromDef = LastDeclMatcher<DeclTy>().match(FromTU, getPattern());
  225     auto *ToProto = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  226     auto *ToDef = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  237     auto *FromDef = FirstDeclMatcher<DeclTy>().match(FromTU, getPattern());
  238     auto *FromProto = LastDeclMatcher<DeclTy>().match(FromTU, getPattern());
  247     auto *ToDef = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  248     auto *ToProto = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  260     auto *From0 = FirstDeclMatcher<DeclTy>().match(FromTU0, getPattern());
  261     auto *From1 = FirstDeclMatcher<DeclTy>().match(FromTU1, getPattern());
  270     auto *To0 = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  271     auto *To1 = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  283     auto *From0 = FirstDeclMatcher<DeclTy>().match(FromTU0, getPattern());
  284     auto *From1 = FirstDeclMatcher<DeclTy>().match(FromTU1, getPattern());
  294     auto *To0 = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  305     auto *FromDef = FirstDeclMatcher<DeclTy>().match(FromTUDef, getPattern());
  306     auto *FromProto =
  317     auto *ToDef = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  318     auto *ToProto = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
  330     auto *FromProto =
  332     auto *FromDef = FirstDeclMatcher<DeclTy>().match(FromTUDef, getPattern());
  342     auto *ToProto = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  343     auto *ToDef = LastDeclMatcher<DeclTy>().match(ToTU, getPattern());
tools/clang/unittests/AST/ASTImporterODRStrategiesTest.cpp
   76   using DeclTy = CXXRecordDecl;
  253     auto *ToD = FirstDeclMatcher<DeclTy>().match(ToTU, getPattern());
  256     auto *FromD = FirstDeclMatcher<DeclTy>().match(FromTU, getPattern());
tools/clang/unittests/AST/ASTImporterTest.cpp
  334   auto *Imported = cast<CXXRecordDecl>(To);
  334   auto *Imported = cast<CXXRecordDecl>(To);
 1206       cast<CXXRecordDecl>(Import(FromFT->getTemplatedDecl(), Lang_CXX));
 1256       cast<CXXRecordDecl>(Import(From->getTemplatedDecl(), Lang_CXX));
 1349       if (auto *RD = dyn_cast<CXXRecordDecl>(Child)) {
 1349       if (auto *RD = dyn_cast<CXXRecordDecl>(Child)) {
 1718   auto *FromD = FirstDeclMatcher<CXXRecordDecl>().match(
 2199   auto *ToB = FirstDeclMatcher<CXXRecordDecl>().match(
 2261   auto *ToB = FirstDeclMatcher<CXXRecordDecl>().match(
 2263   auto *ToD = FirstDeclMatcher<CXXRecordDecl>().match(
 2362   CXXRecordDecl *LambdaRec =
 2685     auto *Class = FirstDeclMatcher<CXXRecordDecl>().match(FromTU, ClassPattern);
 2696   auto *Class = FirstDeclMatcher<CXXRecordDecl>().match(ToTU, ClassPattern);
 2731   auto *FromClass =
 2742   auto *ToClass = FirstDeclMatcher<CXXRecordDecl>().match(ToTU, ClassPattern);
 2776   auto *FromClass =
 2787   auto *ToClass = FirstDeclMatcher<CXXRecordDecl>().match(ToTU, ClassPattern);
 2854   auto *FromClass = FirstDeclMatcher<CXXRecordDecl>().match(
 2867   auto *ToClass = FirstDeclMatcher<CXXRecordDecl>().match(
 3020     auto *ToClass = FirstDeclMatcher<CXXRecordDecl>().match(
 3037       auto *FromClass = FirstDeclMatcher<CXXRecordDecl>().match(
 3105     auto *FromR = FirstDeclMatcher<CXXRecordDecl>().match(
 3115     auto *FromR = FirstDeclMatcher<CXXRecordDecl>().match(
 3129     auto *FromR = FirstDeclMatcher<CXXRecordDecl>().match(
 3137     auto *FromR = FirstDeclMatcher<CXXRecordDecl>().match(
 3272   CXXRecordDecl *FromLambda =
 3276   auto *ToLambda = cast_or_null<CXXRecordDecl>(Import(FromLambda, Lang_CXX11));
 3276   auto *ToLambda = cast_or_null<CXXRecordDecl>(Import(FromLambda, Lang_CXX11));
 3737   auto *FromClass = FirstDeclMatcher<CXXRecordDecl>().match(
 3739   auto *FromFriendClass = LastDeclMatcher<CXXRecordDecl>().match(
 3750   auto *ToClass = cast<CXXRecordDecl>(Import(FromClass, Lang_CXX));
 3750   auto *ToClass = cast<CXXRecordDecl>(Import(FromClass, Lang_CXX));
 3751   auto *ToFriendClass = cast<CXXRecordDecl>(Import(FromFriendClass, Lang_CXX));
 3751   auto *ToFriendClass = cast<CXXRecordDecl>(Import(FromFriendClass, Lang_CXX));
 3771   auto *FromD = FirstDeclMatcher<CXXRecordDecl>().match(
 3773   auto *ToD = Import(FromD, Lang_CXX);
 3869   auto *Imported = cast<CXXRecordDecl>(To);
 3869   auto *Imported = cast<CXXRecordDecl>(To);
 3956   auto *Definition = FirstDeclMatcher<CXXRecordDecl>().match(
 3958   auto *ImportedDef = Import(Definition, Lang_CXX);
 4496   auto *Y = FirstDeclMatcher<CXXRecordDecl>().match(
 4522   auto *Y = FirstDeclMatcher<CXXRecordDecl>().match(ToTU, cxxRecordDecl(hasName("Y")));
 4713   auto *X = FirstDeclMatcher<CXXRecordDecl>().match(
 4806   auto *FromFwd = FirstDeclMatcher<CXXRecordDecl>().match(
 4808   auto *FromDef = LastDeclMatcher<CXXRecordDecl>().match(
 4816   auto *ToDef = cast_or_null<CXXRecordDecl>(Import(FromDef, Lang_CXX));
 4816   auto *ToDef = cast_or_null<CXXRecordDecl>(Import(FromDef, Lang_CXX));
 4817   auto *ToFwd = cast_or_null<CXXRecordDecl>(Import(FromFwd, Lang_CXX));
 4817   auto *ToFwd = cast_or_null<CXXRecordDecl>(Import(FromFwd, Lang_CXX));
 4982   auto *FromX = FirstDeclMatcher<CXXRecordDecl>().match(
 4984   CXXRecordDecl *ImportedX = Import(FromX, Lang_CXX);
 5035   auto *FromFRD = FirstDeclMatcher<CXXRecordDecl>().match(
 5037   auto *FromA = FirstDeclMatcher<CXXRecordDecl>().match(
 5039   auto *FromB = FirstDeclMatcher<CXXRecordDecl>().match(
 5154     auto *FromX = FirstDeclMatcher<CXXRecordDecl>().match(
 5156     CXXRecordDecl *ImportedX = Import(FromX, Lang_CXX);
 5166   auto *ToXDef = FirstDeclMatcher<CXXRecordDecl>().match(
 5174   auto *ToXFwd = FirstDeclMatcher<CXXRecordDecl>().match(
 5190     auto *FromX = FirstDeclMatcher<CXXRecordDecl>().match(
 5192     CXXRecordDecl *ImportedX = Import(FromX, Lang_CXX);
 5264   CXXRecordDecl *FromL =
 5283   CXXRecordDecl *FromL =
 5376   auto *ToX = FirstDeclMatcher<CXXRecordDecl>().match(
 5391   auto *FromX = FirstDeclMatcher<CXXRecordDecl>().match(
 5393   auto *ImportedX = Import(FromX, Lang_CXX);
 5444     auto *FromD = FirstDeclMatcher<CXXRecordDecl>().match(
 5466   auto *FromX = FirstDeclMatcher<CXXRecordDecl>().match(
 5468   auto *ImportedX = Import(FromX, Lang_CXX11);
 5501   CXXRecordDecl *FromL0 =
 5503   CXXRecordDecl *FromL1 =
 5507   CXXRecordDecl *ToL0 = Import(FromL0, Lang_CXX11);
 5508   CXXRecordDecl *ToL1 = Import(FromL1, Lang_CXX11);
 5521   CXXRecordDecl *FromL0 =
 5523   CXXRecordDecl *FromL1 =
 5527   CXXRecordDecl *ToL0 = Import(FromL0, Lang_CXX11);
 5528   CXXRecordDecl *ToL1 = Import(FromL1, Lang_CXX11);
 5542   CXXRecordDecl *FromL0 =
 5544   CXXRecordDecl *FromL1 =
 5550   CXXRecordDecl *ToL0 = Import(FromL0, Lang_CXX11);
 5551   CXXRecordDecl *ToL1 = Import(FromL1, Lang_CXX11);
tools/clang/unittests/AST/ASTImporterVisibilityTest.cpp
   35   using DeclTy = CXXRecordDecl;
  104     auto *FromD0 = FirstDeclMatcher<DeclTy>().match(FromTu, Pattern);
  105     auto *FromD1 = LastDeclMatcher<DeclTy>().match(FromTu, Pattern);
  107     auto *ToD0 = Import(FromD0, Lang_CXX14);
  108     auto *ToD1 = Import(FromD1, Lang_CXX14);
  195     auto *ToD0 = FirstDeclMatcher<DeclTy>().match(ToTu, getPattern());
  196     auto *FromD1 = FirstDeclMatcher<DeclTy>().match(FromTu, getPattern());
  198     auto *ToD1 = Import(FromD1, Lang_CXX14);
  215     auto *FromD0 = FirstDeclMatcher<DeclTy>().match(FromTu0, getPattern());
  216     auto *FromD1 = FirstDeclMatcher<DeclTy>().match(FromTu1, getPattern());
  217     auto *ToD0 = Import(FromD0, Lang_CXX14);
  218     auto *ToD1 = Import(FromD1, Lang_CXX14);
tools/clang/unittests/AST/ASTTypeTraitsTest.cpp
   25   return ASTNodeKind::getFromNodeKind<T>();
tools/clang/unittests/AST/DeclMatcher.h
   22   NodeType *Node = nullptr;
   26       Node = const_cast<NodeType *>(Result.Nodes.getNodeAs<NodeType>(""));
   32   NodeType *match(const Decl *D, const MatcherType &AMatcher) {
   47   using UnaryPredicate = std::function<bool(const NodeType *)>;
   51     if (auto N = Result.Nodes.getNodeAs<NodeType>("")) {
tools/clang/unittests/AST/DeclTest.cpp
   86   CXXRecordDecl *DeclS = cast<CXXRecordDecl>(Decls[0]);
   86   CXXRecordDecl *DeclS = cast<CXXRecordDecl>(Decls[0]);
tools/clang/unittests/AST/StructuralEquivalenceTest.cpp
   25   std::tuple<NodeType *, NodeType *> makeDecls(
   25   std::tuple<NodeType *, NodeType *> makeDecls(
   37     NodeType *D0 = FirstDeclMatcher<NodeType>().match(
   39     NodeType *D1 = FirstDeclMatcher<NodeType>().match(
   63   std::tuple<NodeType *, NodeType *> makeDecls(
   63   std::tuple<NodeType *, NodeType *> makeDecls(
   66     return makeDecls<NodeType, MatcherType>(
  210   CXXRecordDecl *RD = FirstDeclMatcher<CXXRecordDecl>().match(
  567   auto t = makeDecls<CXXRecordDecl>(
  766   auto t = makeDecls<CXXRecordDecl>(
  811   CXXRecordDecl *L0 = get<0>(t)->getLambdaClass();
  812   CXXRecordDecl *L1 = get<1>(t)->getLambdaClass();
  823   CXXRecordDecl *L0 = get<0>(t)->getLambdaClass();
  824   CXXRecordDecl *L1 = get<1>(t)->getLambdaClass();
  835   CXXRecordDecl *L0 = get<0>(t)->getLambdaClass();
  836   CXXRecordDecl *L1 = get<1>(t)->getLambdaClass();
  847   CXXRecordDecl *L0 = get<0>(t)->getLambdaClass();
  848   CXXRecordDecl *L1 = get<1>(t)->getLambdaClass();
 1280   std::pair<NodeType *, NodeType *>
 1280   std::pair<NodeType *, NodeType *>
 1283     NodeType *D0 = FirstDeclMatcher<NodeType>().match(get<0>(TU), M);
 1284     NodeType *D1 = FirstDeclMatcher<NodeType>().match(get<1>(TU), M);
 1289   bool isInNonEqCache(std::pair<NodeType *, NodeType *> D) {
 1289   bool isInNonEqCache(std::pair<NodeType *, NodeType *> D) {
 1349   auto C = findDeclPair<CXXRecordDecl>(
 1388   auto C = findDeclPair<CXXRecordDecl>(
tools/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
 1542     const T *Node = Nodes->getNodeAs<T>("");
 1542     const T *Node = Nodes->getNodeAs<T>("");
 1558     const T *TypedNode = cast<T>(Node);
 1558     const T *TypedNode = cast<T>(Node);
 1559     return selectFirst<T>(
tools/clang/unittests/ASTMatchers/ASTMatchersTest.h
  421     if (Nodes->getNodeAs<T>(Id)) {
tools/clang/unittests/CodeGen/CodeGenExternalTest.cpp
   75   void AssignInheritanceModel(CXXRecordDecl *RD) override;
   76   void HandleVTable(CXXRecordDecl *RD) override;
  134 void MyASTConsumer::AssignInheritanceModel(CXXRecordDecl *RD) {
  142 void MyASTConsumer::HandleVTable(CXXRecordDecl *RD) {
tools/clang/unittests/Tooling/ASTSelectionTest.cpp
  118           typename std::enable_if<std::is_base_of<Decl, T>::value, T>::type
  118           typename std::enable_if<std::is_base_of<Decl, T>::value, T>::type
  120   checkNodeImpl(isa<T>(DeclNode.Node.get<Decl>()), DeclNode, SelectionKind,
  512         const auto &Record = checkNode<CXXRecordDecl>(
tools/clang/unittests/Tooling/LookupTest.cpp
  186     const auto *FD = cast<CXXRecordDecl>(TLoc.getDecl());
  186     const auto *FD = cast<CXXRecordDecl>(TLoc.getDecl());
tools/clang/unittests/Tooling/RecursiveASTVisitorTestPostOrderVisitor.cpp
   63   bool VisitCXXRecordDecl(CXXRecordDecl *D) {
tools/clang/unittests/Tooling/RecursiveASTVisitorTests/Class.cpp
   20   bool VisitCXXRecordDecl(CXXRecordDecl* record) {
tools/clang/unittests/Tooling/RecursiveASTVisitorTests/ConstructExpr.cpp
   34       if (const CXXRecordDecl* Class = Ctor->getParent()) {
tools/clang/unittests/Tooling/RecursiveASTVisitorTests/ImplicitCtor.cpp
   23       if (const CXXRecordDecl* Class = Ctor->getParent()) {
tools/clang/unittests/Tooling/RefactoringTest.cpp
  702   bool VisitCXXRecordDecl(CXXRecordDecl *Record) {
tools/clang/unittests/Tooling/ToolingTest.cpp
   78     if (CXXRecordDecl* Record = dyn_cast<clang::CXXRecordDecl>(
   78     if (CXXRecordDecl* Record = dyn_cast<clang::CXXRecordDecl>(
   93     if (CXXRecordDecl* Record = dyn_cast<clang::CXXRecordDecl>(*i)) {
   93     if (CXXRecordDecl* Record = dyn_cast<clang::CXXRecordDecl>(*i)) {
tools/lldb/include/lldb/Symbol/ClangASTContext.h
  223           if (const RecordDeclType *record_decl =
  224                   llvm::dyn_cast<RecordDeclType>(named_decl))
  258   static uint32_t GetNumBaseClasses(const clang::CXXRecordDecl *cxx_record_decl,
  445       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  447       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  931   clang::CXXRecordDecl *GetAsCXXRecordDecl(lldb::opaque_compiler_type_t type);
tools/lldb/include/lldb/Symbol/ClangASTImporter.h
   93     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits> base_offsets;
   94     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  127       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  129       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
   36       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
   38       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
   99       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  101       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
  492 void ASTResultSynthesizer::HandleVTable(CXXRecordDecl *RD) {
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.h
   79   void HandleVTable(clang::CXXRecordDecl *RD) override;
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTStructExtractor.cpp
  161 void ASTStructExtractor::HandleVTable(CXXRecordDecl *RD) {
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTStructExtractor.h
   84   void HandleVTable(clang::CXXRecordDecl *RD) override;
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTUtils.h
  123       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  125       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  190   void AssignInheritanceModel(clang::CXXRecordDecl *RD) override {
  198   void HandleVTable(clang::CXXRecordDecl *RD) override {
  416       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  418       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
 1019   TaggedASTDecl(D *_decl) : decl(_decl) {}
 1022   D *operator->() const { return decl; }
 1023   D *decl;
 1028   return TD<D2>(dyn_cast<D2>(source.decl));
 1034 template <class D> class DeclFromParser : public TaggedASTDecl<D> {
 1037   DeclFromParser(D *_decl) : TaggedASTDecl<D>(_decl) {}
 1039   DeclFromUser<D> GetOrigin(ClangASTSource &source);
 1042 template <class D> class DeclFromUser : public TaggedASTDecl<D> {
 1045   DeclFromUser(D *_decl) : TaggedASTDecl<D>(_decl) {}
 1047   DeclFromParser<D> Import(ClangASTSource &source);
 1064   return DeclFromParser<D>(dyn_cast<D>(parser_generic_decl.decl));
 1655 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetMap;
 1658 static bool ImportOffsetMap(llvm::DenseMap<const D *, O> &destination_map,
 1659                             llvm::DenseMap<const D *, O> &source_map,
 1666   typedef llvm::DenseMap<const D *, O> MapType;
 1677     DeclFromUser<D> user_decl(const_cast<D *>(item.first));
 1678     DeclFromParser<D> parser_decl(user_decl.Import(source));
 1690                         DeclFromUser<const CXXRecordDecl> &record,
 1692   for (CXXRecordDecl::base_class_const_iterator
 1712     DeclFromUser<CXXRecordDecl> origin_base_cxx_record(
 1713         DynCast<CXXRecordDecl>(origin_base_record));
 1793   DeclFromUser<const CXXRecordDecl> origin_cxx_record(
 1794       DynCast<const CXXRecordDecl>(origin_record));
 1830     DeclFromParser<const CXXRecordDecl> parser_cxx_record =
 1831         DynCast<const CXXRecordDecl>(parser_record);
 1834       for (CXXRecordDecl::base_class_const_iterator
 1843         DeclFromParser<CXXRecordDecl> base_cxx_record =
 1844             DynCast<CXXRecordDecl>(base_record);
tools/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
  137       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  139       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  240         llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  242         llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
  890         clang::CXXRecordDecl *class_decl = method_decl->getParent();
tools/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp
   74         target_ast_context->GetTypeForIdentifier<clang::CXXRecordDecl>(
tools/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
  135       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  137       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
  960                       clang::CXXRecordDecl *record_decl =
 1670     clang::CXXRecordDecl *record_decl =
 1678     clang::CXXRecordDecl *record_decl =
 2095       clang::CXXRecordDecl *record_decl =
 2132               llvm::DenseMap<const clang::CXXRecordDecl *,
 2146               llvm::DenseMap<const clang::CXXRecordDecl *,
tools/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp
  233   if (auto *record_decl = llvm::dyn_cast<clang::CXXRecordDecl>(&m_tag_decl)) {
  233   if (auto *record_decl = llvm::dyn_cast<clang::CXXRecordDecl>(&m_tag_decl)) {
tools/lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp
  409     CompilerType clang_type = m_ast.GetTypeForIdentifier<clang::CXXRecordDecl>(
  782   clang::CXXRecordDecl *record_decl =
 1205   clang::CXXRecordDecl *record_decl =
tools/lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.h
   68   typedef llvm::DenseMap<clang::CXXRecordDecl *, lldb::user_id_t>
tools/lldb/source/Symbol/ClangASTContext.cpp
  173         if (auto *base_record = llvm::dyn_cast<clang::CXXRecordDecl>(
  173         if (auto *base_record = llvm::dyn_cast<clang::CXXRecordDecl>(
  272                                          const CXXRecordDecl *cxx_record_decl,
  273                                          const CXXRecordDecl *base_class_decl) {
  305                               const CXXRecordDecl *cxx_record_decl,
  306                               const CXXRecordDecl *base_class_decl,
 1374   CXXRecordDecl *decl = CXXRecordDecl::Create(
 1374   CXXRecordDecl *decl = CXXRecordDecl::Create(
 1403     if (isa<CXXRecordDecl>(decl_ctx) && exports_symbols)
 1544   CXXRecordDecl *template_cxx_decl = CXXRecordDecl::Create(
 1544   CXXRecordDecl *template_cxx_decl = CXXRecordDecl::Create(
 1735   const CXXRecordDecl *cxx_record_decl = dyn_cast<CXXRecordDecl>(record_decl);
 1735   const CXXRecordDecl *cxx_record_decl = dyn_cast<CXXRecordDecl>(record_decl);
 1737     CXXRecordDecl::base_class_const_iterator base_class, base_class_end;
 1741       const CXXRecordDecl *base_class_decl = cast<CXXRecordDecl>(
 1741       const CXXRecordDecl *base_class_decl = cast<CXXRecordDecl>(
 1780 ClangASTContext::GetNumBaseClasses(const CXXRecordDecl *cxx_record_decl,
 1785       CXXRecordDecl::base_class_const_iterator base_class, base_class_end;
 2195       (type = GetTypeForIdentifier<clang::CXXRecordDecl>(type_name))
 2219   if ((type = GetTypeForIdentifier<clang::CXXRecordDecl>(type_name)).IsValid())
 2610     clang::CXXRecordDecl *cxx_record_decl = qual_type->getAsCXXRecordDecl();
 3076       const clang::CXXRecordDecl *cxx_record_decl =
 3649           const clang::CXXRecordDecl *cxx_record_decl =
 3650               llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 3769           clang::CXXRecordDecl *cxx_record_decl =
 3858       clang::CXXRecordDecl *cxx_record_decl = qual_type->getAsCXXRecordDecl();
 4543         const clang::CXXRecordDecl *cxx_record_decl =
 4544             llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 4632         const clang::CXXRecordDecl *cxx_record_decl =
 4633             llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 5543       const clang::CXXRecordDecl *cxx_record_decl =
 5544           llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 5550           clang::CXXRecordDecl::base_class_const_iterator base_class,
 5555             const clang::CXXRecordDecl *base_class_decl =
 5556                 llvm::cast<clang::CXXRecordDecl>(
 6098       const clang::CXXRecordDecl *cxx_record_decl =
 6173       const clang::CXXRecordDecl *cxx_record_decl =
 6218       const clang::CXXRecordDecl *cxx_record_decl =
 6222         clang::CXXRecordDecl::base_class_const_iterator base_class,
 6231               const clang::CXXRecordDecl *base_class_decl =
 6232                   llvm::cast<clang::CXXRecordDecl>(
 6341       const clang::CXXRecordDecl *cxx_record_decl =
 6345         clang::CXXRecordDecl::base_class_const_iterator base_class,
 6354               const clang::CXXRecordDecl *base_class_decl =
 6355                   llvm::cast<clang::CXXRecordDecl>(
 6618       const clang::CXXRecordDecl *cxx_record_decl =
 6619           llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 6622         clang::CXXRecordDecl::base_class_const_iterator base_class,
 6627           const clang::CXXRecordDecl *base_class_decl = nullptr;
 6631             base_class_decl = llvm::cast<clang::CXXRecordDecl>(
 6639               base_class_decl = llvm::cast<clang::CXXRecordDecl>(
 7066   const clang::CXXRecordDecl *cxx_record_decl =
 7067       llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 7075     clang::CXXRecordDecl::base_class_const_iterator base_class, base_class_end;
 7103       llvm::dyn_cast<clang::CXXRecordDecl>(record_decl),
 7165         const clang::CXXRecordDecl *cxx_record_decl =
 7166             llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 7207                     return clang::CXXRecordDecl::FindOrdinaryMember(
 7437         const clang::CXXRecordDecl *cxx_record_decl =
 7438             llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 7441           clang::CXXRecordDecl::base_class_const_iterator base_class,
 7447             clang::CXXRecordDecl *base_class_decl =
 7448                 llvm::cast<clang::CXXRecordDecl>(
 7652       const clang::CXXRecordDecl *cxx_record_decl =
 7708     const clang::CXXRecordDecl *cxx_record_decl =
 7850 clang::CXXRecordDecl *
 8132   clang::CXXRecordDecl *cxx_record_decl =
 8307   if (auto *record = GetAsCXXRecordDecl(type))
 8333   clang::CXXRecordDecl *cxx_record_decl = GetAsCXXRecordDecl(type);
 8700     clang::CXXRecordDecl *cxx_record_decl = qual_type->getAsCXXRecordDecl();
 8803         clang::CXXRecordDecl *cxx_record_decl =
 8804             llvm::dyn_cast_or_null<clang::CXXRecordDecl>(tag_decl);
 9028       const clang::CXXRecordDecl *cxx_record_decl =
 9029           llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 9032         clang::CXXRecordDecl::base_class_const_iterator base_class,
 9037           const clang::CXXRecordDecl *base_class_decl =
 9038               llvm::cast<clang::CXXRecordDecl>(
 9709       const clang::CXXRecordDecl *cxx_record_decl =
 9710           llvm::dyn_cast<clang::CXXRecordDecl>(record_decl);
 9749       const clang::CXXRecordDecl *cxx_record_decl =
 9865     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
 9867     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Symbol/ClangASTImporter.cpp
  417     const clang::CXXRecordDecl *cxx_record_decl =
  493     const clang::CXXRecordDecl *cxx_record_decl =
  574     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  576     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/tools/lldb-instr/Instrument.cpp
  207     CXXRecordDecl *Record = Decl->getParent();
tools/lldb/unittests/Symbol/TestClangASTContext.cpp
  363   CXXRecordDecl *empty_derived_non_empty_base_cxx_decl =
  386   CXXRecordDecl *empty_derived_non_empty_vbase_cxx_decl =
usr/include/c++/7.4.0/type_traits
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  381     : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
 1554     { typedef _Tp     type; };
 1558     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1580     { typedef _Tp const     type; };
 1629     { typedef _Tp   type; };
 1983     { typedef _Up     type; };
 1999     { typedef typename remove_reference<_Tp>::type*     type; };
 2003     : public __add_pointer_helper<_Tp>
 2157     { typedef _Tp type; };
utils/unittest/googletest/include/gtest/gtest-printers.h
  407                     T* p, ::std::ostream* os) {
  416     if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {