|
reference, declaration → definition
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)) {