predator5047 updated this revision to Diff 352400. predator5047 added a comment.
Updated the test case so it is clearer. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D102186/new/ https://reviews.llvm.org/D102186 Files: clang/lib/Sema/SemaDeclCXX.cpp clang/test/SemaCXX/warn-unused-private-field.cpp Index: clang/test/SemaCXX/warn-unused-private-field.cpp =================================================================== --- clang/test/SemaCXX/warn-unused-private-field.cpp +++ clang/test/SemaCXX/warn-unused-private-field.cpp @@ -1,5 +1,26 @@ // RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -Wno-uninitialized -verify -std=c++11 %s // RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -Wno-uninitialized -verify -std=c++17 %s +// RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -Wno-uninitialized -verify -std=c++20 %s + +#if __cplusplus >= 202002L + +class EqDefaultCompare { + int used; + +public: + EqDefaultCompare(int x) : used(x) {} + bool operator==(const EqDefaultCompare &) const = default; +}; + +class SpaceShipDefaultCompare { + int used; + +public: + SpaceShipDefaultCompare(int x) : used(x) {} + int operator<=>(const SpaceShipDefaultCompare &) const = default; +}; + +#endif class NotFullyDefined { public: Index: clang/lib/Sema/SemaDeclCXX.cpp =================================================================== --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -7292,6 +7292,9 @@ return; } + if (DefKind.isComparison()) + UnusedPrivateFields.clear(); + if (DefKind.isSpecialMember() ? CheckExplicitlyDefaultedSpecialMember(cast<CXXMethodDecl>(FD), DefKind.asSpecialMember())
Index: clang/test/SemaCXX/warn-unused-private-field.cpp =================================================================== --- clang/test/SemaCXX/warn-unused-private-field.cpp +++ clang/test/SemaCXX/warn-unused-private-field.cpp @@ -1,5 +1,26 @@ // RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -Wno-uninitialized -verify -std=c++11 %s // RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -Wno-uninitialized -verify -std=c++17 %s +// RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -Wno-uninitialized -verify -std=c++20 %s + +#if __cplusplus >= 202002L + +class EqDefaultCompare { + int used; + +public: + EqDefaultCompare(int x) : used(x) {} + bool operator==(const EqDefaultCompare &) const = default; +}; + +class SpaceShipDefaultCompare { + int used; + +public: + SpaceShipDefaultCompare(int x) : used(x) {} + int operator<=>(const SpaceShipDefaultCompare &) const = default; +}; + +#endif class NotFullyDefined { public: Index: clang/lib/Sema/SemaDeclCXX.cpp =================================================================== --- clang/lib/Sema/SemaDeclCXX.cpp +++ clang/lib/Sema/SemaDeclCXX.cpp @@ -7292,6 +7292,9 @@ return; } + if (DefKind.isComparison()) + UnusedPrivateFields.clear(); + if (DefKind.isSpecialMember() ? CheckExplicitlyDefaultedSpecialMember(cast<CXXMethodDecl>(FD), DefKind.asSpecialMember())
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits