Lines Matching refs:CSM
4983 CXXSpecialMember CSM = getSpecialMember(M); in CheckCompletedCXXClass() local
4984 if (CSM != CXXInvalid) { in CheckCompletedCXXClass()
4985 M->setTrivial(SpecialMemberIsTrivial(M, CSM)); in CheckCompletedCXXClass()
5038 Sema &S, CXXRecordDecl *Class, Sema::CXXSpecialMember CSM, in lookupCallFromSpecialMember() argument
5041 if (CSM == Sema::CXXCopyAssignment || CSM == Sema::CXXMoveAssignment) in lookupCallFromSpecialMember()
5045 if (CSM == Sema::CXXDefaultConstructor || CSM == Sema::CXXDestructor) in lookupCallFromSpecialMember()
5050 return S.LookupSpecialMember(Class, CSM, in lookupCallFromSpecialMember()
5061 Sema::CXXSpecialMember CSM, in specialMemberIsConstexpr() argument
5064 lookupCallFromSpecialMember(S, ClassDecl, CSM, Quals, ConstRHS); in specialMemberIsConstexpr()
5075 Sema::CXXSpecialMember CSM, in defaultedSpecialMemberIsConstexpr() argument
5083 switch (CSM) { in defaultedSpecialMemberIsConstexpr()
5139 if (!specialMemberIsConstexpr(S, BaseClassDecl, CSM, 0, ConstArg)) in defaultedSpecialMemberIsConstexpr()
5156 if (!specialMemberIsConstexpr(S, FieldRecDecl, CSM, in defaultedSpecialMemberIsConstexpr()
5227 CXXSpecialMember CSM = getSpecialMember(MD); in CheckExplicitlyDefaultedSpecialMember() local
5229 assert(MD->isExplicitlyDefaulted() && CSM != CXXInvalid && in CheckExplicitlyDefaultedSpecialMember()
5246 if (CSM == CXXDefaultConstructor || CSM == CXXDestructor) in CheckExplicitlyDefaultedSpecialMember()
5253 << CSM << MD->getSourceRange(); in CheckExplicitlyDefaultedSpecialMember()
5257 << CSM << MD->getSourceRange(); in CheckExplicitlyDefaultedSpecialMember()
5264 if (CSM == CXXCopyConstructor) in CheckExplicitlyDefaultedSpecialMember()
5266 else if (CSM == CXXCopyAssignment) in CheckExplicitlyDefaultedSpecialMember()
5270 if (CSM == CXXCopyAssignment || CSM == CXXMoveAssignment) { in CheckExplicitlyDefaultedSpecialMember()
5277 << (CSM == CXXMoveAssignment) << ExpectedReturnType; in CheckExplicitlyDefaultedSpecialMember()
5284 << (CSM == CXXMoveAssignment) << getLangOpts().CPlusPlus14; in CheckExplicitlyDefaultedSpecialMember()
5299 diag::err_defaulted_special_member_volatile_param) << CSM; in CheckExplicitlyDefaultedSpecialMember()
5304 if (CSM == CXXCopyConstructor || CSM == CXXCopyAssignment) { in CheckExplicitlyDefaultedSpecialMember()
5307 << (CSM == CXXCopyAssignment); in CheckExplicitlyDefaultedSpecialMember()
5312 << (CSM == CXXMoveAssignment); in CheckExplicitlyDefaultedSpecialMember()
5319 assert(CSM == CXXCopyAssignment && "unexpected non-ref argument"); in CheckExplicitlyDefaultedSpecialMember()
5331 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, RD, CSM, in CheckExplicitlyDefaultedSpecialMember()
5337 Diag(MD->getLocStart(), diag::err_incorrect_defaulted_constexpr) << CSM; in CheckExplicitlyDefaultedSpecialMember()
5376 if (ShouldDeleteSpecialMember(MD, CSM)) { in CheckExplicitlyDefaultedSpecialMember()
5383 Diag(MD->getLocation(), diag::err_out_of_line_default_deletes) << CSM; in CheckExplicitlyDefaultedSpecialMember()
5384 ShouldDeleteSpecialMember(MD, CSM, /*Diagnose*/true); in CheckExplicitlyDefaultedSpecialMember()
5444 Sema::CXXSpecialMember CSM; member
5454 Sema::CXXSpecialMember CSM, bool Diagnose) in SpecialMemberDeletionInfo()
5455 : S(S), MD(MD), CSM(CSM), Diagnose(Diagnose), in SpecialMemberDeletionInfo()
5459 switch (CSM) { in SpecialMemberDeletionInfo()
5493 return lookupCallFromSpecialMember(S, Class, CSM, Quals, in lookupIn()
5566 << CSM << MD->getParent() << /*IsField*/true in shouldDeleteForSubobjectCall()
5572 << CSM << MD->getParent() << /*IsField*/false in shouldDeleteForSubobjectCall()
5605 if (!(CSM == Sema::CXXDefaultConstructor && in shouldDeleteForClassSubobject()
5638 if (CSM == Sema::CXXDefaultConstructor) { in shouldDeleteForField()
5662 } else if (CSM == Sema::CXXCopyConstructor) { in shouldDeleteForField()
5710 if (CSM == Sema::CXXDefaultConstructor && AllVariantFieldsAreConst && in shouldDeleteForField()
5738 if (CSM == Sema::CXXDefaultConstructor && inUnion() && AllFieldsAreConst && in shouldDeleteForAllConstMembers()
5752 bool Sema::ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM, in ShouldDeleteSpecialMember() argument
5766 (CSM == CXXDefaultConstructor || CSM == CXXCopyAssignment)) { in ShouldDeleteSpecialMember()
5775 if (CSM != CXXDefaultConstructor && CSM != CXXDestructor && in ShouldDeleteSpecialMember()
5784 (CSM == CXXCopyConstructor || CSM == CXXCopyAssignment)) { in ShouldDeleteSpecialMember()
5790 (!getLangOpts().MSVCCompat || CSM == CXXCopyConstructor)) { in ShouldDeleteSpecialMember()
5802 (!getLangOpts().MSVCCompat || CSM == CXXCopyAssignment)) { in ShouldDeleteSpecialMember()
5818 << (CSM == CXXCopyAssignment) << RD in ShouldDeleteSpecialMember()
5830 if (CSM == CXXDestructor && MD->isVirtual()) { in ShouldDeleteSpecialMember()
5842 SpecialMemberDeletionInfo SMI(*this, MD, CSM, Diagnose); in ShouldDeleteSpecialMember()
5868 return inferCUDATargetForImplicitSpecialMember(RD, CSM, MD, SMI.ConstArg, in ShouldDeleteSpecialMember()
5884 Sema::CXXSpecialMember CSM, unsigned Quals, in findTrivialSpecialMember() argument
5889 switch (CSM) { in findTrivialSpecialMember()
5975 lookupCallFromSpecialMember(S, RD, CSM, Quals, ConstRHS); in findTrivialSpecialMember()
6030 Sema::CXXSpecialMember CSM, in checkTrivialSubobjectCall() argument
6038 if (findTrivialSpecialMember(S, SubRD, CSM, SubType.getCVRQualifiers(), in checkTrivialSubobjectCall()
6046 if (!Selected && CSM == Sema::CXXDefaultConstructor) { in checkTrivialSubobjectCall()
6053 << Kind << SubType.getUnqualifiedType() << CSM << SubType; in checkTrivialSubobjectCall()
6057 << Kind << SubType.getUnqualifiedType() << CSM; in checkTrivialSubobjectCall()
6060 << Kind << SubType.getUnqualifiedType() << CSM; in checkTrivialSubobjectCall()
6066 << Kind << SubType.getUnqualifiedType() << CSM; in checkTrivialSubobjectCall()
6069 S.SpecialMemberIsTrivial(Selected, CSM, Diagnose); in checkTrivialSubobjectCall()
6079 Sema::CXXSpecialMember CSM, in checkTrivialClassMembers() argument
6090 CSM, ConstArg, Diagnose)) in checkTrivialClassMembers()
6099 if (CSM == Sema::CXXDefaultConstructor && FI->hasInClassInitializer()) { in checkTrivialClassMembers()
6119 CSM, TSK_Field, Diagnose)) in checkTrivialClassMembers()
6128 void Sema::DiagnoseNontrivial(const CXXRecordDecl *RD, CXXSpecialMember CSM) { in DiagnoseNontrivial() argument
6131 bool ConstArg = (CSM == CXXCopyConstructor || CSM == CXXCopyAssignment); in DiagnoseNontrivial()
6132 checkTrivialSubobjectCall(*this, RD->getLocation(), Ty, ConstArg, CSM, in DiagnoseNontrivial()
6139 bool Sema::SpecialMemberIsTrivial(CXXMethodDecl *MD, CXXSpecialMember CSM, in SpecialMemberIsTrivial() argument
6141 assert(!MD->isUserProvided() && CSM != CXXInvalid && "not special enough"); in SpecialMemberIsTrivial()
6150 switch (CSM) { in SpecialMemberIsTrivial()
6217 ConstArg, CSM, TSK_BaseClass, Diagnose)) in SpecialMemberIsTrivial()
6232 if (!checkTrivialClassMembers(*this, RD, CSM, ConstArg, Diagnose)) in SpecialMemberIsTrivial()
6238 if (CSM == CXXDestructor && MD->isVirtual()) { in SpecialMemberIsTrivial()
6247 if (CSM != CXXDestructor && MD->getParent()->isDynamicClass()) { in SpecialMemberIsTrivial()
8856 DeclaringSpecialMember(Sema &S, CXXRecordDecl *RD, Sema::CXXSpecialMember CSM) in DeclaringSpecialMember()
8857 : S(S), D(RD, CSM) { in DeclaringSpecialMember()