This revision was automatically updated to reflect the committed changes. Closed by commit rL268895: Fix spurious warnings about unused private field (authored by ogoffart).
Changed prior to commit: http://reviews.llvm.org/D20054?vs=56514&id=56530#toc Repository: rL LLVM http://reviews.llvm.org/D20054 Files: cfe/trunk/lib/Sema/SemaExpr.cpp cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp Index: cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp =================================================================== --- cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp +++ cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp @@ -128,6 +128,7 @@ int *use = &by_reference_; int test[2]; test[as_array_index_] = 42; + int EverythingUsed::*ptr = &EverythingUsed::by_pointer_to_member_; } template<class T> @@ -142,6 +143,7 @@ int by_template_function_; int as_array_index_; int by_initializer_; + int by_pointer_to_member_; }; class HasFeatureTest { Index: cfe/trunk/lib/Sema/SemaExpr.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaExpr.cpp +++ cfe/trunk/lib/Sema/SemaExpr.cpp @@ -1736,10 +1736,12 @@ !Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, E->getLocStart())) recordUseOfEvaluatedWeak(E); - // Just in case we're building an illegal pointer-to-member. - FieldDecl *FD = dyn_cast<FieldDecl>(D); - if (FD && FD->isBitField()) - E->setObjectKind(OK_BitField); + if (FieldDecl *FD = dyn_cast<FieldDecl>(D)) { + UnusedPrivateFields.remove(FD); + // Just in case we're building an illegal pointer-to-member. + if (FD->isBitField()) + E->setObjectKind(OK_BitField); + } return E; }
Index: cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp =================================================================== --- cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp +++ cfe/trunk/test/SemaCXX/warn-unused-private-field.cpp @@ -128,6 +128,7 @@ int *use = &by_reference_; int test[2]; test[as_array_index_] = 42; + int EverythingUsed::*ptr = &EverythingUsed::by_pointer_to_member_; } template<class T> @@ -142,6 +143,7 @@ int by_template_function_; int as_array_index_; int by_initializer_; + int by_pointer_to_member_; }; class HasFeatureTest { Index: cfe/trunk/lib/Sema/SemaExpr.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaExpr.cpp +++ cfe/trunk/lib/Sema/SemaExpr.cpp @@ -1736,10 +1736,12 @@ !Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, E->getLocStart())) recordUseOfEvaluatedWeak(E); - // Just in case we're building an illegal pointer-to-member. - FieldDecl *FD = dyn_cast<FieldDecl>(D); - if (FD && FD->isBitField()) - E->setObjectKind(OK_BitField); + if (FieldDecl *FD = dyn_cast<FieldDecl>(D)) { + UnusedPrivateFields.remove(FD); + // Just in case we're building an illegal pointer-to-member. + if (FD->isBitField()) + E->setObjectKind(OK_BitField); + } return E; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits