Lines Matching refs:CSM
4050 CXXSpecialMember CSM = getSpecialMember(*M);
4051 if (CSM != CXXInvalid) {
4052 M->setTrivial(SpecialMemberIsTrivial(*M, CSM));
4113 Sema::CXXSpecialMember CSM,
4116 S.LookupSpecialMember(ClassDecl, CSM, ConstArg,
4128 Sema::CXXSpecialMember CSM,
4135 switch (CSM) {
4180 if (!specialMemberIsConstexpr(S, BaseClassDecl, CSM, ConstArg))
4196 if (!specialMemberIsConstexpr(S, FieldRecDecl, CSM, ConstArg))
4262 CXXSpecialMember CSM = getSpecialMember(MD);
4264 assert(MD->isExplicitlyDefaulted() && CSM != CXXInvalid &&
4281 if (CSM == CXXDefaultConstructor || CSM == CXXDestructor)
4288 << CSM << MD->getSourceRange();
4292 << CSM << MD->getSourceRange();
4299 if (CSM == CXXCopyConstructor)
4301 else if (CSM == CXXCopyAssignment)
4305 if (CSM == CXXCopyAssignment || CSM == CXXMoveAssignment) {
4312 << (CSM == CXXMoveAssignment) << ExpectedReturnType;
4319 << (CSM == CXXMoveAssignment);
4334 diag::err_defaulted_special_member_volatile_param) << CSM;
4339 if (CSM == CXXCopyConstructor || CSM == CXXCopyAssignment) {
4342 << (CSM == CXXCopyAssignment);
4347 << (CSM == CXXMoveAssignment);
4354 assert(CSM == CXXCopyAssignment && "unexpected non-ref argument");
4365 bool Constexpr = defaultedSpecialMemberIsConstexpr(*this, RD, CSM,
4369 Diag(MD->getLocStart(), diag::err_incorrect_defaulted_constexpr) << CSM;
4402 if (ShouldDeleteSpecialMember(MD, CSM)) {
4409 Diag(MD->getLocation(), diag::err_out_of_line_default_deletes) << CSM;
4452 Sema::CXXSpecialMember CSM;
4462 Sema::CXXSpecialMember CSM, bool Diagnose)
4463 : S(S), MD(MD), CSM(CSM), Diagnose(Diagnose),
4467 switch (CSM) {
4502 if (CSM == Sema::CXXDefaultConstructor || CSM == Sema::CXXDestructor)
4504 return S.LookupSpecialMember(Class, CSM,
4581 << CSM << MD->getParent() << /*IsField*/true
4587 << CSM << MD->getParent() << /*IsField*/false
4619 if (!(CSM == Sema::CXXDefaultConstructor &&
4651 if (CSM == Sema::CXXDefaultConstructor) {
4675 } else if (CSM == Sema::CXXCopyConstructor) {
4725 if (CSM == Sema::CXXDefaultConstructor && AllVariantFieldsAreConst &&
4753 if (CSM == Sema::CXXDefaultConstructor && inUnion() && AllFieldsAreConst &&
4767 bool Sema::ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM,
4781 (CSM == CXXDefaultConstructor || CSM == CXXCopyAssignment)) {
4790 if (CSM != CXXDefaultConstructor && CSM != CXXDestructor &&
4799 (CSM == CXXCopyConstructor || CSM == CXXCopyAssignment)) {
4805 (!getLangOpts().MicrosoftMode || CSM == CXXCopyConstructor)) {
4818 (!getLangOpts().MicrosoftMode || CSM == CXXCopyAssignment)) {
4835 << (CSM == CXXCopyAssignment) << RD
4847 if (CSM == CXXDestructor && MD->isVirtual()) {
4859 SpecialMemberDeletionInfo SMI(*this, MD, CSM, Diagnose);
4893 Sema::CXXSpecialMember CSM, unsigned Quals,
4898 switch (CSM) {
4985 S.LookupSpecialMember(RD, CSM,
5045 Sema::CXXSpecialMember CSM,
5053 if (findTrivialSpecialMember(S, SubRD, CSM, SubType.getCVRQualifiers(),
5058 if (!Selected && CSM == Sema::CXXDefaultConstructor) {
5065 << Kind << SubType.getUnqualifiedType() << CSM << SubType;
5069 << Kind << SubType.getUnqualifiedType() << CSM;
5072 << Kind << SubType.getUnqualifiedType() << CSM;
5078 << Kind << SubType.getUnqualifiedType() << CSM;
5081 S.SpecialMemberIsTrivial(Selected, CSM, Diagnose);
5091 Sema::CXXSpecialMember CSM,
5103 CSM, ConstArg, Diagnose))
5112 if (CSM == Sema::CXXDefaultConstructor && FI->hasInClassInitializer()) {
5132 if (!checkTrivialSubobjectCall(S, FI->getLocation(), FieldType, CSM,
5142 void Sema::DiagnoseNontrivial(const CXXRecordDecl *RD, CXXSpecialMember CSM) {
5144 if (CSM == CXXCopyConstructor || CSM == CXXCopyAssignment)
5147 checkTrivialSubobjectCall(*this, RD->getLocation(), Ty, CSM,
5154 bool Sema::SpecialMemberIsTrivial(CXXMethodDecl *MD, CXXSpecialMember CSM,
5156 assert(!MD->isUserProvided() && CSM != CXXInvalid && "not special enough");
5165 switch (CSM) {
5240 CSM, TSK_BaseClass, Diagnose))
5255 if (!checkTrivialClassMembers(*this, RD, CSM, ConstArg, Diagnose))
5261 if (CSM == CXXDestructor && MD->isVirtual()) {
5270 if (CSM != CXXDestructor && MD->getParent()->isDynamicClass()) {
7517 DeclaringSpecialMember(Sema &S, CXXRecordDecl *RD, Sema::CXXSpecialMember CSM)
7518 : S(S), D(RD, CSM) {